|
@@ -1,16 +1,19 @@
|
|
|
package cn.iocoder.yudao.module.crm.dal.mysql.contract;
|
|
|
|
|
|
+import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
|
|
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractPageReqVO;
|
|
|
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
|
|
|
+import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum;
|
|
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
|
|
import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
|
|
|
@@ -39,19 +42,35 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
|
|
|
}
|
|
|
|
|
|
default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) {
|
|
|
- MPJLambdaWrapperX<CrmContractDO> mpjLambdaWrapperX = new MPJLambdaWrapperX<>();
|
|
|
+ MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
|
|
// 拼接数据权限的查询条件
|
|
|
- CrmQueryWrapperUtils.appendPermissionCondition(mpjLambdaWrapperX, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
|
|
+ CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
|
|
CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE);
|
|
|
// 拼接自身的查询条件
|
|
|
- mpjLambdaWrapperX.selectAll(CrmContractDO.class)
|
|
|
+ query.selectAll(CrmContractDO.class)
|
|
|
.likeIfPresent(CrmContractDO::getNo, pageReqVO.getNo())
|
|
|
.likeIfPresent(CrmContractDO::getName, pageReqVO.getName())
|
|
|
.eqIfPresent(CrmContractDO::getCustomerId, pageReqVO.getCustomerId())
|
|
|
.eqIfPresent(CrmContractDO::getBusinessId, pageReqVO.getBusinessId())
|
|
|
.eqIfPresent(CrmContractDO::getAuditStatus, pageReqVO.getAuditStatus())
|
|
|
.orderByDesc(CrmContractDO::getId);
|
|
|
- return selectJoinPage(pageReqVO, CrmContractDO.class, mpjLambdaWrapperX);
|
|
|
+
|
|
|
+ // Backlog: 即将到期的合同
|
|
|
+ LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
|
|
|
+ LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
|
|
|
+ if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) {
|
|
|
+ // 即将到期
|
|
|
+ // TODO: @芋艿 需要配置 提前提醒天数
|
|
|
+ int REMIND_DAYS = 20;
|
|
|
+ query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
|
|
+ .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
|
|
|
+ } else if (CrmContractPageReqVO.EXPIRY_TYPE_EXPIRED.equals(pageReqVO.getExpiryType())) {
|
|
|
+ // 已到期
|
|
|
+ query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
|
|
+ .lt(CrmContractDO::getEndTime, endOfToday);
|
|
|
+ }
|
|
|
+
|
|
|
+ return selectJoinPage(pageReqVO, CrmContractDO.class, query);
|
|
|
}
|
|
|
|
|
|
default List<CrmContractDO> selectBatchIds(Collection<Long> ids, Long userId) {
|