mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2025-02-20 03:00:34 +08:00
✨ CRM:待办事项(接入合同)
This commit is contained in:
parent
0b0830f445
commit
53ebd39c73
@ -215,18 +215,18 @@ public class CrmContractController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/check-contract-count")
|
@GetMapping("/audit-count")
|
||||||
@Operation(summary = "获得待审核合同数量")
|
@Operation(summary = "获得待审核合同数量")
|
||||||
@PreAuthorize("@ss.hasPermission('crm:contract:query')")
|
@PreAuthorize("@ss.hasPermission('crm:contract:query')")
|
||||||
public CommonResult<Long> getCheckContractCount() {
|
public CommonResult<Long> getAuditContractCount() {
|
||||||
return success(contractService.getCheckContractCount(getLoginUserId()));
|
return success(contractService.getAuditContractCount(getLoginUserId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/end-contract-count")
|
@GetMapping("/remind-count")
|
||||||
@Operation(summary = "获得即将到期的合同数量")
|
@Operation(summary = "获得即将到期(提醒)的合同数量")
|
||||||
@PreAuthorize("@ss.hasPermission('crm:contract:query')")
|
@PreAuthorize("@ss.hasPermission('crm:contract:query')")
|
||||||
public CommonResult<Long> getEndContractCount() {
|
public CommonResult<Long> getRemindContractCount() {
|
||||||
return success(contractService.getEndContractCount(getLoginUserId()));
|
return success(contractService.getRemindContractCount(getLoginUserId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ 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.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||||
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO;
|
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO;
|
||||||
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
|
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.CrmAuditStatusEnum;
|
||||||
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
@ -49,7 +50,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
|
|||||||
.orderByDesc(CrmContractDO::getId));
|
.orderByDesc(CrmContractDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) {
|
default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId, CrmContractConfigDO config) {
|
||||||
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
||||||
// 拼接数据权限的查询条件
|
// 拼接数据权限的查询条件
|
||||||
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
||||||
@ -67,10 +68,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
|
|||||||
LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
|
LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
|
||||||
LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
|
LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
|
||||||
if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { // 即将到期
|
if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { // 即将到期
|
||||||
// TODO: @芋艿 需要配置 提前提醒天数
|
|
||||||
int REMIND_DAYS = 20;
|
|
||||||
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
||||||
.between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
|
.between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays()));
|
||||||
} else if (CrmContractPageReqVO.EXPIRY_TYPE_EXPIRED.equals(pageReqVO.getExpiryType())) { // 已到期
|
} else if (CrmContractPageReqVO.EXPIRY_TYPE_EXPIRED.equals(pageReqVO.getExpiryType())) { // 已到期
|
||||||
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
||||||
.lt(CrmContractDO::getEndTime, endOfToday);
|
.lt(CrmContractDO::getEndTime, endOfToday);
|
||||||
@ -95,17 +94,17 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
|
|||||||
return selectCount(CrmContractDO::getBusinessId, businessId);
|
return selectCount(CrmContractDO::getBusinessId, businessId);
|
||||||
}
|
}
|
||||||
|
|
||||||
default Long selectCheckContractCount(Long userId) {
|
default Long selectCountByAudit(Long userId) {
|
||||||
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
||||||
// 我负责的 + 非公海
|
// 我负责的 + 非公海
|
||||||
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
||||||
CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
|
CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
|
||||||
// 未提交 or 审核不通过
|
// 未审核
|
||||||
query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus());
|
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
|
||||||
return selectCount(query);
|
return selectCount(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
default Long selectEndContractCount(Long userId) {
|
default Long selectCountByRemind(Long userId, CrmContractConfigDO config) {
|
||||||
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>();
|
||||||
// 我负责的 + 非公海
|
// 我负责的 + 非公海
|
||||||
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(),
|
||||||
@ -113,10 +112,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> {
|
|||||||
// 即将到期
|
// 即将到期
|
||||||
LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
|
LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
|
||||||
LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
|
LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
|
||||||
// TODO: @dhb52 需要配置 提前提醒天数
|
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) // 必须审批通过!
|
||||||
int REMIND_DAYS = 20;
|
.between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays()));
|
||||||
query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus())
|
|
||||||
.between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
|
|
||||||
return selectCount(query);
|
return selectCount(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,14 +162,14 @@ public interface CrmContractService {
|
|||||||
* @param userId 用户编号
|
* @param userId 用户编号
|
||||||
* @return 提醒数量
|
* @return 提醒数量
|
||||||
*/
|
*/
|
||||||
Long getCheckContractCount(Long userId);
|
Long getAuditContractCount(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得即将到期的合同数量
|
* 获得即将到期(提醒)的合同数量
|
||||||
*
|
*
|
||||||
* @param userId 用户编号
|
* @param userId 用户编号
|
||||||
* @return 提醒数量
|
* @return 提醒数量
|
||||||
*/
|
*/
|
||||||
Long getEndContractCount(Long userId);
|
Long getRemindContractCount(Long userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
|||||||
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO;
|
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO;
|
||||||
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractSaveReqVO;
|
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractTransferReqVO;
|
import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractTransferReqVO;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO;
|
||||||
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
|
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
|
||||||
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO;
|
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO;
|
||||||
import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper;
|
import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper;
|
||||||
@ -83,6 +84,8 @@ public class CrmContractServiceImpl implements CrmContractService {
|
|||||||
private CrmBusinessService businessService;
|
private CrmBusinessService businessService;
|
||||||
@Resource
|
@Resource
|
||||||
private CrmContactService contactService;
|
private CrmContactService contactService;
|
||||||
|
@Resource
|
||||||
|
private CrmContractConfigService contractConfigService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AdminUserApi adminUserApi;
|
private AdminUserApi adminUserApi;
|
||||||
@ -172,8 +175,6 @@ public class CrmContractServiceImpl implements CrmContractService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO @合同待定:缺一个取消合同的接口;只有草稿、审批中可以取消;CrmAuditStatusEnum
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验关联数据是否存在
|
* 校验关联数据是否存在
|
||||||
*
|
*
|
||||||
@ -314,7 +315,7 @@ public class CrmContractServiceImpl implements CrmContractService {
|
|||||||
contractMapper.updateById(new CrmContractDO().setId(id).setAuditStatus(auditStatus));
|
contractMapper.updateById(new CrmContractDO().setId(id).setAuditStatus(auditStatus));
|
||||||
}
|
}
|
||||||
|
|
||||||
//======================= 查询相关 =======================
|
// ======================= 查询相关 =======================
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.READ)
|
@CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.READ)
|
||||||
@ -332,7 +333,16 @@ public class CrmContractServiceImpl implements CrmContractService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<CrmContractDO> getContractPage(CrmContractPageReqVO pageReqVO, Long userId) {
|
public PageResult<CrmContractDO> getContractPage(CrmContractPageReqVO pageReqVO, Long userId) {
|
||||||
return contractMapper.selectPage(pageReqVO, userId);
|
// 1. 即将到期,需要查询合同配置
|
||||||
|
CrmContractConfigDO config = null;
|
||||||
|
if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) {
|
||||||
|
config = contractConfigService.getContractConfig();
|
||||||
|
if (config != null && Boolean.FALSE.equals(config.getNotifyEnabled())) {
|
||||||
|
config = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 2. 查询分页
|
||||||
|
return contractMapper.selectPage(pageReqVO, userId, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -367,16 +377,18 @@ public class CrmContractServiceImpl implements CrmContractService {
|
|||||||
return contractProductMapper.selectListByContractId(contactId);
|
return contractProductMapper.selectListByContractId(contactId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO @合同待定:需要新增一个 ContractConfigDO 表,合同配置,重点是到期提醒;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getCheckContractCount(Long userId) {
|
public Long getAuditContractCount(Long userId) {
|
||||||
return contractMapper.selectCheckContractCount(userId);
|
return contractMapper.selectCountByAudit(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getEndContractCount(Long userId) {
|
public Long getRemindContractCount(Long userId) {
|
||||||
return contractMapper.selectEndContractCount(userId);
|
CrmContractConfigDO config = contractConfigService.getContractConfig();
|
||||||
|
if (config == null || Boolean.FALSE.equals(config.getNotifyEnabled())) {
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
return contractMapper.selectCountByRemind(userId, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user