1、调整对接第三方接口逻辑
This commit is contained in:
@@ -28,6 +28,10 @@ import com.sdm.common.log.CoreLogger;
|
||||
import com.sdm.common.utils.DateUtils;
|
||||
import com.sdm.common.utils.RandomUtil;
|
||||
import com.sdm.common.utils.excel.ExcelUtil;
|
||||
import com.sdm.outbridge.entity.LyricVMainPlanDM;
|
||||
import com.sdm.outbridge.entity.LyricVTodoEmulationInfoDM;
|
||||
import com.sdm.outbridge.service.lyric.LyricVMainPlanDMService;
|
||||
import com.sdm.outbridge.service.lyric.LyricVTodoInfoService;
|
||||
import com.sdm.project.dao.SimulationDemandMapper;
|
||||
import com.sdm.project.dao.SimulationNodeMapper;
|
||||
import com.sdm.project.dao.SimulationProjectMapper;
|
||||
@@ -114,7 +118,10 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
public static final String SYNC_PROJECT_SOURCE = "同步";
|
||||
|
||||
@Autowired
|
||||
private ILyricInternalService lyricInternalService;
|
||||
private LyricVMainPlanDMService lyricVMainPlanDMService;
|
||||
|
||||
@Autowired
|
||||
private LyricVTodoInfoService lyricVTodoInfoService;
|
||||
|
||||
|
||||
@Transactional
|
||||
@@ -166,9 +173,9 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
String nodeType = addNode.getNodeType();
|
||||
if (SYNC_PROJECT_SOURCE.equals(projectSource) && NodeTypeEnum.PROJECT.getValue().equals(nodeType)) {
|
||||
// 同步待办信息
|
||||
lyricInternalService.getTodoListByProjectNum(addNode.getNodeCode());
|
||||
getTodoListByProjectNum(addNode.getNodeCode());
|
||||
// TODO 同步主计划信息
|
||||
lyricInternalService.getMainPlanListByProjectId(addNode.getProjectId(),addNode.getUuid());
|
||||
getMainPlanListByProjectId(addNode.getProjectId(),addNode.getUuid());
|
||||
}
|
||||
}
|
||||
return SdmResponse.success(addNodeList);
|
||||
@@ -1717,4 +1724,385 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
public SdmResponse getTodoListByProjectNum(String projectNum) {
|
||||
log.info("同步代办时,项目号为:{}", projectNum);
|
||||
if (StringUtils.isBlank(projectNum)) {
|
||||
log.error("同步待办时,项目号不能为空");
|
||||
return SdmResponse.failed("同步待办时,项目号不能为空");
|
||||
}
|
||||
// 查询
|
||||
List<LyricVTodoEmulationInfoDM> todoInfoList = lyricVTodoInfoService.lambdaQuery().eq(LyricVTodoEmulationInfoDM::getProject, projectNum)
|
||||
.list();
|
||||
log.info("同步代办时,todoInfoList:{}", todoInfoList);
|
||||
// 过滤掉数据库中已经有的需求
|
||||
if (CollectionUtils.isEmpty(todoInfoList)) {
|
||||
log.info("未同步到待办");
|
||||
return SdmResponse.success();
|
||||
}
|
||||
log.info("同步到{}条待办", todoInfoList.size());
|
||||
List<SpdmDemandVo> allDemandList = demandMapper.getAllList();
|
||||
if (CollectionUtils.isNotEmpty(allDemandList)) {
|
||||
List<String> demandCodeList = allDemandList.stream().map(SpdmDemandVo::getDemandCode).toList();
|
||||
todoInfoList = todoInfoList.stream().filter(todoInfo -> !demandCodeList.contains(String.valueOf(todoInfo.getTodoId()))).toList();
|
||||
if (CollectionUtils.isEmpty(todoInfoList)) {
|
||||
log.info("本次同步到的待办都已经进行过同步");
|
||||
return SdmResponse.success();
|
||||
}
|
||||
}
|
||||
Long tenantId = ThreadLocalContext.getTenantId();
|
||||
Long jobNumber = ThreadLocalContext.getUserId();
|
||||
String uuid;
|
||||
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
||||
for (LyricVTodoEmulationInfoDM emulation : todoInfoList) {
|
||||
try {
|
||||
List<SpdmDemandExtraReq> extras = new ArrayList<>();
|
||||
List<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
|
||||
// 需求的基础属性
|
||||
SpdmAddDemandReq spdmAddDemandReq = new SpdmAddDemandReq();
|
||||
uuid = RandomUtil.generateString(32);
|
||||
spdmAddDemandReq.setUuid(uuid);
|
||||
spdmAddDemandReq.setDemandName(emulation.getEmulationDemand());
|
||||
if (ObjectUtils.isNotEmpty(emulation.getTodoId())) {
|
||||
spdmAddDemandReq.setDemandCode(String.valueOf(emulation.getTodoId()));
|
||||
}
|
||||
spdmAddDemandReq.setDemandType(emulation.getEmulationType());
|
||||
spdmAddDemandReq.setDemandStatus("0");
|
||||
spdmAddDemandReq.setAchieveStatus("0");
|
||||
spdmAddDemandReq.setProgress(0);
|
||||
spdmAddDemandReq.setBeginTime(emulation.getPlanStartTime());
|
||||
spdmAddDemandReq.setEndTime(emulation.getClosedTime());
|
||||
spdmAddDemandReq.setProjectId(emulation.getProject());
|
||||
spdmAddDemandReq.setPhaseId(emulation.getProjectStage());
|
||||
spdmAddDemandReq.setDemandSource(SYNC_PROJECT_SOURCE);
|
||||
// 需求的额外属性
|
||||
SpdmDemandExtraReq extraReq1 = new SpdmDemandExtraReq();
|
||||
extraReq1.setDemandId(uuid);
|
||||
extraReq1.setPropertyName("emulationResult");
|
||||
extraReq1.setPropertyValue(emulation.getEmulationResult());
|
||||
extras.add(extraReq1);
|
||||
SpdmDemandExtraReq extraReq2 = new SpdmDemandExtraReq();
|
||||
extraReq2.setDemandId(uuid);
|
||||
extraReq2.setPropertyName("robotBrand");
|
||||
extraReq2.setPropertyValue(emulation.getRobotBrand());
|
||||
extras.add(extraReq2);
|
||||
SpdmDemandExtraReq extraReq3 = new SpdmDemandExtraReq();
|
||||
extraReq3.setDemandId(uuid);
|
||||
extraReq3.setPropertyName("axis");
|
||||
extraReq3.setPropertyValue(emulation.getAxis());
|
||||
extras.add(extraReq3);
|
||||
SpdmDemandExtraReq extraReq4 = new SpdmDemandExtraReq();
|
||||
extraReq4.setDemandId(uuid);
|
||||
extraReq4.setPropertyName("beatRequirements");
|
||||
extraReq4.setPropertyValue(emulation.getBeatRequirements());
|
||||
extras.add(extraReq4);
|
||||
SpdmDemandExtraReq extraReq5 = new SpdmDemandExtraReq();
|
||||
extraReq5.setDemandId(uuid);
|
||||
extraReq5.setPropertyName("threeDimensionalReposito");
|
||||
extraReq5.setPropertyValue(emulation.getThreeDimensionalRepositoryPath());
|
||||
extras.add(extraReq5);
|
||||
SpdmDemandExtraReq extraReq6 = new SpdmDemandExtraReq();
|
||||
extraReq6.setDemandId(uuid);
|
||||
extraReq6.setPropertyName("resultPath");
|
||||
extraReq6.setPropertyValue(emulation.getResultPath());
|
||||
extras.add(extraReq6);
|
||||
SpdmDemandExtraReq extraReq7 = new SpdmDemandExtraReq();
|
||||
extraReq7.setDemandId(uuid);
|
||||
extraReq7.setPropertyName("resultDescribe");
|
||||
extraReq7.setPropertyValue(emulation.getResultDescribe());
|
||||
extras.add(extraReq7);
|
||||
SpdmDemandExtraReq extraReq8 = new SpdmDemandExtraReq();
|
||||
extraReq8.setDemandId(uuid);
|
||||
extraReq8.setPropertyName("analysisType");
|
||||
extraReq8.setPropertyValue(emulation.getAnalysisType());
|
||||
extras.add(extraReq8);
|
||||
SpdmDemandExtraReq extraReq11 = new SpdmDemandExtraReq();
|
||||
extraReq11.setDemandId(uuid);
|
||||
extraReq11.setPropertyName("software");
|
||||
extraReq11.setPropertyValue(emulation.getSoftware());
|
||||
extras.add(extraReq11);
|
||||
SpdmDemandExtraReq extraReq12 = new SpdmDemandExtraReq();
|
||||
extraReq12.setDemandId(uuid);
|
||||
extraReq12.setPropertyName("type");
|
||||
extraReq12.setPropertyValue(emulation.getType());
|
||||
extras.add(extraReq12);
|
||||
SpdmDemandExtraReq extraReq13 = new SpdmDemandExtraReq();
|
||||
extraReq13.setDemandId(uuid);
|
||||
extraReq13.setPropertyName("resultFileId");
|
||||
extraReq13.setPropertyValue(emulation.getResultFileId());
|
||||
extras.add(extraReq13);
|
||||
SpdmDemandExtraReq extraReq14 = new SpdmDemandExtraReq();
|
||||
extraReq14.setDemandId(uuid);
|
||||
extraReq14.setPropertyName("difficulty");
|
||||
extraReq14.setPropertyValue(emulation.getDifficulty());
|
||||
extras.add(extraReq14);
|
||||
SpdmDemandExtraReq extraReq15 = new SpdmDemandExtraReq();
|
||||
extraReq15.setDemandId(uuid);
|
||||
extraReq15.setPropertyName("requiredTime");
|
||||
extraReq15.setPropertyValue(emulation.getRequiredTime());
|
||||
extras.add(extraReq15);
|
||||
SpdmDemandExtraReq extraReq20 = new SpdmDemandExtraReq();
|
||||
extraReq20.setDemandId(uuid);
|
||||
extraReq20.setPropertyName("subject");
|
||||
extraReq20.setPropertyValue(emulation.getSubject());
|
||||
extras.add(extraReq20);
|
||||
SpdmDemandExtraReq extraReq21 = new SpdmDemandExtraReq();
|
||||
extraReq21.setDemandId(uuid);
|
||||
extraReq21.setPropertyName("todoNum");
|
||||
extraReq21.setPropertyValue(emulation.getTodoNum());
|
||||
extras.add(extraReq21);
|
||||
SpdmDemandExtraReq extraReq22 = new SpdmDemandExtraReq();
|
||||
extraReq22.setDemandId(uuid);
|
||||
extraReq22.setPropertyName("status");
|
||||
extraReq22.setPropertyValue(emulation.getStatus());
|
||||
extras.add(extraReq22);
|
||||
SpdmDemandExtraReq extraReq26 = new SpdmDemandExtraReq();
|
||||
extraReq26.setDemandId(uuid);
|
||||
extraReq26.setPropertyName("projectName");
|
||||
extraReq26.setPropertyValue(emulation.getProjectName());
|
||||
extras.add(extraReq26);
|
||||
SpdmDemandExtraReq extraReq27 = new SpdmDemandExtraReq();
|
||||
extraReq27.setDemandId(uuid);
|
||||
extraReq27.setPropertyName("projectModel");
|
||||
extraReq27.setPropertyValue(emulation.getProjectModel());
|
||||
extras.add(extraReq27);
|
||||
SpdmDemandExtraReq extraReq28 = new SpdmDemandExtraReq();
|
||||
extraReq28.setDemandId(uuid);
|
||||
extraReq28.setPropertyName("projectType");
|
||||
extraReq28.setPropertyValue(emulation.getProjectType());
|
||||
extras.add(extraReq28);
|
||||
SpdmDemandExtraReq extraReq31 = new SpdmDemandExtraReq();
|
||||
extraReq31.setDemandId(uuid);
|
||||
extraReq31.setPropertyName("stationNum");
|
||||
extraReq31.setPropertyValue(emulation.getStationNum());
|
||||
extras.add(extraReq31);
|
||||
SpdmDemandExtraReq extraReq32 = new SpdmDemandExtraReq();
|
||||
extraReq32.setDemandId(uuid);
|
||||
extraReq32.setPropertyName("planStartTime");
|
||||
extraReq32.setPropertyValue(emulation.getPlanStartTime());
|
||||
extras.add(extraReq32);
|
||||
SpdmDemandExtraReq extraReq33 = new SpdmDemandExtraReq();
|
||||
extraReq33.setDemandId(uuid);
|
||||
extraReq33.setPropertyName("requirementsTime");
|
||||
extraReq33.setPropertyValue(emulation.getRequiredTime());
|
||||
extras.add(extraReq33);
|
||||
SpdmDemandExtraReq extraReq34 = new SpdmDemandExtraReq();
|
||||
extraReq34.setDemandId(uuid);
|
||||
extraReq34.setPropertyName("pausedTime");
|
||||
extraReq34.setPropertyValue(emulation.getPausedTime());
|
||||
extras.add(extraReq34);
|
||||
SpdmDemandExtraReq extraReq35 = new SpdmDemandExtraReq();
|
||||
extraReq35.setDemandId(uuid);
|
||||
extraReq35.setPropertyName("performer");
|
||||
extraReq35.setPropertyValue(emulation.getPerformer());
|
||||
extras.add(extraReq35);
|
||||
SpdmDemandExtraReq extraReq36 = new SpdmDemandExtraReq();
|
||||
extraReq36.setDemandId(uuid);
|
||||
extraReq36.setPropertyName("performerName");
|
||||
extraReq36.setPropertyValue(emulation.getPerformerName());
|
||||
extras.add(extraReq36);
|
||||
SpdmDemandExtraReq extraReq37 = new SpdmDemandExtraReq();
|
||||
extraReq37.setDemandId(uuid);
|
||||
extraReq37.setPropertyName("verifier");
|
||||
extraReq37.setPropertyValue(emulation.getVerifier());
|
||||
extras.add(extraReq37);
|
||||
SpdmDemandExtraReq extraReq39 = new SpdmDemandExtraReq();
|
||||
extraReq39.setDemandId(uuid);
|
||||
extraReq39.setPropertyName("workHourPlan");
|
||||
extraReq39.setPropertyValue(emulation.getWorkHourPlan());
|
||||
extras.add(extraReq39);
|
||||
SpdmDemandExtraReq extraReq40 = new SpdmDemandExtraReq();
|
||||
extraReq40.setDemandId(uuid);
|
||||
extraReq40.setPropertyName("realWorkHour");
|
||||
extraReq40.setPropertyValue(emulation.getRealWorkHour());
|
||||
extras.add(extraReq40);
|
||||
SpdmDemandExtraReq extraReq41 = new SpdmDemandExtraReq();
|
||||
extraReq41.setDemandId(uuid);
|
||||
extraReq41.setPropertyName("standardWorkHour");
|
||||
extraReq41.setPropertyValue(emulation.getStandardWorkHour());
|
||||
extras.add(extraReq41);
|
||||
SpdmDemandExtraReq extraReq42 = new SpdmDemandExtraReq();
|
||||
extraReq42.setDemandId(uuid);
|
||||
extraReq42.setPropertyName("turnDownReason");
|
||||
extraReq42.setPropertyValue(emulation.getTurnDownReason());
|
||||
extras.add(extraReq42);
|
||||
|
||||
// 需求的成员
|
||||
// 仿真负责人
|
||||
String emulationPerformer = emulation.getEmulationPerformer();
|
||||
if (StringUtils.isNotBlank(emulationPerformer)) {
|
||||
SpdmDemandRelateMemberReq pMemberReq = new SpdmDemandRelateMemberReq();
|
||||
pMemberReq.setDemandId(uuid);
|
||||
pMemberReq.setType(0);
|
||||
String pUserId = emulationPerformer.split("-")[0];
|
||||
if (isConvertibleToLong(pUserId)) {
|
||||
pMemberReq.setUserId(Long.valueOf(pUserId));
|
||||
}
|
||||
pMemberReq.setCreateTime(curDateStr);
|
||||
pMemberReq.setCreator(jobNumber);
|
||||
allMemberList.add(pMemberReq);
|
||||
}
|
||||
|
||||
// 仿真执行人
|
||||
String emulationExecutor = emulation.getEmulationExecutor();
|
||||
if (StringUtils.isNotBlank(emulationExecutor)) {
|
||||
SpdmDemandRelateMemberReq eMemberReq = new SpdmDemandRelateMemberReq();
|
||||
eMemberReq.setDemandId(uuid);
|
||||
eMemberReq.setType(1);
|
||||
String eUserId = emulationExecutor.split("-")[0];
|
||||
if (isConvertibleToLong(eUserId)) {
|
||||
eMemberReq.setUserId(Long.valueOf(eUserId));
|
||||
}
|
||||
eMemberReq.setCreateTime(curDateStr);
|
||||
eMemberReq.setCreator(jobNumber);
|
||||
allMemberList.add(eMemberReq);
|
||||
}
|
||||
|
||||
// 3D负责人
|
||||
String threeDimensionalPerformer = emulation.getThreeDimensionalPerformer();
|
||||
if (StringUtils.isNotBlank(emulationExecutor)) {
|
||||
SpdmDemandRelateMemberReq tMemberReq = new SpdmDemandRelateMemberReq();
|
||||
tMemberReq.setDemandId(uuid);
|
||||
tMemberReq.setType(2);
|
||||
String tUserId = threeDimensionalPerformer.split("-")[0];
|
||||
if (isConvertibleToLong(tUserId)) {
|
||||
tMemberReq.setUserId(Long.valueOf(tUserId));
|
||||
}
|
||||
tMemberReq.setCreateTime(curDateStr);
|
||||
tMemberReq.setCreator(jobNumber);
|
||||
allMemberList.add(tMemberReq);
|
||||
}
|
||||
demandMapper.addDemand(spdmAddDemandReq, tenantId, jobNumber);
|
||||
// 更新文件权限
|
||||
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
|
||||
updatePermissionReq.setUserId(jobNumber);
|
||||
updatePermissionReq.setUuid(uuid);
|
||||
Map<Long, Byte> userPermissions = new HashMap<>();
|
||||
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
|
||||
updatePermissionReq.setUserPermissions(userPermissions);
|
||||
log.info("同步需求时,更新用户权限的参数为:{}", updatePermissionReq);
|
||||
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
|
||||
log.info("同步需求时,更新用户权限的返回值为:{}", updatePermissionResponse);
|
||||
demandMapper.addDemandMember(allMemberList);
|
||||
for (SpdmDemandExtraReq extra : extras) {
|
||||
extra.setCreateTime(curDateStr);
|
||||
extra.setCreator(jobNumber);
|
||||
}
|
||||
demandMapper.addDemandExtra(extras);
|
||||
CreateDirReq createDirReq = new CreateDirReq();
|
||||
createDirReq.setUuId(uuid);
|
||||
createDirReq.setParentUuId(null);
|
||||
createDirReq.setDirName(spdmAddDemandReq.getDemandName());
|
||||
createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue());
|
||||
log.info("同步待办创建需求时,调用创建文件夹的参数为:{}", createDirReq);
|
||||
SdmResponse response = dataFeignClient.createDir(createDirReq);
|
||||
log.info("同步代办创建需求时,调用创建文件夹的返回值为:{}", response);
|
||||
} catch (Exception e) {
|
||||
log.error("同步代办时有异常:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
public SdmResponse getMainPlanListByProjectId(Integer projectId, String projectUuid) {
|
||||
log.info("同步主计划,projectId:{},projectUuid:{}", projectId, projectUuid);
|
||||
if (ObjectUtils.isEmpty(projectId) || ObjectUtils.isEmpty(projectUuid)) {
|
||||
log.error("同步主计划时,项目id和uuid都不能为空");
|
||||
return SdmResponse.failed("同步主计划时,项目id和uuid都不能为空");
|
||||
}
|
||||
Long tenantId = ThreadLocalContext.getTenantId();
|
||||
Long jobNumber = ThreadLocalContext.getUserId();
|
||||
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
||||
List<LyricVMainPlanDM> mainPlanList = lyricVMainPlanDMService.lambdaQuery().eq(LyricVMainPlanDM::getProjectId, String.valueOf(projectId)).list();
|
||||
log.info("mainPlanList为:{}", mainPlanList);
|
||||
if (CollectionUtils.isEmpty(mainPlanList)) {
|
||||
log.info("mainPlanList为空");
|
||||
return SdmResponse.success();
|
||||
}
|
||||
List<SimulationNode> nodeList = this.lambdaQuery().eq(SimulationNode::getProjectSource, SYNC_PROJECT_SOURCE)
|
||||
.eq(SimulationNode::getNodeType, NodeTypeEnum.PHASE.getValue())
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(nodeList)) {
|
||||
List<String> nodeNameList = nodeList.stream().map(SimulationNode::getNodeName).toList();
|
||||
log.info("nodeNameList为:{}", nodeNameList);
|
||||
mainPlanList = mainPlanList.stream().filter(planInfo -> !nodeNameList.contains(String.valueOf(planInfo.getSubject()))).toList();
|
||||
if (CollectionUtils.isEmpty(mainPlanList)) {
|
||||
log.info("本次同步到的主计划都已经进行过同步");
|
||||
return SdmResponse.success();
|
||||
}
|
||||
}
|
||||
log.info("同步到的主计划编号集合为:{}", mainPlanList.stream().map(LyricVMainPlanDM::getSubject).toList());
|
||||
List<SimulationNode> simulationNodeList = new ArrayList<>();
|
||||
for (LyricVMainPlanDM newPhaseInfo : mainPlanList) {
|
||||
String uuid = RandomUtil.generateString(32);
|
||||
SimulationNode simulationNode = new SimulationNode();
|
||||
simulationNode.setUuid(uuid);
|
||||
simulationNode.setOwnRootNodeUuid(uuid);
|
||||
simulationNode.setNodeName(StringUtils.isNotBlank(newPhaseInfo.getSubject()) ? newPhaseInfo.getSubject() : "默认阶段");
|
||||
simulationNode.setNodeType(NodeTypeEnum.PHASE.getValue());
|
||||
simulationNode.setNodeStatus("0");
|
||||
simulationNode.setNodeLevel(1);
|
||||
simulationNode.setTenantId(tenantId);
|
||||
simulationNode.setExeStatus("0");
|
||||
simulationNode.setCreator(jobNumber);
|
||||
simulationNode.setCreateTime(curDateStr);
|
||||
simulationNode.setTag1(projectUuid);
|
||||
simulationNode.setTag2(uuid);
|
||||
try {
|
||||
createDir(simulationNode.getUuid(), simulationNode.getNodeType(), simulationNode.getTag1(), simulationNode.getNodeName());
|
||||
} catch (Exception e) {
|
||||
log.error("同步主计划创建文件夹时有异常:{}", e.getMessage());
|
||||
}
|
||||
simulationNodeList.add(simulationNode);
|
||||
}
|
||||
this.saveBatch(simulationNodeList);
|
||||
// 更新文件权限
|
||||
for (SimulationNode simulationNode : simulationNodeList) {
|
||||
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
|
||||
updatePermissionReq.setUserId(jobNumber);
|
||||
updatePermissionReq.setUuid(simulationNode.getUuid());
|
||||
Map<Long, Byte> userPermissions = new HashMap<>();
|
||||
userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue());
|
||||
updatePermissionReq.setUserPermissions(userPermissions);
|
||||
log.info("同步主计划时,更新用户权限的参数为:{}", updatePermissionReq);
|
||||
SdmResponse updatePermissionResponse = null;
|
||||
try {
|
||||
updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
|
||||
} catch (Exception e) {
|
||||
log.error("同步主计划更新用户权限时有异常:{}", e.getMessage());
|
||||
}
|
||||
log.info("同步主计划时,更新用户权限的返回值为:{}", updatePermissionResponse);
|
||||
}
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断字符串是否可以安全转换为Long类型
|
||||
*
|
||||
* @param str 待校验的字符串
|
||||
* @return true-可以转换,false-不可以转换
|
||||
*/
|
||||
public static boolean isConvertibleToLong(String str) {
|
||||
// 1. 处理null、空字符串、全空格字符串
|
||||
if (str == null || str.trim().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
String trimmedStr = str.trim();
|
||||
|
||||
// 2. 正则校验数字格式(支持正负号,纯数字)
|
||||
// 正则说明:^-? 匹配开头的负号(可选);\\d+ 匹配1个及以上数字;$ 匹配结尾
|
||||
if (!trimmedStr.matches("^-?\\d+$")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 3. 校验数值范围,避免溢出
|
||||
try {
|
||||
// 直接调用Long.parseLong,利用其自带的范围校验
|
||||
Long.parseLong(trimmedStr);
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
// 捕获数值超出Long范围的异常
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user