From 61ba3c96802112ecd88b750e326742c14a85051a Mon Sep 17 00:00:00 2001 From: jiangpeng Date: Mon, 29 Jun 2026 16:51:22 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=8E=A8=E9=80=81CRM=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vue/VueProjectOrderInfoController.java | 10 +++- .../ruoyi/sip/domain/OmsSendCrmErrorLog.java | 51 +++++++++++++++++++ .../sip/mapper/OmsSendCrmErrorLogMapper.java | 8 +++ .../service/impl/ProjectInfoServiceImpl.java | 23 ++++++++- .../mapper/sip/OmsSendCrmErrorLogMapper.xml | 10 ++++ 5 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsSendCrmErrorLog.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsSendCrmErrorLogMapper.java create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/OmsSendCrmErrorLogMapper.xml diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java index 6202e2cd..66768a1e 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueProjectOrderInfoController.java @@ -59,7 +59,10 @@ public class VueProjectOrderInfoController extends BaseController { @RequiresPermissions(value = {"project:order:list", "project:order:approve"}, logical = Logical.OR) @GetMapping("/approve/list") public TableDataInfo listApprove(ProjectOrderInfo projectOrderInfo) { - projectOrderInfo.setApprove(ShiroUtils.getUserId().toString()); + // admin用户可查看所有待审批数据,不按审批人过滤 + if (!ShiroUtils.getSysUser().isAdmin()) { + projectOrderInfo.setApprove(ShiroUtils.getUserId().toString()); + } startPage(); List list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); clearPage(); @@ -69,7 +72,10 @@ public class VueProjectOrderInfoController extends BaseController { @RequiresPermissions(value = {"project:order:list", "project:order:approve"}, logical = Logical.OR) @GetMapping("/approve/log/list") public TableDataInfo listApproveLog(ProjectOrderInfo projectOrderInfo) { - projectOrderInfo.setApproveLog(ShiroUtils.getUserId().toString()); + // admin用户可查看所有审批历史数据,不按审批人过滤 + if (!ShiroUtils.getSysUser().isAdmin()) { + projectOrderInfo.setApproveLog(ShiroUtils.getUserId().toString()); + } startPage(); List list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); clearPage(); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsSendCrmErrorLog.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsSendCrmErrorLog.java new file mode 100644 index 00000000..f52e8579 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OmsSendCrmErrorLog.java @@ -0,0 +1,51 @@ +package com.ruoyi.sip.domain; + +/** + * 推送CRM失败错误日志 + */ +public class OmsSendCrmErrorLog { + + /** 主键 */ + private Integer id; + + /** 项目ID */ + private Long projectId; + + /** 项目编号 */ + private String projectCode; + + /** 错误信息 */ + private String msg; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Long getProjectId() { + return projectId; + } + + public void setProjectId(Long projectId) { + this.projectId = projectId; + } + + public String getProjectCode() { + return projectCode; + } + + public void setProjectCode(String projectCode) { + this.projectCode = projectCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsSendCrmErrorLogMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsSendCrmErrorLogMapper.java new file mode 100644 index 00000000..b0a62de2 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/OmsSendCrmErrorLogMapper.java @@ -0,0 +1,8 @@ +package com.ruoyi.sip.mapper; + +import com.ruoyi.sip.domain.OmsSendCrmErrorLog; + +public interface OmsSendCrmErrorLogMapper { + + int insert(OmsSendCrmErrorLog log); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java index c093dc6b..264d96a6 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java @@ -27,6 +27,7 @@ import com.ruoyi.sip.dto.HomepageQueryDto; import com.ruoyi.sip.dto.StatisticsDetailDto; import com.ruoyi.sip.dto.StatisticsDto; import com.ruoyi.sip.dto.integration.OpportunityUpdateRequestDto; +import com.ruoyi.sip.mapper.OmsSendCrmErrorLogMapper; import com.ruoyi.sip.mapper.ProjectInfoMapper; import com.ruoyi.sip.service.*; import liquibase.hub.model.Project; @@ -94,6 +95,8 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { private IProjectOrderInfoService orderInfoService; @Autowired private IOpportunityIntegrationService opportunityIntegrationService; + @Autowired + private OmsSendCrmErrorLogMapper sendCrmErrorLogMapper; private static final String PROJECT_CODE_PREFIX = "V"; private static final Integer PROJECT_CODE_LENGTH = 6; @@ -348,6 +351,20 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { opportunityIntegrationService.updateOpportunity(requestDto); } catch (Exception e) { log.error("项目更新后同步商机失败, projectId:{}, opportunityCode:{}", projectInfo.getId(), requestDto.getOpportunityCode(), e); + // 将异常信息记录到错误日志表 + try { + OmsSendCrmErrorLog errorLog = new OmsSendCrmErrorLog(); + errorLog.setProjectId(projectInfo.getId()); + errorLog.setProjectCode(requestDto.getOpportunityCode()); + String errMsg = e.getMessage(); + if (errMsg != null && errMsg.length() > 10240) { + errMsg = errMsg.substring(0, 10240); + } + errorLog.setMsg(errMsg); + sendCrmErrorLogMapper.insert(errorLog); + } catch (Exception ex) { + log.error("记录推送CRM错误日志失败, projectId:{}", projectInfo.getId(), ex); + } } }; if (TransactionSynchronizationManager.isSynchronizationActive()) { @@ -376,7 +393,11 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { if (projectInfo.getId() != null) { projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(Collections.singletonList(projectInfo.getId())); if (CollUtil.isNotEmpty(projectOrderInfos)) { - requestDto.setActualSignedAmount(projectOrderInfos.get(0).getShipmentAmount()); + ProjectOrderInfo firstOrder = projectOrderInfos.get(0); + BigDecimal actualSignedAmount = firstOrder.getActualPurchaseAmount() != null + ? firstOrder.getActualPurchaseAmount() + : firstOrder.getShipmentAmount(); + requestDto.setActualSignedAmount(actualSignedAmount); } } requestDto.setExpectedCloseDate(formatterDate(projectInfo.getEstimatedOrderTime(), DateUtils.YYYY_MM_DD)); diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsSendCrmErrorLogMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsSendCrmErrorLogMapper.xml new file mode 100644 index 00000000..d7c2cb64 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsSendCrmErrorLogMapper.xml @@ -0,0 +1,10 @@ + + + + + + insert into oms_send_crm_error_log (project_id, project_code, msg) + values (#{projectId}, #{projectCode}, #{msg}) + + +