xiangpei
2024-07-23 d8aecb329d3e1410346261be68caf2c44107a869
合同分页重构、报备审核不使用修改接口
11个文件已修改
4个文件已添加
278 ■■■■■ 已修改文件
ycl-common/src/main/java/enumeration/ContractStatus.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ReportService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/ContractStatus.java
New file
@@ -0,0 +1,18 @@
package enumeration;
/**
 * @author:xp
 * @date:2024/7/23 9:44
 */
public enum ContractStatus {
    /** 有效 */
    ACTIVE,
    /** 无效 */
    NOT_START,
    /** 已失效 */
    FINISHED
}
ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
@@ -1,6 +1,7 @@
package com.ycl.platform.base;
import com.fasterxml.jackson.annotation.JsonFormat;
import enumeration.ContractStatus;
import lombok.Data;
import java.util.Date;
@@ -23,4 +24,5 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java
@@ -71,4 +71,7 @@
    @TableField("end_create_time")
    private Date endCreateTime;
    /** 版本号:可用于查询历史审核记录 */
    @TableField("version")
    private Integer version;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportAuditingForm.java
New file
@@ -0,0 +1,47 @@
package com.ycl.platform.domain.form;
import com.ycl.platform.base.AbsForm;
import com.ycl.platform.domain.entity.Report;
import com.ycl.system.domain.group.Add;
import com.ycl.system.domain.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import java.util.Date;
/**
 * 报备表单
 *
 * @author xp
 * @since 2024-03-19
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "Report审核表单", description = "报备审核表单")
public class ReportAuditingForm {
    @NotNull(message = "请选择要审核的报备")
    private Integer id;
    @ApiModelProperty("审核意见")
    private String auditOpinion;
    @NotNull(message = "请给出审核结果")
    @ApiModelProperty("审核结果")
    private Boolean auditingResult;
    public static Report getEntityByForm(@NonNull ReportAuditingForm form, Report entity) {
        if(entity == null) {
          entity = new Report();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
New file
@@ -0,0 +1,24 @@
package com.ycl.platform.domain.query;
import com.ycl.platform.base.AbsQuery;
import enumeration.ContractStatus;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author:xp
 * @date:2024/7/23 9:40
 */
@Data
public class ContractQuery extends AbsQuery {
    @ApiModelProperty("合同名称")
    private String name;
    /**
     * @see ContractStatus
     */
    @ApiModelProperty("状态")
    private String status;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ContractVO.java
New file
@@ -0,0 +1,54 @@
package com.ycl.platform.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsVo;
import enumeration.ContractStatus;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
/**
 * @author:xp
 * @date:2024/7/23 9:59
 */
@Data
public class ContractVO extends AbsVo {
    private Long unitId;
    private String unitName;
    /**
     * 合同名称
     */
    private String name;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;
    /**
     * 合同附件
     */
    private String attachment;
    private Date createTime;
    private Date updateTime;
    private String ruleList;
    private MultipartFile file;
    private ContractStatus status;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java
@@ -70,7 +70,7 @@
    private Date endCreateTime;
    /**
     * 装填
     * 状态
     */
    private Integer status;
ycl-server/src/main/java/com/ycl/platform/controller/ReportController.java
@@ -2,6 +2,7 @@
import com.ycl.platform.domain.entity.Report;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.form.ReportAuditingForm;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.system.domain.group.Update;
@@ -87,6 +88,20 @@
        return reportService.all();
    }
    @GetMapping("/examine/record")
    @ApiOperation(value = "审核记录", notes = "审核记录")
    @PreAuthorize("@ss.hasPermi('system:report:record')")
    public Result examineRecord() {
        return reportService.examineRecord();
    }
    @PostMapping("/auditing")
    @ApiOperation(value = "审核", notes = "审核")
    @PreAuthorize("@ss.hasPermi('system:report:auditing')")
    public Result auditing(@RequestBody @Validated ReportAuditingForm form) {
        return reportService.auditing(form);
    }
    @PostMapping("/export")
    @ApiOperation(value = "导出", notes = "导出")
    @PreAuthorize("@ss.hasPermi('system:report:export')")
ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java
@@ -5,6 +5,7 @@
import com.ycl.platform.domain.entity.CalculateMoneyRule;
import com.ycl.platform.domain.entity.TContract;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.query.ContractQuery;
import com.ycl.platform.domain.query.YwUnitQuery;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.service.ITContractService;
@@ -37,8 +38,8 @@
    @PreAuthorize("@ss.hasPermi('system:contract:list')")
    @GetMapping("/list")
    public List<TContract> list() {
        return tContractService.selectAll();
    public Result page(ContractQuery query) {
        return tContractService.selectAll(query);
    }
    @PreAuthorize("@ss.hasPermi('system:contract:query')")
ycl-server/src/main/java/com/ycl/platform/mapper/TContractMapper.java
@@ -1,7 +1,12 @@
package com.ycl.platform.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.ycl.platform.domain.entity.TContract;
import com.ycl.platform.domain.query.ContractQuery;
import com.ycl.platform.domain.vo.ContractVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -12,5 +17,8 @@
 * @date 2024-03-12
 */
public interface TContractMapper extends BaseMapper<TContract> {
    List<TContract> selectAll();
    IPage<ContractVO> getPage(IPage page, @Param("query") ContractQuery query);
}
ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.entity.CalculateMoneyRule;
import com.ycl.platform.domain.entity.TContract;
import com.ycl.platform.domain.query.ContractQuery;
import com.ycl.system.AjaxResult;
import com.ycl.system.Result;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
@@ -31,7 +33,13 @@
     */
    AjaxResult importData(MultipartFile file, TContract tContract);
    List<TContract> selectAll();
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    Result selectAll(ContractQuery query);
    /**
     * 根据合同id查询钱核算规则
ycl-server/src/main/java/com/ycl/platform/service/ReportService.java
@@ -2,6 +2,7 @@
import com.ycl.platform.domain.entity.Report;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.form.ReportAuditingForm;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.system.Result;
import com.ycl.platform.domain.form.ReportForm;
@@ -69,4 +70,18 @@
     * @return
     */
    List<ReportVO> export(ReportQuery query);
    /**
     * 获取审核记录
     *
     * @return
     */
    Result examineRecord();
    /**
     * 审核报备
     * @param form
     * @return
     */
    Result auditing(ReportAuditingForm form);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -8,6 +8,7 @@
import com.ycl.platform.domain.entity.YwPeople;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.entity.YwUnit;
import com.ycl.platform.domain.form.ReportAuditingForm;
import com.ycl.platform.domain.form.ReportForm;
import com.ycl.platform.domain.query.ReportQuery;
import com.ycl.platform.domain.vo.ReportVO;
@@ -28,6 +29,7 @@
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -196,4 +198,27 @@
        return vos;
    }
    @Override
    public Result examineRecord() {
        return null;
    }
    @Override
    public Result auditing(ReportAuditingForm form) {
        Report report = baseMapper.selectById(form.getId());
        if (Objects.isNull(report)) {
            throw new RuntimeException("审核的报备不存在");
        }
        if (form.getAuditingResult()) {
            report.setStatus(1);
        } else {
            report.setStatus(2);
        }
        report.setAuditOpinion(form.getAuditOpinion());
        report.setAuditingTime(new Date());
        baseMapper.updateById(report);
        return Result.ok("操作成功");
    }
}
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -4,7 +4,7 @@
import com.alibaba.excel.write.merge.LoopMergeStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.handler.CommentWriteHandler;
@@ -12,18 +12,22 @@
import com.ycl.platform.domain.entity.CalculateMoneyRule;
import com.ycl.platform.domain.entity.CalculateRule;
import com.ycl.platform.domain.entity.TContract;
import com.ycl.platform.domain.query.ContractQuery;
import com.ycl.platform.domain.vo.ContractVO;
import com.ycl.platform.mapper.TContractMapper;
import com.ycl.platform.service.ICalculateRuleService;
import com.ycl.platform.service.ITContractService;
import com.ycl.system.AjaxResult;
import com.ycl.system.Result;
import com.ycl.system.page.PageUtil;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
import enumeration.ContractStatus;
import enumeration.general.RuleDeductCategoryEnum;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
@@ -196,8 +200,20 @@
    }
    @Override
    public List<TContract> selectAll() {
        return baseMapper.selectAll();
    public Result selectAll(ContractQuery query) {
        IPage<ContractVO> page = PageUtil.getPage(query, ContractVO.class);
        baseMapper.getPage(page, query);
        page.getRecords().stream().forEach(contract -> {
            Date now = new Date();
            if (now.before(contract.getStartTime())) {
                contract.setStatus(ContractStatus.NOT_START);
            } else if (now.after(contract.getEndTime())) {
                contract.setStatus(ContractStatus.FINISHED);
            } else {
                contract.setStatus(ContractStatus.ACTIVE);
            }
        });
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    @Override
ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -12,4 +12,28 @@
        order by create_time desc
    </select>
    <select id="getPage" resultType="com.ycl.platform.domain.vo.ContractVO">
        select a.*, b.unit_name
        from t_contract a
                 left join t_yw_unit b on a.unit_id = b.id and b.deleted = 0
        where a.deleted = 0
        <if test="query.name != null and query.name != ''">
            and a.name like concat('%', #{query.name}, '%')
        </if>
        <if test="query.status != null and query.status != ''">
            <choose>
                <when test="query.status == 'ACTIVE'">
                    and a.start_time  &lt; sysdate() and a.end_time > sysdate()
                </when>
                <when test="query.status == 'NOT_START'">
                    and a.start_time  > sysdate()
                </when>
                <when test="query.status == 'FINISHED'">
                    and a.end_time &lt; sysdate()
                </when>
            </choose>
        </if>
        order by create_time desc
    </select>
</mapper>