Browse Source

feat: 水闸维修养护

master_tdsql
hxh 9 months ago
parent
commit
e89d7f13fa
  1. 6
      shuili-system/src/main/java/com/kms/yxgh/common/ApprovalTypeEnum.java
  2. 2
      shuili-system/src/main/java/com/kms/yxgh/common/dto/ApprovalCommentDto.java
  3. 2
      shuili-system/src/main/java/com/kms/yxgh/common/dto/ApprovalDetailDto.java
  4. 42
      shuili-system/src/main/java/com/kms/yxgh/common/mapper/handler/DocHandler.java
  5. 2
      shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java
  6. 2
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhPlanDetailDto.java
  7. 4
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhRecordDetailDto.java
  8. 6
      shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhPlanMapper.java
  9. 5
      shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhRecordMapper.java
  10. 2
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhPlanService.java
  11. 4
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java
  12. 101
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzYhPlanController.java
  13. 10
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzYhRecordController.java
  14. 98
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzYhPlan.java
  15. 71
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzYhRecord.java
  16. 100
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhPlanDetailDto.java
  17. 54
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhPlanSearchDto.java
  18. 58
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhRecordApprovalDto.java
  19. 39
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhRecordDetailDto.java
  20. 36
      shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhRecordSearchDto.java
  21. 1
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhOperatorMapper.java
  22. 81
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhPlanMapper.java
  23. 69
      shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhRecordMapper.java
  24. 90
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java
  25. 108
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java
  26. 4
      shuili-system/src/main/resources/mapper/yxgh/DfYhPlanMapper.xml
  27. 2
      shuili-system/src/main/resources/mapper/yxgh/DfYhRecordMapper.xml
  28. 78
      shuili-system/src/main/resources/mapper/yxgh/SzYhPlanMapper.xml
  29. 76
      shuili-system/src/main/resources/mapper/yxgh/SzYhRecordMapper.xml

6
shuili-system/src/main/java/com/kms/yxgh/common/ApprovalTypeEnum.java

@ -7,8 +7,10 @@ import lombok.Getter;
@Getter
public enum ApprovalTypeEnum {
YH_PLAN("养护计划", "yh_plan", "dfYhPlanService"),
YH_RECORD("养护记录", "yh_record", "dfYhRecordService");
YH_PLAN("堤防维修养护计划", "yh_plan", "dfYhPlanService"),
YH_RECORD("堤防维修养护记录", "yh_record", "dfYhRecordService"),
SZ_YH_PLAN("水闸维修养护计划", "sz_yh_plan", "szYhPlanService"),
SZ_YH_RECORD("水闸维修养护记录", "sz_yh_record", "szYhRecordService");
private final String name;

2
shuili-system/src/main/java/com/kms/yxgh/common/dto/ApprovalCommentDto.java

@ -21,5 +21,5 @@ public class ApprovalCommentDto {
@ApiModelProperty("审批人")
private OperatorDto operator;
@ApiModelProperty("审批文档")
private List<DocDto> docs;
private DocDto docs;
}

2
shuili-system/src/main/java/com/kms/yxgh/common/dto/ApprovalDetailDto.java

@ -40,7 +40,7 @@ public class ApprovalDetailDto<T> {
private String comment;
@ApiModelProperty("审批材料")
private List<DocDto> doc;
private DocDto doc;
@ApiModelProperty("审批详情")
private T detail;

42
shuili-system/src/main/java/com/kms/yxgh/common/mapper/handler/DocHandler.java

@ -0,0 +1,42 @@
package com.kms.yxgh.common.mapper.handler;
import com.alibaba.fastjson.JSON;
import com.kms.yxgh.common.dto.DocDto;
import com.kms.yxgh.common.dto.OperatorDto;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DocHandler extends BaseTypeHandler<DocDto> {
public DocHandler() {
}
public void setNonNullParameter(PreparedStatement ps, int i, DocDto parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSON.toJSONString(parameter));
}
public DocDto getNullableResult(ResultSet rs, String columnName) throws SQLException {
if (rs.getString(columnName) != null) {
return JSON.parseObject(rs.getString(columnName), DocDto.class);
}
return null;
}
public DocDto getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
if (rs.getString(columnIndex) != null) {
return JSON.parseObject(rs.getString(columnIndex), DocDto.class);
}
return null;
}
public DocDto getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
if (cs.getString(columnIndex) != null) {
return JSON.parseObject(cs.getString(columnIndex), DocDto.class);
}
return null;
}
}

2
shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java

@ -118,7 +118,7 @@ public class ApprovalService {
commentDto.setComment(approvalTask.getComment());
commentDto.setApprovalTime(approvalTask.getApprovalTime());
commentDto.setOperator(JSON.parseObject(approvalTask.getOperator(), OperatorDto.class));
commentDto.setDocs(JSON.parseArray(approvalTask.getDoc(), DocDto.class));
commentDto.setDocs(JSON.parseObject(approvalTask.getDoc(), DocDto.class));
commentDto.setStatus(approvalTask.getStatus());
return commentDto;
}).filter(commentDto -> commentDto.getApprovalTime() != null)

2
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhPlanDetailDto.java

@ -56,7 +56,7 @@ public class DfYhPlanDetailDto {
private List<SupplementDto> supplements;
@ApiModelProperty("文档")
private List<DocDto> doc;
private DocDto doc;
@ApiModelProperty("工程单位")
private String engineeringUnit;

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

@ -61,10 +61,10 @@ public class DfYhRecordDetailDto {
private OperatorDto responsiblePerson;
@ApiModelProperty("文档")
private List<DocDto> doc;
private DocDto doc;
@ApiModelProperty("台账")
private List<DocDto> ledgerDoc;
private DocDto ledgerDoc;
@ApiModelProperty("计划信息")
private DfYhPlanDetailDto plan;

6
shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhPlanMapper.java

@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.DocHandler;
import com.kms.yxgh.common.mapper.handler.ListDocHandler;
import com.kms.yxgh.common.mapper.handler.ListSupplementHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.df.domain.DfYhPlan;
import com.kms.yxgh.df.dto.DfYhPlanDetailDto;
@ -62,8 +64,8 @@ public interface DfYhPlanMapper extends BaseMapper<DfYhPlan> {
"</script>"
})
@Results({
@Result(column = "doc", property = "doc", typeHandler = ListDocHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListDocHandler.class),
@Result(column = "doc", property = "doc", typeHandler = DocHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListSupplementHandler.class),
@Result(column = "responsible_person", property = "responsiblePerson", typeHandler = OperatorHandler.class)
})
IPage<DfYhPlanDetailDto> selectPage(Page<DfYhPlanSearchDto> page, @Param("dto") DfYhPlanSearchDto dto);

5
shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhRecordMapper.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.DocHandler;
import com.kms.yxgh.common.mapper.handler.ListSupplementHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.df.domain.DfYhRecord;
@ -66,8 +67,8 @@ public interface DfYhRecordMapper extends BaseMapper<DfYhRecord> {
@Results({
@Result(column = "responsible_person", property = "responsiblePerson", typeHandler = OperatorHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListSupplementHandler.class),
@Result(column = "doc", property = "doc", typeHandler = ListSupplementHandler.class),
@Result(column = "ledger_doc", property = "ledgerDoc", typeHandler = ListSupplementHandler.class)
@Result(column = "doc", property = "doc", typeHandler = DocHandler.class),
@Result(column = "ledger_doc", property = "ledgerDoc", typeHandler = DocHandler.class)
})
IPage<DfYhRecordDetailDto> searchPage(IPage<DfYhRecordDetailDto> page, @Param("searchDto") DfYhRecordSearchDto searchDto);

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

@ -43,7 +43,7 @@ public class DfYhPlanService extends BaseService<DfYhPlanMapper, DfYhPlan> imple
DfYhPlan dfPlan = this.getById(id);
DfYhPlanDetailDto dto = BeanCopyUtils.copy(dfPlan, DfYhPlanDetailDto.class);
if (dto != null) {
dto.setDoc(JSON.parseArray(dfPlan.getDoc(), DocDto.class));
dto.setDoc(JSON.parseObject(dfPlan.getDoc(), DocDto.class));
dto.setSupplements(JSON.parseArray(dfPlan.getSupplement(), SupplementDto.class));
dto.setResponsiblePerson(JSON.parseObject(dfPlan.getResponsiblePerson(), OperatorDto.class));
}

4
shuili-system/src/main/java/com/kms/yxgh/df/service/DfYhRecordService.java

@ -47,8 +47,8 @@ public class DfYhRecordService extends BaseService<DfYhRecordMapper, DfYhRecord>
if (record != null) {
DfYhRecordDetailDto dto = BeanCopyUtils.copy(record, DfYhRecordDetailDto.class);
if (dto != null) {
dto.setDoc(JSON.parseArray(record.getDoc(), DocDto.class));
dto.setLedgerDoc(JSON.parseArray(record.getLedgerDoc(), DocDto.class));
dto.setDoc(JSON.parseObject(record.getDoc(), DocDto.class));
dto.setLedgerDoc(JSON.parseObject(record.getLedgerDoc(), DocDto.class));
dto.setSupplements(JSON.parseArray(record.getSupplement(), SupplementDto.class));
dto.setPlan(dfYhPlanService.getDetailById(dto.getPlanId()));
}

101
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzYhPlanController.java

@ -2,11 +2,12 @@ package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.common.ApprovalTypeEnum;
import com.kms.yxgh.common.controller.ApprovalAbstractController;
import com.kms.yxgh.sz.dto.SzYhPlanDetailDto;
import com.kms.yxgh.sz.dto.SzYhPlanSearchDto;
import com.kms.yxgh.sz.service.SzYhPlanService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.controller.BaseController;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import io.swagger.annotations.Api;
@ -24,56 +25,62 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/run/sz/yh/plan")
@Api(tags = "水闸维修养护计划")
public class SzYhPlanController extends BaseController {
public class SzYhPlanController extends ApprovalAbstractController<SzYhPlanSearchDto, SzYhPlanDetailDto> {
@Autowired
private SzYhPlanService szYhPlanService;
/**
* 查询水闸维修养护计划列表
*/
@PostMapping("/list")
@ApiOperation("水闸维修养护计划列表")
public IPage<SzYhPlanSearchDto> list(@RequestBody SearchParam<SzYhPlanSearchDto> sp) {
return szYhPlanService.search(sp);
}
@Autowired
private SzYhPlanService szYhPlanService;
/**
* 获取水闸维修养护计划详细信息
*/
@ApiOperation(" 水闸维修养护计划详情")
@GetMapping(value = "/{id}")
public Response<SzYhPlanDetailDto> getInfo(@PathVariable("id") String id) {
return Response.ok(szYhPlanService.getDetailById(id));
}
/**
* 查询水闸维修养护计划列表
*/
@PostMapping("/list")
@ApiOperation("水闸维修养护计划列表")
public IPage<SzYhPlanDetailDto> list(@RequestBody SearchParam<SzYhPlanSearchDto> sp) {
return szYhPlanService.search(sp);
}
/**
* 新增水闸维修养护计划
*/
@Log(title = "水闸维修养护计划新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("水闸维修养护计划新增")
public Response<SzYhPlanDetailDto> add(@RequestBody SzYhPlanDetailDto szYhPlan) {
return Response.ok(szYhPlanService.add(szYhPlan));
}
/**
* 获取水闸维修养护计划详细信息
*/
@ApiOperation(" 水闸维修养护计划详情")
@GetMapping(value = "/{id}")
public Response<SzYhPlanDetailDto> getInfo(@PathVariable("id") String id) {
return Response.ok(szYhPlanService.getDetailById(id));
}
/**
* 修改水闸维修养护计划
*/
@ApiOperation("水闸维修养护计划修改")
@Log(title = "水闸维修养护计划修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<SzYhPlanDetailDto> edit(@RequestBody SzYhPlanDetailDto szYhPlan) {
return Response.ok(szYhPlanService.update(szYhPlan));
}
/**
* 新增水闸维修养护计划
*/
@Log(title = "水闸维修养护计划新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("水闸维修养护计划新增")
public Response<SzYhPlanDetailDto> add(@RequestBody SzYhPlanDetailDto szYhPlan) {
return Response.ok(szYhPlanService.add(szYhPlan));
}
/**
* 删除水闸维修养护计划
*/
@ApiOperation("水闸维修养护计划删除")
@Log(title = "水闸维修养护计划删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(szYhPlanService.deleteById(id));
}
/**
* 修改水闸维修养护计划
*/
@ApiOperation("水闸维修养护计划修改")
@Log(title = "水闸维修养护计划修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<SzYhPlanDetailDto> edit(@RequestBody SzYhPlanDetailDto szYhPlan) {
return Response.ok(szYhPlanService.update(szYhPlan));
}
/**
* 删除水闸维修养护计划
*/
@ApiOperation("水闸维修养护计划删除")
@Log(title = "水闸维修养护计划删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(szYhPlanService.deleteById(id));
}
@Override
public ApprovalTypeEnum getApprovalType() {
return ApprovalTypeEnum.SZ_YH_PLAN;
}
}

10
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzYhRecordController.java

@ -2,12 +2,13 @@ package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.common.ApprovalTypeEnum;
import com.kms.yxgh.common.controller.ApprovalAbstractController;
import com.kms.yxgh.sz.dto.SzYhRecordDetailDto;
import com.kms.yxgh.sz.dto.SzYhRecordSearchDto;
import com.kms.yxgh.sz.service.SzYhPlanService;
import com.kms.yxgh.sz.service.SzYhRecordService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.controller.BaseController;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import io.swagger.annotations.Api;
@ -25,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/run/sz/yh/record")
@Api(tags = "水闸维修养护记录")
public class SzYhRecordController extends BaseController {
public class SzYhRecordController extends ApprovalAbstractController<SzYhRecordSearchDto, SzYhRecordDetailDto> {
@Autowired
private SzYhRecordService szYhRecordService;
@ -94,4 +95,9 @@ public class SzYhRecordController extends BaseController {
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(szYhRecordService.deleteById(id));
}
@Override
public ApprovalTypeEnum getApprovalType() {
return ApprovalTypeEnum.SZ_YH_RECORD;
}
}

98
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzYhPlan.java

@ -3,12 +3,10 @@ package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
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.math.BigDecimal;
import java.util.Date;
@ -23,57 +21,51 @@ import java.util.Date;
@ApiModel("水闸维修养护计划")
public class SzYhPlan extends SyBaseEntity {
private static final long serialVersionUID = 1L;
/**
* 水闸代码
*/
@Excel(name = "水闸代码")
@ApiModelProperty("水闸代码")
private String wagaCode;
/**
* 名称
*/
@Excel(name = "名称")
@ApiModelProperty("名称")
private String name;
/**
* 计划时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划时间", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("计划时间")
private Date planTime;
/**
* 国补资金
*/
@Excel(name = "国补资金")
@ApiModelProperty("国补资金")
private BigDecimal nationalSupplement;
/**
* 自筹资金
*/
@Excel(name = "自筹资金")
@ApiModelProperty("自筹资金")
private BigDecimal selfSupplement;
/**
* 具体地点
*/
@Excel(name = "具体地点")
@ApiModelProperty("具体地点")
private String location;
/**
* 维修养护内容
*/
@Excel(name = "维修养护内容")
@ApiModelProperty("维修养护内容")
private String content;
private static final long serialVersionUID = 1L;
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private Integer wagaType;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("维修养护类型")
private String type;
@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 supplement;
@ApiModelProperty("文档")
private String doc;
@ApiModelProperty("工程单位")
private String engineeringUnit;
@ApiModelProperty("负责人")
private String responsiblePerson;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("提醒时间")
private Date reminderTime;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("状态")
private String status;
}

71
shuili-system/src/main/java/com/kms/yxgh/sz/domain/SzYhRecord.java

@ -1,9 +1,7 @@
package com.kms.yxgh.sz.domain;
import com.baomidou.mybatisplus.annotation.TableField;
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;
@ -25,70 +23,33 @@ public class SzYhRecord extends SyBaseEntity {
/**
* 水闸代码
*/
@Excel(name = "水闸代码")
@ApiModelProperty("水闸代码")
private String wagaCode;
/**
* 计划代码
*/
@Excel(name = "计划代码")
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private Integer wagaType;
@ApiModelProperty("计划代码")
private String planId;
/**
* 名称
*/
@Excel(name = "名称")
@ApiModelProperty("名称")
private String name;
/**
* 维护前
*/
@Excel(name = "维护前")
@ApiModelProperty("维护前")
@TableField(value = "`before`")
private String before;
@ApiModelProperty("计划名称")
private String planName;
/**
* 维护过程
*/
@Excel(name = "维护过程")
@ApiModelProperty("维护过程")
@TableField(value = "`middle`")
private String middle;
@ApiModelProperty("资金")
private String supplement;
/**
* 维护结束
*/
@Excel(name = "维护结束")
@ApiModelProperty("维护结束")
@TableField(value = "`after`")
private String after;
@ApiModelProperty("维养文档")
private String doc;
/**
* 养护费用
*/
@Excel(name = "养护费用")
@ApiModelProperty("养护费用")
private Long maintenanceFunds;
@ApiModelProperty("维养台账")
private String ledgerDoc;
/**
* 落实情况
*/
@Excel(name = "落实情况")
@ApiModelProperty("落实情况")
private String implement;
@ApiModelProperty("备注")
private String remark;
/**
* 状态
*/
@Excel(name = "状态")
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("文件档案")
private String doc;
}

100
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhPlanDetailDto.java

@ -1,12 +1,15 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.DocDto;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.common.dto.SupplementDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@ -19,57 +22,60 @@ import java.util.Date;
@ApiModel("水闸维修养护计划")
public class SzYhPlanDetailDto {
@ApiModelProperty("养护计划id")
private String id;
@ApiModelProperty("养护计划id")
private String id;
/**
* 水闸代码
*/
@ApiModelProperty("水闸代码")
private String wagaCode;
/**
* 水闸代码
*/
@ApiModelProperty("水闸代码")
private String wagaCode;
/**
* 水闸名称
*/
/**
* 水闸名称
*/
@ApiModelProperty("水闸名称")
private String wagaName;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 计划时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划时间")
private Date planTime;
/**
* 国补资金
*/
@ApiModelProperty("国补资金")
private BigDecimal nationalSupplement;
/**
* 自筹资金
*/
@ApiModelProperty("自筹资金")
private BigDecimal selfSupplement;
/**
* 具体地点
*/
@ApiModelProperty("具体地点")
private String location;
/**
* 维修养护内容
*/
@ApiModelProperty("维修养护内容")
private String content;
@ApiModelProperty("水闸类型")
private Integer wagaType;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("维修养护类型")
private String type;
@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 List<SupplementDto> supplements;
@ApiModelProperty("文档")
private DocDto doc;
@ApiModelProperty("工程单位")
private String engineeringUnit;
@ApiModelProperty("负责人")
private OperatorDto responsiblePerson;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("提醒时间")
private Date reminderTime;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("状态")
private String status;
}

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

@ -18,64 +18,36 @@ import java.util.Date;
@ApiModel("水闸维修养护计划检索")
public class SzYhPlanSearchDto {
@ApiModelProperty("养护计划id")
@ApiModelProperty("id")
private String id;
/**
* 水闸代码
*/
@ApiModelProperty("行政区划")
private String adcd;
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("水闸id")
private String wagaId;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 计划时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划时间")
private Date planTime;
/**
* 国补资金
*/
@ApiModelProperty("国补资金")
private Long nationalSupplement;
/**
* 自筹资金
*/
@ApiModelProperty("自筹资金")
private Long selfSupplement;
/**
* 具体地点
*/
@ApiModelProperty("具体地点")
private String location;
/**
* 维修养护内容
*/
@ApiModelProperty("维修养护内容")
private String content;
@ApiModelProperty("状态")
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("计划开始时间")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("最近修改时间")
private Date updateTime;
@ApiModelProperty("计划结束时间")
private Date endDate;
}

58
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhRecordApprovalDto.java

@ -0,0 +1,58 @@
package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.common.dto.SupplementDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 水闸维修养护记录
*
* @author sy
* @date 2023-11-20
*/
@Data
@ApiModel("水闸维修养护记录验收列表")
public class SzYhRecordApprovalDto {
@ApiModelProperty("养护记录id")
private String id;
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("水闸类型")
private Integer wagaType;
@ApiModelProperty("维修养护类型")
private String type;
@ApiModelProperty("计划代码")
private String planId;
@ApiModelProperty("计划名称")
private String planName;
@ApiModelProperty("资金")
private List<SupplementDto> supplements;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("完成时间")
private Date finishedTime;
@ApiModelProperty("维修养护负责人")
private OperatorDto responsiblePerson;
@ApiModelProperty("工程单位")
private String engineeringUnit;
}

39
shuili-system/src/main/java/com/kms/yxgh/sz/dto/SzYhRecordDetailDto.java

@ -3,6 +3,7 @@ package com.kms.yxgh.sz.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.common.dto.DocDto;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.common.dto.SupplementDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -24,39 +25,30 @@ public class SzYhRecordDetailDto {
@ApiModelProperty("养护记录id")
private String id;
@ApiModelProperty("计划代码")
private String planId;
@ApiModelProperty("水闸代码")
private String wagaCode;
@ApiModelProperty("水闸名称")
private String wagaName;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("维护前")
private String before;
@ApiModelProperty("水闸类型")
private Integer wagaType;
@ApiModelProperty("维护过程")
private String middle;
@ApiModelProperty("计划代码")
private String planId;
@ApiModelProperty("维护结束")
private String after;
@ApiModelProperty("计划名称")
private String planName;
@ApiModelProperty("养护费用")
private Long maintenanceFunds;
@ApiModelProperty("资金")
private List<SupplementDto> supplements;
@ApiModelProperty("落实情况")
private String implement;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("备注")
private String remark;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ -65,15 +57,16 @@ public class SzYhRecordDetailDto {
@ApiModelProperty("最近修改时间")
private Date updateTime;
@ApiModelProperty("养护人员")
private List<OperatorDto> operators;
@ApiModelProperty("负责人")
private OperatorDto responsiblePerson;
@ApiModelProperty("文档")
private DocDto doc;
@ApiModelProperty("计划信息")
@ApiModelProperty("台账")
private DocDto ledgerDoc;
@ApiModelProperty("计划信息")
private SzYhPlanDetailDto plan;
}

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

@ -20,28 +20,32 @@ import java.util.Date;
@ApiModel("水闸养护记录查询")
public class SzYhRecordSearchDto {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建起始时间")
private Date startCreatedTime;
@ApiModelProperty("行政区划")
private String adcd;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建结束时间")
private Date endCreatedTime;
@ApiModelProperty("水闸代码")
private String wagaCode;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新起始时间")
private Date startUpdateTime;
@ApiModelProperty("水闸名称")
private String wagaName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新结束时间")
private Date endUpdateTime;
@ApiModelProperty("水闸类型")
private String wagaType;
@ApiModelProperty("水闸id")
private String wagaId;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("最小维修费用")
private Double minRepairCost;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("计划开始时间")
private Date startDate;
@ApiModelProperty("最大维修费用")
private Double maxRepairCost;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("计划结束时间")
private Date endDate;
}

1
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhOperatorMapper.java

@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository;
* @date 2023-11-20
*/
@Repository
@Deprecated
public interface SzYhOperatorMapper extends BaseMapper<SzYhOperator> {
}

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

@ -3,16 +3,21 @@ 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.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.DocHandler;
import com.kms.yxgh.common.mapper.handler.ListDocHandler;
import com.kms.yxgh.common.mapper.handler.ListSupplementHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.sz.domain.SzYhPlan;
import com.kms.yxgh.sz.dto.SzYhPlanDetailDto;
import com.kms.yxgh.sz.dto.SzYhPlanSearchDto;
import com.shuili.common.utils.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.jdbc.SQL;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.Map;
/**
* 水闸维修养护计划Mapper接口
*
@ -23,30 +28,50 @@ import java.util.Map;
public interface SzYhPlanMapper extends BaseMapper<SzYhPlan> {
@SelectProvider(type = SzYhPlanSqlProvider.class, method = "selectPage")
IPage<SzYhPlanSearchDto> selectPage(Page<SzYhPlanSearchDto> page, @Param("dto") SzYhPlanSearchDto dto);
@Select({
"<script>",
"SELECT yh.id, yh.waga_code, yh.waga_name, yh.waga_type, ",
"yh.name, yh.type, yh.start_date, yh.end_date, yh.supplement, yh.doc, ",
"yh.engineering_unit, yh.responsible_person, yh.reminder_time, yh.remark, yh.status, ",
" yh.create_time, yh.update_time ",
"FROM bs_sgc_sz_yhjh yh ",
"LEFT JOIN att_waga_base jb ON yh.waga_code = jb.waga_code and jb.expr_date is null ",
"WHERE jb.expr_date is null ",
"<if test='dto.wagaType != null and dto.wagaType != \"\"'>",
"AND yh.waga_type = #{dto.wagaType} ",
"</if>",
"<if test='dto.wagaCode != null and dto.wagaCode != \"\"'>",
"AND jd.waga_code = #{dto.wagaCode} ",
"</if>",
"<if test='dto.name != null'>",
"AND yh.name LIKE CONCAT('%',#{dto.name},'%') ",
"</if>",
"<if test='dto.adcd != null and dto.adcd != \"\"'>",
"AND jb.adcd LIKE CONCAT(#{dto.adcd},'%') ",
"</if>",
"<if test='dto.wagaName != null and dto.wagaName != \"\"'>",
"AND jb.waga_name LIKE CONCAT('%',#{dto.wagaName},'%') ",
"</if>",
"<if test='dto.startDate != null'>",
"AND yh.start_date &gt;= #{dto.startDate} ",
"</if>",
"<if test='dto.endDate != null'>",
"AND yh.end_date &lt;= #{dto.endDate} ",
"</if>",
"<if test='dto.status != null and dto.status != \"\"'>",
"AND yh.status = #{dto.status} ",
"</if>",
"ORDER BY yh.create_time DESC",
"</script>"
})
@Results({
@Result(column = "doc", property = "doc", typeHandler = DocHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListSupplementHandler.class),
@Result(column = "responsible_person", property = "responsiblePerson", typeHandler = OperatorHandler.class)
})
IPage<SzYhPlanDetailDto> selectPage(Page<SzYhPlanSearchDto> page, @Param("dto") SzYhPlanSearchDto dto);
class SzYhPlanSqlProvider {
public String selectPage(final Map<String, Object> param) {
return new SQL() {{
SELECT("p.id, p.waga_code, j.waga_name as wagaName, p.name, p.plan_time, " +
"p.national_supplement, p.self_supplement, p.location, p.content, j.waga_name,j.id as waga_id, " +
"p.create_time, p.update_time"); // 添加了 p.create_time 和 p.update_time
FROM("bs_sgc_sz_yhjh p");
LEFT_OUTER_JOIN("att_waga_base j ON p.waga_code = j.waga_code and j.expr_date is null ");
WHERE("1=1 ");
IPage<ApprovalDetailDto<SzYhPlanDetailDto>> approvalSearchPage(Page<SzYhPlanSearchDto> page, @Param("dto") ApprovalSearchDto<SzYhPlanSearchDto> dto);
SzYhPlanSearchDto dto = (SzYhPlanSearchDto) param.get("dto");
if (dto != null) {
if (StringUtils.isNotBlank(dto.getName())) {
WHERE("p.name LIKE CONCAT('%', #{dto.name}, '%')");
}
if (StringUtils.isNotBlank(dto.getWagaCode())) {
WHERE("p.waga_code = #{dto.wagaCode}");
}
}
}}.toString();
}
}
}

69
shuili-system/src/main/java/com/kms/yxgh/sz/mapper/SzYhRecordMapper.java

@ -2,10 +2,19 @@ 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.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.DocHandler;
import com.kms.yxgh.common.mapper.handler.ListSupplementHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.sz.domain.SzYhRecord;
import com.kms.yxgh.sz.dto.SzYhRecordApprovalDto;
import com.kms.yxgh.sz.dto.SzYhRecordDetailDto;
import com.kms.yxgh.sz.dto.SzYhRecordSearchDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@ -22,55 +31,51 @@ public interface SzYhRecordMapper extends BaseMapper<SzYhRecord> {
@Select("<script>" +
"SELECT " +
"yhjl.id, " +
"yhjl.plan_id AS planId, " +
"yhjl.waga_code AS wagaCode, " +
"jbxx.waga_name AS wagaName, " + // 从bs_sgc_sz_jbxx表获取waga_name
"yhjl.name, " +
"yhjl.before, " +
"yhjl.middle, " +
"yhjl.after, " +
"yhjl.maintenance_funds, " +
"yhjl.implement, " +
"yhjl.status, " +
"yhjl.doc, " +
"yhjl.create_time AS createTime, " +
"yhjl.update_time AS updateTime " +
"SELECT yhjl.id, yhjl.plan_id, yhjl.name, yhjl.status, yhjl.supplement," +
"yhjl.doc, yhjl.ledger_doc, yhjl.remark, yhjl.create_time, yhjl.update_time, " +
"df.waga_code, df.waga_name, df.waga_type, " +
"jh.responsible_person " +
"FROM bs_sgc_sz_yhjl yhjl " +
"LEFT JOIN bs_sgc_sz_jbxx jbxx ON yhjl.waga_code = jbxx.waga_code " + // 使用LEFT JOIN连接基本信息表
"LEFT JOIN bs_sgc_sz_yhjh jh ON jh.id = yhjl.plan_id " +
"LEFT JOIN att_waga_base df ON yhjl.waga_code = df.waga_code and df.expr_date is null " +
"WHERE 1=1 " +
"and jbxx.expr_date is null " +
"<if test='searchDto.wagaCode != null and searchDto.wagaCode != \"\"'>" +
"AND jbxx.waga_code = #{searchDto.wagaCode} " +
"AND df.waga_code = #{searchDto.wagaCode} " +
"</if>" +
"<if test='searchDto.startCreatedTime != null'>" +
"AND yhjl.create_time &gt;= #{searchDto.startCreatedTime} " +
"<if test='searchDto.wagaName != null and searchDto.wagaName != \"\"'>" +
"AND df.waga_name LIKE CONCAT('%',#{searchDto.wagaName},'%') " +
"</if>" +
"<if test='searchDto.endCreatedTime != null'>" +
"AND yhjl.create_time &lt;= #{searchDto.endCreatedTime} " +
"<if test='searchDto.wagaType != null and searchDto.wagaType != \"\"'>" +
"AND df.waga_type = #{searchDto.wagaType} " +
"</if>" +
"<if test='searchDto.startUpdateTime != null'>" +
"AND yhjl.update_time &gt;= #{searchDto.startUpdateTime} " +
"<if test='searchDto.startDate != null '>" +
"AND jh.start_date &gt;= #{searchDto.startDate} " +
"</if>" +
"<if test='searchDto.endUpdateTime != null'>" +
"AND yhjl.update_time &lt;= #{searchDto.endUpdateTime} " +
"<if test='searchDto.endDate != null '>" +
"AND jh.end_date &lt;= #{searchDto.endDate} " +
"</if>" +
"<if test='searchDto.status != null and !searchDto.status.isEmpty()'>" +
"AND yhjl.status = #{searchDto.status} " +
"<if test='searchDto.name != null and searchDto.name != \"\"'>" +
"AND jh.name LIKE CONCAT('%',#{searchDto.name},'%') " +
"</if>" +
"<if test='searchDto.minRepairCost != null'>" +
"AND yhjl.maintenance_funds &gt;= #{searchDto.minRepairCost} " +
"<if test='searchDto.adcd != null and searchDto.adcd != \"\"'>" +
"AND df.adcd LIKE CONCAT(#{searchDto.adcd},'%') " +
"</if>" +
"<if test='searchDto.maxRepairCost != null'>" +
"AND yhjl.maintenance_funds &lt;= #{searchDto.maxRepairCost} " +
"<if test='searchDto.status != null and searchDto.status != \"\"'>" +
"AND yhjl.status = #{searchDto.status} " +
"</if>" +
"ORDER BY yhjl.create_time DESC" +
"</script>")
@Results({
@Result(column = "responsible_person", property = "responsiblePerson", typeHandler = OperatorHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListSupplementHandler.class),
@Result(column = "doc", property = "doc", typeHandler = DocHandler.class),
@Result(column = "ledger_doc", property = "ledgerDoc", typeHandler = DocHandler.class)
})
IPage<SzYhRecordDetailDto> searchPage(IPage<SzYhRecordDetailDto> page, @Param("searchDto") SzYhRecordSearchDto searchDto);
@Select("SELECT MAX(create_time) FROM bs_sgc_sz_yhjl WHERE waga_code = #{wagaCode} ")
Date getLastInsertTimeByWagaCode(@Param("wagaCode") String wagaCode);
IPage<ApprovalDetailDto<SzYhRecordApprovalDto>> approvalSearchPage(Page<SzYhRecordSearchDto> page, @Param("dto") ApprovalSearchDto<SzYhRecordSearchDto> data);
}

90
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhPlanService.java

@ -1,24 +1,35 @@
package com.kms.yxgh.sz.service;
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.system.service.SysUserService;
import com.kms.yg.sz.domain.BsSgcSzSafeJbxx;
import com.kms.yg.sz.service.BsSgcSzSafeJbxxService;
import com.kms.yxgh.base.DfException;
import com.kms.yxgh.base.SzException;
import com.kms.yxgh.common.ApprovalStatusEnum;
import com.kms.yxgh.common.dto.*;
import com.kms.yxgh.common.service.ApprovalBusinessService;
import com.kms.yxgh.df.domain.DfYhPlan;
import com.kms.yxgh.sz.domain.SzYhPlan;
import com.kms.yxgh.sz.dto.SzYhPlanDetailDto;
import com.kms.yxgh.sz.dto.SzYhPlanSearchDto;
import com.kms.yxgh.sz.mapper.SzYhPlanMapper;
import com.kms.yxgh.util.BeanCopyUtils;
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 org.springframework.beans.factory.annotation.Autowired;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
/**
* 水闸维修养护计划Service接口
*
@ -26,15 +37,19 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-11-20
*/
@Service
public class SzYhPlanService extends BaseService<SzYhPlanMapper, SzYhPlan> {
@Autowired
private BsSgcSzSafeJbxxService bsSgcSzSafeJbxxService;
@AllArgsConstructor
public class SzYhPlanService extends BaseService<SzYhPlanMapper, SzYhPlan> implements ApprovalBusinessService<SzYhPlanSearchDto, SzYhPlanDetailDto> {
private final BsSgcSzSafeJbxxService bsSgcSzSafeJbxxService;
private final SysUserService sysUserService;
public SzYhPlanDetailDto getDetailById(String id) {
SzYhPlan szPlan = this.getById(id);
SzYhPlanDetailDto dto = BeanCopyUtils.copy(szPlan, SzYhPlanDetailDto.class);
BsSgcSzSafeJbxx szInfo = bsSgcSzSafeJbxxService.selectByWagaCode(dto.getWagaCode());
dto.setWagaName(szInfo.getWagaName());
if (dto != null) {
dto.setDoc(JSON.parseObject(szPlan.getDoc(), DocDto.class));
dto.setSupplements(JSON.parseArray(szPlan.getSupplement(), SupplementDto.class));
dto.setResponsiblePerson(JSON.parseObject(szPlan.getResponsiblePerson(), OperatorDto.class));
}
return dto;
}
@ -44,6 +59,10 @@ public class SzYhPlanService extends BaseService<SzYhPlanMapper, SzYhPlan> {
SzYhPlan szPlan = BeanCopyUtils.copy(dto, SzYhPlan.class);
if (szPlan != null) {
szPlan.setId(null);
szPlan.setDoc(JSON.toJSONString(dto.getDoc()));
szPlan.setSupplement(JSON.toJSONString(dto.getSupplements()));
szPlan.setResponsiblePerson(JSON.toJSONString(dto.getResponsiblePerson()));
szPlan.setStatus(ApprovalStatusEnum.SUBMITTING.getValue());
if (checkNameDistinct(szPlan.getId(), szPlan.getName())) {
getBaseMapper().insert(szPlan);
dto.setId(szPlan.getId());
@ -58,18 +77,27 @@ public class SzYhPlanService extends BaseService<SzYhPlanMapper, SzYhPlan> {
@Transactional(rollbackFor = Exception.class)
public SzYhPlanDetailDto update(SzYhPlanDetailDto dto) {
if (exist(dto.getId())) {
SzYhPlan szPlan = BeanCopyUtils.copy(dto, SzYhPlan.class);
if (szPlan != null) {
if (checkNameDistinct(szPlan.getId(), szPlan.getName())) {
getBaseMapper().updateById(szPlan);
return dto;
} else {
throw new SzException("该名称已存在");
SzYhPlan oldPlan = this.getById(dto.getId());
if (oldPlan != null) {
if (ApprovalStatusEnum.canUpdate(oldPlan.getStatus())) {
SzYhPlan szPlan = BeanCopyUtils.copy(dto, SzYhPlan.class);
if (szPlan != null) {
szPlan.setDoc(JSON.toJSONString(dto.getDoc()));
szPlan.setSupplement(JSON.toJSONString(dto.getSupplements()));
szPlan.setResponsiblePerson(JSON.toJSONString(dto.getResponsiblePerson()));
szPlan.setStatus(oldPlan.getStatus());
if (checkNameDistinct(szPlan.getId(), szPlan.getName())) {
getBaseMapper().updateById(szPlan);
return dto;
} else {
throw new DfException("该名称已存在");
}
}
} else {
throw new DfException("审批中或者已通过的计划不允许修改");
}
}
throw new SzException("源数据不存在,请确认id值是否正确");
throw new DfException("源数据不存在,请确认id值是否正确");
}
@ -86,14 +114,34 @@ public class SzYhPlanService extends BaseService<SzYhPlanMapper, SzYhPlan> {
return this.getBaseMapper().selectCount(wp) <= 0;
}
private boolean exist(String id) {
Wrapper<SzYhPlan> wp = Wrappers.<SzYhPlan>lambdaQuery()
.eq(SzYhPlan::getId, id);
return this.getBaseMapper().selectCount(wp) > 0;
public IPage<SzYhPlanDetailDto> search(SearchParam<SzYhPlanSearchDto> sp) {
Page<SzYhPlanSearchDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
return this.getBaseMapper().selectPage(page, sp.getData());
}
public IPage<SzYhPlanSearchDto> search(SearchParam<SzYhPlanSearchDto> sp) {
@Override
public IPage<ApprovalDetailDto<SzYhPlanDetailDto>> approvalSearch(SearchParam<ApprovalSearchDto<SzYhPlanSearchDto>> sp) {
Page<SzYhPlanSearchDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
return this.getBaseMapper().selectPage(page, sp.getData());
return this.getBaseMapper().approvalSearchPage(page, sp.getData());
}
@Override
public List<OperatorDto> getOperatorList(String formId) {
SysUser user = sysUserService.getById("1");
if (user != null) {
OperatorDto operatorDto = new OperatorDto();
operatorDto.setUid(user.getId());
operatorDto.setName(user.getNickName());
return Collections.singletonList(operatorDto);
}
return Collections.emptyList();
}
@Override
public void updateApprovalStatus(String formId, ApprovalStatusEnum status) {
Wrapper<SzYhPlan> wp = Wrappers.<SzYhPlan>lambdaUpdate()
.eq(SzYhPlan::getId, formId)
.set(SzYhPlan::getStatus, status.getValue());
getBaseMapper().update(null, wp);
}
}

108
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzYhRecordService.java

@ -1,32 +1,32 @@
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.system.service.SysUserService;
import com.kms.yxgh.base.SzException;
import com.kms.yxgh.base.enums.YhRecordStatus;
import com.kms.yxgh.common.dto.DocDto;
import com.kms.yxgh.common.dto.OperatorDto;
import com.kms.yxgh.sz.domain.SzYhOperator;
import com.kms.yxgh.common.ApprovalStatusEnum;
import com.kms.yxgh.common.dto.*;
import com.kms.yxgh.common.service.ApprovalBusinessService;
import com.kms.yxgh.sz.domain.SzYhRecord;
import com.kms.yxgh.sz.dto.SzYhRecordApprovalDto;
import com.kms.yxgh.sz.dto.SzYhRecordDetailDto;
import com.kms.yxgh.sz.dto.SzYhRecordSearchDto;
import com.kms.yxgh.sz.mapper.SzYhOperatorMapper;
import com.kms.yxgh.sz.mapper.SzYhRecordMapper;
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 lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
/**
* 水闸维修养护记录Service接口
@ -36,29 +36,20 @@ import java.util.function.Consumer;
*/
@AllArgsConstructor
@Service
public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord> {
public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord> implements ApprovalBusinessService<SzYhRecordSearchDto, SzYhRecordApprovalDto> {
private final SzYhOperatorMapper szYhOperatorMapper;
private final SzYhPlanService szYhPlanService;
private final SysUserService sysUserService;
public SzYhRecordDetailDto getDetailById(String id) {
SzYhRecord record = this.getBaseMapper().selectById(id);
if (record != null) {
record.setId(null);
SzYhRecordDetailDto dto = BeanCopyUtils.copy(record, SzYhRecordDetailDto.class);
if (dto != null) {
dto.setDoc(JSON.parseObject(record.getDoc(), DocDto.class));
}
Wrapper<SzYhOperator> wp = Wrappers.<SzYhOperator>lambdaQuery()
.eq(SzYhOperator::getRecordId, id);
List<SzYhOperator> items = szYhOperatorMapper.selectList(wp);
if (CollectionUtil.isNotEmpty(items) && dto != null) {
dto.setOperators(StreamUtils.toList(items, r -> {
OperatorDto operatorDto = new OperatorDto();
operatorDto.setId(r.getId());
operatorDto.setUid(r.getOperatorUid());
operatorDto.setName(r.getOperatorName());
return operatorDto;
}));
dto.setLedgerDoc(JSON.parseObject(record.getLedgerDoc(), DocDto.class));
dto.setSupplements(JSON.parseArray(record.getSupplement(), SupplementDto.class));
dto.setPlan(szYhPlanService.getDetailById(dto.getPlanId()));
}
return dto;
}
@ -69,12 +60,12 @@ public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord>
public SzYhRecordDetailDto add(SzYhRecordDetailDto dto) {
SzYhRecord szYhRecord = BeanCopyUtils.copy(dto, SzYhRecord.class);
if (szYhRecord != null) {
szYhRecord.setId(null);
szYhRecord.setDoc(JSON.toJSONString(dto.getDoc()));
szYhRecord.setLedgerDoc(JSON.toJSONString(dto.getLedgerDoc()));
szYhRecord.setSupplement(JSON.toJSONString(dto.getSupplements()));
getBaseMapper().insert(szYhRecord);
dto.setId(szYhRecord.getId());
if (CollectionUtil.isNotEmpty(dto.getOperators())) {
dto.getOperators().forEach(insertOperator(dto.getId()));
}
return dto;
}
return null;
@ -88,12 +79,9 @@ public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord>
SzYhRecord szYhRecord = BeanCopyUtils.copy(szRecord, SzYhRecord.class);
if (szYhRecord != null) {
szYhRecord.setDoc(JSON.toJSONString(szRecord.getDoc()));
szYhRecord.setLedgerDoc(JSON.toJSONString(szRecord.getLedgerDoc()));
szYhRecord.setSupplement(JSON.toJSONString(szRecord.getSupplements()));
getBaseMapper().updateById(szYhRecord);
String id = szRecord.getId();
deleteItems(id);
if (CollectionUtil.isNotEmpty(szRecord.getOperators())) {
szRecord.getOperators().forEach(insertOperator(id));
}
return szRecord;
}
} else {
@ -103,29 +91,10 @@ public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord>
throw new SzException("源数据不存在,请确认id值是否正确");
}
private Consumer<OperatorDto> insertOperator(String id) {
return (o) -> {
SzYhOperator item = new SzYhOperator();
item.setRecordId(id);
item.setOperatorName(o.getName());
item.setOperatorUid(o.getUid());
szYhOperatorMapper.insert(item);
};
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
boolean rt = removeById(id);
if (rt) {
deleteItems(id);
}
return rt;
}
private void deleteItems(String id) {
Wrapper<SzYhOperator> wp = Wrappers.<SzYhOperator>lambdaQuery()
.eq(SzYhOperator::getRecordId, id);
szYhOperatorMapper.delete(wp);
return removeById(id);
}
private boolean checkStatus(String id) {
@ -141,21 +110,44 @@ public class SzYhRecordService extends BaseService<SzYhRecordMapper, SzYhRecord>
return this.getBaseMapper().selectCount(wp) > 0;
}
private boolean existRecord(String planId) {
Wrapper<SzYhRecord> wp = Wrappers.<SzYhRecord>lambdaQuery()
.eq(SzYhRecord::getPlanId, planId);
return this.getBaseMapper().selectCount(wp) > 0;
public IPage<SzYhRecordDetailDto> search(SearchParam<SzYhRecordSearchDto> sp) {
Page<SzYhRecordDetailDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
return this.getBaseMapper().searchPage(page, Optional.ofNullable(sp.getData()).orElse(new SzYhRecordSearchDto()));
}
///更新状态
public Boolean updateStatus(SzYhRecordDetailDto szYhRecord) {
Wrapper<SzYhRecord> wp = Wrappers.<SzYhRecord>lambdaUpdate()
.eq(SzYhRecord::getId, szYhRecord.getId())
.set(SzYhRecord::getStatus, szYhRecord.getStatus());
return this.update(wp);
return this.getBaseMapper().update(null, wp) > 0;
}
public IPage<SzYhRecordDetailDto> search(SearchParam<SzYhRecordSearchDto> sp) {
Page<SzYhRecordDetailDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
return this.getBaseMapper().searchPage(page, Optional.ofNullable(sp.getData()).orElse(new SzYhRecordSearchDto()));
@Override
public IPage<ApprovalDetailDto<SzYhRecordApprovalDto>> approvalSearch(SearchParam<ApprovalSearchDto<SzYhRecordSearchDto>> sp) {
Page<SzYhRecordSearchDto> page = new Page<>(sp.getPageNum(), sp.getPageSize());
return this.getBaseMapper().approvalSearchPage(page, sp.getData());
}
@Override
public List<OperatorDto> getOperatorList(String formId) {
SysUser user = sysUserService.getById("1");
if (user != null) {
OperatorDto operatorDto = new OperatorDto();
operatorDto.setUid(user.getId());
operatorDto.setName(user.getNickName());
return Collections.singletonList(operatorDto);
}
return Collections.emptyList();
}
@Override
public void updateApprovalStatus(String formId, ApprovalStatusEnum status) {
Wrapper<SzYhRecord> wp = Wrappers.<SzYhRecord>lambdaUpdate()
.eq(SzYhRecord::getId, formId)
.set(SzYhRecord::getStatus, status.getValue());
getBaseMapper().update(null, wp);
}
}

4
shuili-system/src/main/resources/mapper/yxgh/DfYhPlanMapper.xml

@ -10,7 +10,7 @@
<result property="status" column="status"/>
<result property="comment" column="comment"/>
<result property="operator" column="operator" typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.ListDocHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<association property="detail" javaType="com.kms.yxgh.df.dto.DfYhPlanDetailDto">
<id property="id" column="yh_id"/>
<result property="dikeCode" column="dike_code"/>
@ -21,7 +21,7 @@
<result property="endDate" column="end_date"/>
<result property="supplements" column="supplement"
typeHandler="com.kms.yxgh.common.mapper.handler.ListSupplementHandler"/>
<result property="doc" column="doc" typeHandler="com.kms.yxgh.common.mapper.handler.ListDocHandler"/>
<result property="doc" column="doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<result property="engineeringUnit" column="engineering_unit"/>
<result property="responsiblePerson" column="responsible_person"
typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>

2
shuili-system/src/main/resources/mapper/yxgh/DfYhRecordMapper.xml

@ -10,7 +10,7 @@
<result property="status" column="status"/>
<result property="comment" column="comment"/>
<result property="operator" column="operator" typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.ListDocHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<association property="detail" javaType="com.kms.yxgh.df.dto.DfYhRecordApprovalDto">
<id property="id" column="jl_id"/>
<result property="dikeCode" column="dike_code"/>

78
shuili-system/src/main/resources/mapper/yxgh/SzYhPlanMapper.xml

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.kms.yxgh.sz.mapper.SzYhPlanMapper">
<resultMap id="approvalMap" type="com.kms.yxgh.common.dto.ApprovalDetailDto">
<id property="id" column="id"/>
<result property="formId" column="formId"/>
<result property="submitTime" column="submit_time"/>
<result property="approvalTime" column="approval_time"/>
<result property="status" column="status"/>
<result property="comment" column="comment"/>
<result property="operator" column="operator" typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<association property="detail" javaType="com.kms.yxgh.sz.dto.SzYhPlanDetailDto">
<id property="id" column="yh_id"/>
<result property="wagaCode" column="waga_code"/>
<result property="wagaName" column="waga_name"/>
<result property="wagaType" column="waga_type"/>
<result property="name" column="plan_name"/>
<result property="startDate" column="start_date"/>
<result property="endDate" column="end_date"/>
<result property="supplements" column="supplement"
typeHandler="com.kms.yxgh.common.mapper.handler.ListSupplementHandler"/>
<result property="doc" column="doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<result property="engineeringUnit" column="engineering_unit"/>
<result property="responsiblePerson" column="responsible_person"
typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="type" column="type"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
</association>
</resultMap>
<select id="approvalSearchPage" resultMap="approvalMap">
SELECT ts.id id, ts.form_id formId, ts.create_time submit_time, ts.approval_time approval_time, ts.status
status,
ts.operator operator, ts.comment comment, ts.doc ts_doc,
yh.id yh_id, yh.waga_code waga_code, yh.waga_name waga_name, yh.name plan_name, yh.start_date start_date,
yh.end_date
end_date,
yh.supplement supplement, yh.doc doc, yh.engineering_unit engineering_unit, yh.responsible_person
responsible_person,
yh.type type
FROM bs_sgc_sp_task ts
LEFT JOIN bs_sgc_sp_operator op ON ts.id = op.task_id and op.uid = #{dto.userId}
LEFT JOIN bs_sgc_sz_yhjh yh ON yh.id = ts.form_id
LEFT JOIN att_waga_base jb ON yh.waga_code = jb.waga_code and jb.expr_date is null
WHERE ts.business_type = #{dto.businessType}
<if test='dto.status != null and dto.status != ""'>
AND ts.status = #{dto.status}
</if>
<if test="dto.condition!= null and dto.condition.wagaType != null and dto.condition.wagaType != ''">
AND jb.waga_type = #{dto.condition.wagaType}
</if>
<if test='dto.condition!= null and dto.condition.wagaCode != null and dto.condition.wagaCode != ""'>
AND jb.waga_code = #{dto.condition.wagaCode}
</if>
<if test='dto.condition!= null and dto.condition.name != null'>
AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%')
</if>
<if test='dto.condition!= null and dto.condition.adcd != null and dto.condition.adcd != ""'>
AND jb.adcd LIKE CONCAT(#{dto.condition.adcd},'%')
</if>
<if test='dto.condition!= null and dto.condition.wagaName != null and dto.condition.wagaName != ""'>
AND jb.waga_name LIKE CONCAT('%',#{dto.condition.wagaName},'%')
</if>
<if test='dto.condition!= null and dto.condition.startDate != null and dto.condition.startDate != ""'>
AND yh.start_date &gt;= #{dto.condition.startDate}
</if>
<if test='dto.condition!= null and dto.condition.endDate != null and dto.condition.endDate != ""'>
AND yh.end_date &lt;= #{dto.condition.endDate}
</if>
ORDER BY yh.create_time DESC
</select>
</mapper>

76
shuili-system/src/main/resources/mapper/yxgh/SzYhRecordMapper.xml

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.kms.yxgh.sz.mapper.SzYhRecordMapper">
<resultMap id="approvalMap" type="com.kms.yxgh.common.dto.ApprovalDetailDto">
<id property="id" column="id"/>
<result property="formId" column="formId"/>
<result property="submitTime" column="submit_time"/>
<result property="approvalTime" column="approval_time"/>
<result property="status" column="status"/>
<result property="comment" column="comment"/>
<result property="operator" column="operator" typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="doc" column="ts_doc" typeHandler="com.kms.yxgh.common.mapper.handler.DocHandler"/>
<association property="detail" javaType="com.kms.yxgh.sz.dto.SzYhRecordApprovalDto">
<id property="id" column="jl_id"/>
<result property="wagaCode" column="waga_code"/>
<result property="wagaName" column="waga_name"/>
<result property="wagaType" column="waga_type"/>
<result property="planName" column="plan_name"/>
<result property="planId" column="plan_id"/>
<result property="finishedTime" column="start_date"/>
<result property="supplements" column="supplement"
typeHandler="com.kms.yxgh.common.mapper.handler.ListSupplementHandler"/>
<result property="engineeringUnit" column="engineering_unit"/>
<result property="responsiblePerson" column="responsible_person"
typeHandler="com.kms.yxgh.common.mapper.handler.OperatorHandler"/>
<result property="type" column="type"/>
</association>
</resultMap>
<select id="approvalSearchPage" resultMap="approvalMap">
SELECT ts.id id, ts.form_id formId, ts.create_time submit_time, ts.approval_time approval_time, ts.status
status,
ts.operator operator, ts.comment comment, ts.doc ts_doc,
jl.id jl_id, jl.create_time finished_time,
yh.id plan_id,yh.waga_code waga_code, yh.waga_name waga_name, yh.name plan_name, yh.start_date start_date,
yh.end_date
end_date,
yh.supplement supplement, yh.doc doc, yh.engineering_unit engineering_unit, yh.responsible_person
responsible_person,
yh.type type
FROM bs_sgc_sp_task ts
LEFT JOIN bs_sgc_sp_operator op ON ts.id = op.task_id and op.uid = #{dto.userId}
LEFT JOIN bs_sgc_sz_yhjl jl ON jl.id = ts.form_id
LEFT JOIN bs_sgc_sz_yhjh yh ON yh.id = jl.plan_id
LEFT JOIN att_waga_base jb ON yh.waga_code = jb.waga_code and jb.expr_date is null
WHERE ts.business_type = #{dto.businessType}
<if test='dto.status != null and dto.status != ""'>
AND ts.status = #{dto.status}
</if>
<if test='dto.condition!= null and dto.condition.wagaCode != null and dto.condition.wagaCode != ""'>
AND yh.waga_code = #{dto.condition.wagaCode}
</if>
<if test='dto.condition!= null and dto.condition.wagaType != null and dto.condition.wagaType != ""'>
AND yh.waga_type = #{dto.condition.wagaType}
</if>
<if test='dto.condition!= null and dto.condition.name != null'>
AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%')
</if>
<if test='dto.condition!= null and dto.condition.adcd != null and dto.condition.adcd != ""'>
AND jb.adcd LIKE CONCAT(#{dto.condition.adcd},'%')
</if>
<if test='dto.condition!= null and dto.condition.wagaName != null and dto.condition.wagaName != ""'>
AND yh.waga_name LIKE CONCAT('%',#{dto.condition.wagaName},'%')
</if>
<if test='dto.condition!= null and dto.condition.startDate != null and dto.condition.startDate != ""'>
AND yh.start_date &gt;= #{dto.condition.startDate}
</if>
<if test='dto.condition!= null and dto.condition.endDate != null and dto.condition.endDate != ""'>
AND yh.end_date &lt;= #{dto.condition.endDate}
</if>
ORDER BY yh.create_time DESC
</select>
</mapper>
Loading…
Cancel
Save