Browse Source

feat: 补充审批列表查询条件与字段

master_tdsql
hxh 9 months ago
parent
commit
8b4c3688e0
  1. 11
      shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java
  2. 25
      shuili-system/src/main/java/com/kms/yxgh/common/dto/ApprovalCommentDto.java
  3. 27
      shuili-system/src/main/java/com/kms/yxgh/common/service/ApprovalService.java
  4. 4
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhPlanSearchDto.java
  5. 3
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhRecordDetailDto.java
  6. 3
      shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhRecordSearchDto.java
  7. 16
      shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhPlanMapper.java
  8. 54
      shuili-system/src/main/java/com/kms/yxgh/df/mapper/DfYhRecordMapper.java
  9. 7
      shuili-system/src/main/resources/mapper/yxgh/DfYhPlanMapper.xml
  10. 3
      shuili-system/src/main/resources/mapper/yxgh/DfYhRecordMapper.xml

11
shuili-system/src/main/java/com/kms/yxgh/common/controller/ApprovalAbstractController.java

@ -2,7 +2,9 @@ package com.kms.yxgh.common.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.common.utils.UserUtils; import com.kms.common.utils.UserUtils;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.common.ApprovalTypeEnum; import com.kms.yxgh.common.ApprovalTypeEnum;
import com.kms.yxgh.common.dto.ApprovalCommentDto;
import com.kms.yxgh.common.dto.ApprovalDetailDto; import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto; import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.service.ApprovalBusinessService; import com.kms.yxgh.common.service.ApprovalBusinessService;
@ -11,10 +13,13 @@ import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.domain.entity.SysUser; import com.shuili.common.core.domain.entity.SysUser;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public abstract class ApprovalAbstractController<S, T> { public abstract class ApprovalAbstractController<S, T> {
@ -62,4 +67,10 @@ public abstract class ApprovalAbstractController<S, T> {
approvalService.rejected(id, getApprovalType(), dto); approvalService.rejected(id, getApprovalType(), dto);
} }
@GetMapping("/approval/comment/{formId}")
@ApiOperation("审批意见")
public Response<List<ApprovalCommentDto>> comment(@PathVariable("formId") String formId) {
return approvalService.comment(formId, getApprovalType());
}
} }

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

@ -0,0 +1,25 @@
package com.kms.yxgh.common.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel("审批意见")
public class ApprovalCommentDto {
@ApiModelProperty("审批意见")
private String comment;
@ApiModelProperty("审批状态")
private String status;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("审批时间")
private Date approvalTime;
@ApiModelProperty("审批人")
private OperatorDto operator;
@ApiModelProperty("审批文档")
private List<DocDto> docs;
}

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

@ -2,18 +2,24 @@ package com.kms.yxgh.common.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kms.common.utils.UserUtils; import com.kms.common.utils.UserUtils;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.common.ApprovalStatusEnum; import com.kms.yxgh.common.ApprovalStatusEnum;
import com.kms.yxgh.common.ApprovalTypeEnum; import com.kms.yxgh.common.ApprovalTypeEnum;
import com.kms.yxgh.common.domain.ApprovalOperator; import com.kms.yxgh.common.domain.ApprovalOperator;
import com.kms.yxgh.common.domain.ApprovalTask; import com.kms.yxgh.common.domain.ApprovalTask;
import com.kms.yxgh.common.dto.ApprovalCommentDto;
import com.kms.yxgh.common.dto.ApprovalDetailDto; import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.DocDto;
import com.kms.yxgh.common.dto.OperatorDto; import com.kms.yxgh.common.dto.OperatorDto;
import com.shuili.common.core.domain.entity.SysUser; import com.shuili.common.core.domain.entity.SysUser;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -99,4 +105,25 @@ public class ApprovalService {
return JSON.toJSONString(operatorDto); return JSON.toJSONString(operatorDto);
} }
public Response<List<ApprovalCommentDto>> comment(String formId, ApprovalTypeEnum approvalType) {
Wrapper<ApprovalTask> wrapper = Wrappers.<ApprovalTask>lambdaQuery()
.eq(ApprovalTask::getFormId, formId)
.eq(ApprovalTask::getBusinessType, approvalType.getValue());
List<ApprovalTask> approvalTasks = approvalTaskService.list(wrapper);
if (CollectionUtil.isEmpty(approvalTasks)) {
return Response.ok();
}
List<ApprovalCommentDto> commentDtoList = approvalTasks.stream().map(approvalTask -> {
ApprovalCommentDto commentDto = new ApprovalCommentDto();
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.setStatus(approvalTask.getStatus());
return commentDto;
}).filter(commentDto -> commentDto.getApprovalTime() != null)
.sorted(Comparator.comparing(ApprovalCommentDto::getApprovalTime))
.collect(Collectors.toList());
return Response.ok(commentDtoList);
}
} }

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

@ -1,7 +1,6 @@
package com.kms.yxgh.df.dto; package com.kms.yxgh.df.dto;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -33,6 +32,9 @@ public class DfYhPlanSearchDto {
@ApiModelProperty("堤防名称") @ApiModelProperty("堤防名称")
private String dikeName; private String dikeName;
@ApiModelProperty("堤防类型")
private String dikeType;
@ApiModelProperty("堤防id") @ApiModelProperty("堤防id")
private String dikeId; private String dikeId;

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

@ -57,6 +57,9 @@ public class DfYhRecordDetailDto {
@ApiModelProperty("最近修改时间") @ApiModelProperty("最近修改时间")
private Date updateTime; private Date updateTime;
@ApiModelProperty("负责人")
private OperatorDto responsiblePerson;
@ApiModelProperty("文档") @ApiModelProperty("文档")
private List<DocDto> doc; private List<DocDto> doc;

3
shuili-system/src/main/java/com/kms/yxgh/df/dto/DfYhRecordSearchDto.java

@ -29,6 +29,9 @@ public class DfYhRecordSearchDto {
@ApiModelProperty("堤防名称") @ApiModelProperty("堤防名称")
private String dikeName; private String dikeName;
@ApiModelProperty("堤防类型")
private String dikeType;
@ApiModelProperty("堤防id") @ApiModelProperty("堤防id")
private String dikeId; private String dikeId;

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

@ -5,10 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.dto.ApprovalDetailDto; import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto; import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.ListDocHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.df.domain.DfYhPlan; import com.kms.yxgh.df.domain.DfYhPlan;
import com.kms.yxgh.df.dto.DfYhPlanDetailDto; import com.kms.yxgh.df.dto.DfYhPlanDetailDto;
import com.kms.yxgh.df.dto.DfYhPlanSearchDto; import com.kms.yxgh.df.dto.DfYhPlanSearchDto;
import org.apache.ibatis.annotations.Param; 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.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -30,8 +34,11 @@ public interface DfYhPlanMapper extends BaseMapper<DfYhPlan> {
"FROM bs_sgc_df_yhjh yh ", "FROM bs_sgc_df_yhjh yh ",
"LEFT JOIN att_dike_base jb ON yh.dike_code = jb.dike_code and jb.expr_date is null ", "LEFT JOIN att_dike_base jb ON yh.dike_code = jb.dike_code and jb.expr_date is null ",
"WHERE jb.expr_date is null ", "WHERE jb.expr_date is null ",
"<if test='dto.dikeType != null and dto.dikeType != \"\"'>",
"AND yh.dike_type = #{dto.dikeType} ",
"</if>",
"<if test='dto.dikeCode != null and dto.dikeCode != \"\"'>", "<if test='dto.dikeCode != null and dto.dikeCode != \"\"'>",
"AND yh.dike_code = #{dto.dikeCode} ", "AND jd.dike_code = #{dto.dikeCode} ",
"</if>", "</if>",
"<if test='dto.name != null'>", "<if test='dto.name != null'>",
"AND yh.name LIKE CONCAT('%',#{dto.name},'%') ", "AND yh.name LIKE CONCAT('%',#{dto.name},'%') ",
@ -40,7 +47,7 @@ public interface DfYhPlanMapper extends BaseMapper<DfYhPlan> {
"AND jb.adcd LIKE CONCAT(#{dto.adcd},'%') ", "AND jb.adcd LIKE CONCAT(#{dto.adcd},'%') ",
"</if>", "</if>",
"<if test='dto.dikeName != null and dto.dikeName != \"\"'>", "<if test='dto.dikeName != null and dto.dikeName != \"\"'>",
"AND yh.dike_name LIKE CONCAT('%',#{dto.dikeName},'%') ", "AND jd.dike_name LIKE CONCAT('%',#{dto.dikeName},'%') ",
"</if>", "</if>",
"<if test='dto.startDate != null'>", "<if test='dto.startDate != null'>",
"AND yh.start_date &gt;= #{dto.startDate} ", "AND yh.start_date &gt;= #{dto.startDate} ",
@ -51,6 +58,11 @@ public interface DfYhPlanMapper extends BaseMapper<DfYhPlan> {
"ORDER BY yh.create_time DESC", "ORDER BY yh.create_time DESC",
"</script>" "</script>"
}) })
@Results({
@Result(column = "doc", property = "doc", typeHandler = ListDocHandler.class),
@Result(column = "supplement", property = "supplements", typeHandler = ListDocHandler.class),
@Result(column = "responsible_person", property = "responsiblePerson", typeHandler = OperatorHandler.class)
})
IPage<DfYhPlanDetailDto> selectPage(Page<DfYhPlanSearchDto> page, @Param("dto") DfYhPlanSearchDto dto); IPage<DfYhPlanDetailDto> selectPage(Page<DfYhPlanSearchDto> page, @Param("dto") DfYhPlanSearchDto dto);
IPage<ApprovalDetailDto<DfYhPlanDetailDto>> approvalSearchPage(Page<DfYhPlanSearchDto> page, @Param("dto") ApprovalSearchDto<DfYhPlanSearchDto> dto); IPage<ApprovalDetailDto<DfYhPlanDetailDto>> approvalSearchPage(Page<DfYhPlanSearchDto> page, @Param("dto") ApprovalSearchDto<DfYhPlanSearchDto> dto);

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

@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.dto.ApprovalDetailDto; import com.kms.yxgh.common.dto.ApprovalDetailDto;
import com.kms.yxgh.common.dto.ApprovalSearchDto; import com.kms.yxgh.common.dto.ApprovalSearchDto;
import com.kms.yxgh.common.mapper.handler.ListSupplementHandler;
import com.kms.yxgh.common.mapper.handler.OperatorHandler;
import com.kms.yxgh.df.domain.DfYhRecord; import com.kms.yxgh.df.domain.DfYhRecord;
import com.kms.yxgh.df.dto.DfYhRecordApprovalDto; import com.kms.yxgh.df.dto.DfYhRecordApprovalDto;
import com.kms.yxgh.df.dto.DfYhRecordDetailDto; import com.kms.yxgh.df.dto.DfYhRecordDetailDto;
import com.kms.yxgh.df.dto.DfYhRecordSearchDto; import com.kms.yxgh.df.dto.DfYhRecordSearchDto;
import org.apache.ibatis.annotations.Param; 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.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -25,46 +29,48 @@ import java.util.Date;
public interface DfYhRecordMapper extends BaseMapper<DfYhRecord> { public interface DfYhRecordMapper extends BaseMapper<DfYhRecord> {
@Select("<script>" + @Select("<script>" +
"SELECT yhjl.id, yhjl.plan_id, yhjl.name, yhjl.before, yhjl.middle, yhjl.after, " + "SELECT yhjl.id, yhjl.plan_id, yhjl.name, yhjl.status, yhjl.supplement," +
"yhjl.maintenance_funds, yhjl.implement, yhjl.status, df.dike_code, df.dike_name, " + "yhjl.doc, yhjl.ledger_doc, yhjl.remark, yhjl.create_time, yhjl.update_time, " +
"yhjl.create_time, yhjl.update_time " + "df.dike_code, df.dike_name, df.dike_type " +
"jh.responsible_person " +
"FROM bs_sgc_df_yhjl yhjl " + "FROM bs_sgc_df_yhjl yhjl " +
"LEFT JOIN bs_sgc_df_gcda df ON yhjl.dike_code = df.dike_code " + "LEFT JOIN bs_sgc_df_yhjh jh ON jh.id = yhjl.plan_id " +
"LEFT JOIN att_dike_base df ON yhjl.dike_code = df.dike_code and df.expr_date is null " +
"WHERE 1=1 " + "WHERE 1=1 " +
"and df.expr_date is null " +
"<if test='searchDto.dikeCode != null '>" + "<if test='searchDto.dikeCode != null '>" +
"AND yhjl.dike_code = #{searchDto.dikeCode} " + "AND df.dike_code = #{searchDto.dikeCode} " +
"</if>" + "</if>" +
"<if test='searchDto.startCreatedTime != null'>" + "<if test='searchDto.dikeName != null '>" +
"AND yhjl.create_time &gt;= #{searchDto.startCreatedTime} " + "AND df.dike_name LIKE CONCAT('%',#{searchDto.dikeName},'%') " +
"</if>" + "</if>" +
"<if test='searchDto.endCreatedTime != null'>" + "<if test='searchDto.dikeType != null '>" +
"AND yhjl.create_time &lt;= #{searchDto.endCreatedTime} " + "AND df.dike_type = #{searchDto.dikeType} " +
"</if>" + "</if>" +
"<if test='searchDto.startUpdateTime != null'>" + "<if test='searchDto.startDate != null '>" +
"AND yhjl.update_time &gt;= #{searchDto.startUpdateTime} " + "AND jh.start_date &gt;= #{searchDto.startDate} " +
"</if>" + "</if>" +
"<if test='searchDto.endUpdateTime != null'>" + "<if test='searchDto.endDate != null '>" +
"AND yhjl.update_time &lt;= #{searchDto.endUpdateTime} " + "AND jh.end_date &lt;= #{searchDto.endDate} " +
"</if>" + "</if>" +
"<if test='searchDto.status != null and !searchDto.status.isEmpty()'>" + "<if test='searchDto.name != null '>" +
"AND yhjl.status = #{searchDto.status} " + "AND jh.name LIKE CONCAT('%',#{searchDto.name},'%') " +
"</if>" + "</if>" +
"<if test='searchDto.minRepairCost != null'>" + "<if test='searchDto.adcd != null '>" +
"AND yhjl.maintenance_funds &gt;= #{searchDto.minRepairCost} " + "AND df.adcd LIKE CONCAT(#{searchDto.adcd},'%') " +
"</if>" +
"<if test='searchDto.maxRepairCost != null'>" +
"AND yhjl.maintenance_funds &lt;= #{searchDto.maxRepairCost} " +
"</if>" + "</if>" +
"ORDER BY yhjl.create_time DESC" + "ORDER BY yhjl.create_time DESC" +
"</script>") "</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 = ListSupplementHandler.class),
@Result(column = "ledger_doc", property = "ledgerDoc", typeHandler = ListSupplementHandler.class)
})
IPage<DfYhRecordDetailDto> searchPage(IPage<DfYhRecordDetailDto> page, @Param("searchDto") DfYhRecordSearchDto searchDto); IPage<DfYhRecordDetailDto> searchPage(IPage<DfYhRecordDetailDto> page, @Param("searchDto") DfYhRecordSearchDto searchDto);
@Select("SELECT MAX(create_time) FROM bs_sgc_df_yhjl WHERE dike_code = #{dikeCode} ") @Select("SELECT MAX(create_time) FROM bs_sgc_df_yhjl WHERE dike_code = #{dikeCode} ")
Date getLastInsertTimeByDikeCode(@Param("dikeCode") String dikeCode); Date getLastInsertTimeByDikeCode(@Param("dikeCode") String dikeCode);
IPage<ApprovalDetailDto<DfYhRecordApprovalDto>> approvalSearchPage(Page<DfYhRecordSearchDto> page,@Param("dto") ApprovalSearchDto<DfYhRecordSearchDto> data); IPage<ApprovalDetailDto<DfYhRecordApprovalDto>> approvalSearchPage(Page<DfYhRecordSearchDto> page, @Param("dto") ApprovalSearchDto<DfYhRecordSearchDto> data);
} }

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

@ -50,8 +50,11 @@
<if test='dto.status != null and dto.status != ""'> <if test='dto.status != null and dto.status != ""'>
AND ts.status = #{dto.status} AND ts.status = #{dto.status}
</if> </if>
<if test="dto.condition.dikeType != null and dto.condition.dikeType != ''">
AND jb.dike_type = #{dto.condition.dikeType}
</if>
<if test='dto.condition.dikeCode != null and dto.condition.dikeCode != ""'> <if test='dto.condition.dikeCode != null and dto.condition.dikeCode != ""'>
AND yh.dike_code = #{dto.condition.dikeCode} AND jb.dike_code = #{dto.condition.dikeCode}
</if> </if>
<if test='dto.condition.name != null'> <if test='dto.condition.name != null'>
AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%') AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%')
@ -60,7 +63,7 @@
AND jb.adcd LIKE CONCAT(#{dto.condition.adcd},'%') AND jb.adcd LIKE CONCAT(#{dto.condition.adcd},'%')
</if> </if>
<if test='dto.condition.dikeName != null and dto.condition.dikeName != ""'> <if test='dto.condition.dikeName != null and dto.condition.dikeName != ""'>
AND yh.dike_name LIKE CONCAT('%',#{dto.condition.dikeName},'%') AND jb.dike_name LIKE CONCAT('%',#{dto.condition.dikeName},'%')
</if> </if>
<if test='dto.condition.startDate != null'> <if test='dto.condition.startDate != null'>
AND yh.start_date &gt;= #{dto.condition.startDate} AND yh.start_date &gt;= #{dto.condition.startDate}

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

@ -51,6 +51,9 @@
<if test='dto.condition.dikeCode != null and dto.condition.dikeCode != ""'> <if test='dto.condition.dikeCode != null and dto.condition.dikeCode != ""'>
AND yh.dike_code = #{dto.condition.dikeCode} AND yh.dike_code = #{dto.condition.dikeCode}
</if> </if>
<if test='dto.condition.dikeType != null and dto.condition.dikeType != ""'>
AND yh.dike_type = #{dto.condition.dikeType}
</if>
<if test='dto.condition.name != null'> <if test='dto.condition.name != null'>
AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%') AND yh.name LIKE CONCAT('%',#{dto.condition.name},'%')
</if> </if>

Loading…
Cancel
Save