fix:推送CRM失败记录日志

dev_1.0.2
jiangpeng 2026-06-29 16:51:22 +08:00
parent d0d6919b11
commit 61ba3c9680
5 changed files with 99 additions and 3 deletions

View File

@ -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<ProjectOrderInfo> 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<ProjectOrderInfo> list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo);
clearPage();

View File

@ -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;
}
}

View File

@ -0,0 +1,8 @@
package com.ruoyi.sip.mapper;
import com.ruoyi.sip.domain.OmsSendCrmErrorLog;
public interface OmsSendCrmErrorLogMapper {
int insert(OmsSendCrmErrorLog log);
}

View File

@ -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));

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.sip.mapper.OmsSendCrmErrorLogMapper">
<insert id="insert" parameterType="com.ruoyi.sip.domain.OmsSendCrmErrorLog">
insert into oms_send_crm_error_log (project_id, project_code, msg)
values (#{projectId}, #{projectCode}, #{msg})
</insert>
</mapper>