From f4ef6d1f4489e0d4cbba1845792945b924c16228 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 十月 2026 18:29:56 +0800
Subject: [PATCH] feat: 客户签订合同统计 + MES 首页质检合格率
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
index 4852463..7936917 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
@@ -10,6 +10,7 @@
import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
+import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
@@ -272,6 +273,8 @@
@Override
@Transactional(rollbackFor = Exception.class)
+ @LogRecord(type = CRM_CONTRACT_TYPE, subType = CRM_CONTRACT_IMPORT_SUB_TYPE, bizNo = "0",
+ success = CRM_CONTRACT_IMPORT_SUCCESS)
public CrmContractImportRespVO importContractList(List<CrmContractImportExcelVO> importList) {
CrmContractImportRespVO respVO = CrmContractImportRespVO.builder()
.createList(new ArrayList<>())
@@ -279,6 +282,8 @@
.failureList(new LinkedHashMap<>())
.build();
if (CollUtil.isEmpty(importList)) {
+ // 绌烘枃浠朵篃瑕佺粰鏃ュ織鏂囨鍏滃簳锛岄伩鍏� {{#importSummary}} 鍙栦笉鍒板��
+ OperateLogUtils.putImportSummary(respVO.getCreateList(), respVO.getUpdateList(), respVO.getFailureList());
return respVO;
}
@@ -317,6 +322,8 @@
respVO.getFailureList().put(label, resolveImportErrorMessage(ex));
}
}
+ // 璁板綍瀵煎叆缁撴灉姹囨�伙紝渚� @LogRecord 鐨� success 鏂囨寮曠敤
+ OperateLogUtils.putImportSummary(respVO.getCreateList(), respVO.getUpdateList(), respVO.getFailureList());
return respVO;
}
@@ -546,6 +553,15 @@
}
// 2. 鏍¢獙鍒嗙被鍜屾祦绋嬪畾涔夋槸鍚﹀瓨鍦�
+ // 鍏ㄥ眬鍏嶅鎵癸細涓氬姟鏍¢獙閫氳繃鍚庣洿鎺ユ墽琛屽鎵归�氳繃閫昏緫锛屾棤闇�娴佺▼妯″瀷銆�
+ if (bpmProcessInstanceApi.isGlobalAutoApprove()) {
+ contractMapper.updateById(new CrmContractDO().setId(id).setProcessInstanceId("")
+ .setAuditStatus(CrmAuditStatusEnum.PROCESS.getStatus()));
+ updateContractAuditStatus(id, cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum.APPROVE.getStatus());
+ LogRecordContext.putVariable("contractName", contract.getName());
+ return;
+ }
+
validateContractApproveCategoryAndProcessDefinition();
// 3. 鏍¢獙浼犲叆鐨勬祦绋嬪畾涔� Key 鏄惁灞炰簬璇ュ垎绫讳笖澶勪簬婵�娲荤姸鎬�
@@ -721,6 +737,16 @@
}
@Override
+ public Map<Long, Long> getContractCountMapByCustomerIds(Collection<Long> customerIds) {
+ return contractMapper.selectContractCountMapByCustomerIds(customerIds);
+ }
+
+ @Override
+ public Map<Long, BigDecimal> getContractPriceMapByCustomerIds(Collection<Long> customerIds) {
+ return contractMapper.selectContractPriceMapByCustomerIds(customerIds);
+ }
+
+ @Override
public List<CrmContractProductDO> getContractProductListByContractId(Long contactId) {
return contractProductMapper.selectListByContractId(contactId);
}
--
Gitblit v1.9.3