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 < 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 < sysdate() </when> </choose> </if> order by create_time desc </select> </mapper>