1、提交EP对接接口
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package com.sdm.outbridge.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.sdm.outbridge.entity.LyricVProjectStationToDM;
|
||||
|
||||
public interface LyricVProjectStationToDmMapper extends BaseMapper<LyricVProjectStationToDM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.sdm.outbridge.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 项目信息视图实体类
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "v_project_station_to_DM", autoResultMap = true)
|
||||
@Schema(description = "项目——机台——工位信息视图")
|
||||
public class LyricVProjectStationToDM {
|
||||
|
||||
@Schema(description = "项目id")
|
||||
@TableField(value = "project_id")
|
||||
private Long projectId;
|
||||
|
||||
@Schema(description = "工位编号")
|
||||
@TableField(value = "station_num")
|
||||
private String stationNum;
|
||||
|
||||
@Schema(description = "工位名称")
|
||||
@TableField(value = "station_name")
|
||||
private String stationName;
|
||||
|
||||
@Schema(description = "机台编号")
|
||||
@TableField(value = "machine_number")
|
||||
private String machineNumber;
|
||||
|
||||
@Schema(description = "机台名称")
|
||||
@TableField(value = "machine_name")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "删除标志")
|
||||
@TableField(value = "delete_source")
|
||||
private String deleteSource;
|
||||
|
||||
}
|
||||
@@ -271,4 +271,9 @@ public class LyricVTodoEmulationInfoDM implements Serializable {
|
||||
@Schema(description = "标准工时")
|
||||
@TableField(value = "standard_work_hour")
|
||||
private String standardWorkHour;
|
||||
|
||||
@Schema(description = "关联任务")
|
||||
@TableField(value = "relevance_task")
|
||||
private String relevanceTask;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.sdm.outbridge.service.impl.lyric;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.sdm.outbridge.dao.LyricVProjectStationToDmMapper;
|
||||
import com.sdm.outbridge.entity.LyricVProjectStationToDM;
|
||||
import com.sdm.outbridge.service.lyric.LyricVProjectStationToDmService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class LyricVProjectStationToDmServiceImpl extends ServiceImpl<LyricVProjectStationToDmMapper, LyricVProjectStationToDM>
|
||||
implements LyricVProjectStationToDmService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.sdm.outbridge.service.lyric;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.sdm.outbridge.entity.LyricVProjectStationToDM;
|
||||
|
||||
/* 查询项目信息 */
|
||||
public interface LyricVProjectStationToDmService extends IService<LyricVProjectStationToDM> {
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.outbridge.mode.GetProcessDataReq;
|
||||
import com.sdm.project.model.req.PushReportReq;
|
||||
import com.sdm.project.model.req.ep.EpProjectQueryReq;
|
||||
import com.sdm.project.model.req.ep.EpSyncPhaseReq;
|
||||
import com.sdm.project.service.ILyricInternalService;
|
||||
import com.sdm.project.service.ISimulationLyricNodeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -129,5 +130,16 @@ public class SimulationLyricNodeController {
|
||||
return lyricInternalService.queryProjectInfoList(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步阶段机台工位
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/syncPhase")
|
||||
@Operation(summary = "同步阶段机台工位", description = "同步阶段机台工位")
|
||||
public SdmResponse syncPhase(@RequestBody @Validated EpSyncPhaseReq req) {
|
||||
return lyricInternalService.syncPhase(req);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.sdm.project.model.req.ep;
|
||||
|
||||
import com.sdm.project.model.bo.TaskNodeTag;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EpSyncPhaseReq {
|
||||
|
||||
@NotBlank
|
||||
private String projectId;
|
||||
|
||||
@NotBlank
|
||||
private String nodeCode;
|
||||
|
||||
@NotBlank
|
||||
private String uuid;
|
||||
|
||||
private List<TaskNodeTag> tagMap;
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.outbridge.mode.GetProcessDataReq;
|
||||
import com.sdm.project.model.req.PushReportReq;
|
||||
import com.sdm.project.model.req.ep.EpProjectQueryReq;
|
||||
import com.sdm.project.model.req.ep.EpSyncPhaseReq;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
public interface ILyricInternalService {
|
||||
@@ -32,4 +33,6 @@ public interface ILyricInternalService {
|
||||
|
||||
SdmResponse queryProjectInfoList(EpProjectQueryReq req);
|
||||
|
||||
SdmResponse syncPhase(EpSyncPhaseReq req);
|
||||
|
||||
}
|
||||
|
||||
@@ -20,17 +20,20 @@ import com.sdm.outbridge.mode.HkUploadFileReq;
|
||||
import com.sdm.outbridge.service.lyric.*;
|
||||
import com.sdm.project.common.generator.UniqueFileNameGenerator;
|
||||
import com.sdm.project.dao.SimulationDemandMapper;
|
||||
import com.sdm.project.dao.SimulationNodeMapper;
|
||||
import com.sdm.project.dao.SimulationProjectMapper;
|
||||
import com.sdm.project.model.bo.TaskNodeTag;
|
||||
import com.sdm.project.model.entity.SimulationNode;
|
||||
import com.sdm.project.model.req.PushReportReq;
|
||||
import com.sdm.project.model.req.SpdmAddDemandReq;
|
||||
import com.sdm.project.model.req.SpdmDemandExtraReq;
|
||||
import com.sdm.project.model.req.SpdmDemandRelateMemberReq;
|
||||
import com.sdm.project.model.po.ProjectNodePo;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.model.req.ep.EpProjectQueryReq;
|
||||
import com.sdm.project.model.req.ep.EpSyncPhaseReq;
|
||||
import com.sdm.project.model.vo.SpdmDemandVo;
|
||||
import com.sdm.project.service.ILyricInternalService;
|
||||
import com.sdm.project.service.INodeService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -38,11 +41,13 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
@@ -90,6 +95,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
@Resource
|
||||
private INodeService nodeService;
|
||||
|
||||
@Autowired
|
||||
private LyricVProjectStationToDmService lyricVProjectStationToDmService;
|
||||
|
||||
@Resource
|
||||
private SimulationNodeMapper nodeMapper;
|
||||
|
||||
/**
|
||||
* 判断字符串是否可以安全转换为Long类型
|
||||
*
|
||||
@@ -206,6 +217,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
spdmAddDemandReq.setDemandCode(String.valueOf(emulation.getTodoId()));
|
||||
}
|
||||
spdmAddDemandReq.setDemandType(emulation.getEmulationType());
|
||||
spdmAddDemandReq.setSimType(emulation.getRelevanceTask());
|
||||
spdmAddDemandReq.setDemandStatus("0");
|
||||
spdmAddDemandReq.setAchieveStatus("0");
|
||||
spdmAddDemandReq.setProgress(0);
|
||||
@@ -1214,4 +1226,145 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
return response;
|
||||
}
|
||||
|
||||
public static void setTagProperty(Object obj, String propertyName, Object value) throws Exception {
|
||||
Class<?> clazz = obj.getClass();
|
||||
Field field = clazz.getDeclaredField(propertyName);
|
||||
field.setAccessible(true);
|
||||
field.set(obj, value);
|
||||
field.setAccessible(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse syncPhase(EpSyncPhaseReq req) {
|
||||
Long tenantId = ThreadLocalContext.getTenantId();
|
||||
Long jobNumber = ThreadLocalContext.getUserId();
|
||||
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
||||
// 根据projectId查询项目机台工位信息的视图
|
||||
List<LyricVProjectStationToDM> projectStationList = lyricVProjectStationToDmService.lambdaQuery()
|
||||
.eq(LyricVProjectStationToDM::getProjectId, req.getProjectId())
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(projectStationList)) {
|
||||
log.error("projectStationList为空");
|
||||
return SdmResponse.failed("未同步到阶段机台工位的信息");
|
||||
}
|
||||
// 同步EP中的节点、机台、工位到DM
|
||||
// 查询当前阶段
|
||||
LyricVProjectToDM lyricVProject = lyricVProjectToDmService.lambdaQuery()
|
||||
.eq(LyricVProjectToDM::getProjectNum, req.getNodeCode())
|
||||
.one();
|
||||
List<SpdmProjectNodeEditReq> addNodeList = new ArrayList<>();
|
||||
if (ObjectUtils.isNotEmpty(lyricVProject)) {
|
||||
// 当前阶段
|
||||
String currentPhase = lyricVProject.getStage();
|
||||
SpdmProjectNodeEditReq phaseNode = new SpdmProjectNodeEditReq();
|
||||
phaseNode.setUuid(RandomUtil.generateString(32));
|
||||
phaseNode.setNodeCode(currentPhase);
|
||||
phaseNode.setNodeName(currentPhase);
|
||||
phaseNode.setCreateTime(curDateStr);
|
||||
phaseNode.setCreator(jobNumber);
|
||||
phaseNode.setTenantId(tenantId);
|
||||
phaseNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
phaseNode.setPid(req.getUuid());
|
||||
addNodeList.add(phaseNode);
|
||||
// 机台、工位
|
||||
Map<String, List<LyricVProjectStationToDM>> machineMap = projectStationList.stream().collect(Collectors.groupingBy(LyricVProjectStationToDM::getMachineNumber));
|
||||
for (Map.Entry<String, List<LyricVProjectStationToDM>> machineEntry : machineMap.entrySet()) {
|
||||
String machineNumber = machineEntry.getKey();
|
||||
List<LyricVProjectStationToDM> projectStationByMachineNumberList = machineEntry.getValue();
|
||||
SpdmProjectNodeEditReq machineNode = new SpdmProjectNodeEditReq();
|
||||
machineNode.setUuid(RandomUtil.generateString(32));
|
||||
machineNode.setNodeCode(machineNumber);
|
||||
machineNode.setNodeName(projectStationByMachineNumberList.get(0).getMachineName());
|
||||
machineNode.setCreateTime(curDateStr);
|
||||
machineNode.setCreator(jobNumber);
|
||||
machineNode.setTenantId(tenantId);
|
||||
machineNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
machineNode.setPid(phaseNode.getUuid());
|
||||
addNodeList.add(machineNode);
|
||||
for (LyricVProjectStationToDM lyricVProjectStationToDM : projectStationByMachineNumberList) {
|
||||
SpdmProjectNodeEditReq workspaceNode = new SpdmProjectNodeEditReq();
|
||||
workspaceNode.setUuid(RandomUtil.generateString(32));
|
||||
workspaceNode.setNodeCode(lyricVProjectStationToDM.getStationNum());
|
||||
workspaceNode.setNodeName(lyricVProjectStationToDM.getStationName());
|
||||
workspaceNode.setCreateTime(curDateStr);
|
||||
workspaceNode.setCreator(jobNumber);
|
||||
workspaceNode.setTenantId(tenantId);
|
||||
workspaceNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
workspaceNode.setPid(machineNode.getUuid());
|
||||
addNodeList.add(workspaceNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<TaskNodeTag> tagMap = req.getTagMap();
|
||||
List<SpdmProjectNodeEditReq> currentNodeList;
|
||||
HashMap<String, String> idMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(tagMap)) {
|
||||
// {key: "project", value: "Tag1"}, {key: "phase", value: "Tag2"}
|
||||
for (TaskNodeTag tagReq : tagMap) {
|
||||
String currentNodeType = tagReq.getKey(); // project phase
|
||||
log.info("当前nodeType为:{},tag为:{}", currentNodeType, tagReq.getValue());
|
||||
currentNodeList = addNodeList.stream().filter(node -> node.getNodeType().equals(currentNodeType)).toList(); // projectNodeList phaseNodeList
|
||||
if (CollectionUtils.isEmpty(currentNodeList)) {
|
||||
log.error("addNodeList中不存在{}类型的节点", currentNodeType);
|
||||
continue;
|
||||
}
|
||||
List<String> currentNodeIdList = new ArrayList<>();
|
||||
for (SpdmProjectNodeEditReq addNode : currentNodeList) {
|
||||
// idMap = {"tag1": "uuid1,uuid2", "tag2": "uuid3"}
|
||||
if (MapUtils.isNotEmpty(idMap)) {
|
||||
for (Map.Entry<String, String> entry : idMap.entrySet()) {
|
||||
// 之前的tag
|
||||
// preTag = entry.getKey() = "tag1"
|
||||
String preTag = entry.getKey();
|
||||
log.info("preTag为:{}", preTag);
|
||||
try {
|
||||
// entry.getValue() = "uuid1,uuid2"
|
||||
setTagProperty(addNode, preTag, entry.getValue());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isBlank(addNode.getUuid())) {
|
||||
addNode.setUuid(RandomUtil.generateString(32));
|
||||
}
|
||||
// 设置 当前节点所属项目根节点uuid
|
||||
// addNode.getPid()为空时,在创建项目,ownRootNodeUuid就是addNode本身uuid
|
||||
// addNode.getPid()不为空时,在创建阶段,ownRootNodeUuid就是入参的pid父节点
|
||||
addNode.setOwnRootNodeUuid(ObjectUtils.isEmpty(addNode.getPid()) ? addNode.getUuid() : addNode.getPid());
|
||||
addNode.setCreateTime(curDateStr);
|
||||
addNode.setCreator(jobNumber);
|
||||
addNode.setTenantId(tenantId);
|
||||
try {
|
||||
// tagReq.getValue()="Tag1"
|
||||
setTagProperty(addNode, tagReq.getValue(), addNode.getUuid());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
currentNodeIdList.add(addNode.getUuid());
|
||||
}
|
||||
// tagReq.getValue()= "tag1" "tag2"
|
||||
idMap.put(tagReq.getValue(), String.join(",", currentNodeIdList));
|
||||
}
|
||||
}
|
||||
if (nodeMapper.addNodeBatch(addNodeList) <= 0) {
|
||||
return null;
|
||||
}
|
||||
for (SpdmProjectNodeEditReq node : addNodeList) {
|
||||
createDir(node.getUuid(), node.getNodeType(), req.getUuid(), node.getNodeName());
|
||||
}
|
||||
// 更新文件权限
|
||||
Long userId = ThreadLocalContext.getUserId();
|
||||
UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq();
|
||||
updatePermissionReq.setUserId(userId);
|
||||
updatePermissionReq.setUuid(req.getUuid());
|
||||
Map<Long, Byte> userPermissions = new HashMap<>();
|
||||
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
|
||||
updatePermissionReq.setUserPermissions(userPermissions);
|
||||
log.info("syncPhase,更新用户权限的参数为:{}",updatePermissionReq);
|
||||
SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq);
|
||||
log.info("syncPhase,更新用户权限的返回值为:{}",updatePermissionResponse);
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,8 +29,12 @@ 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.LyricVProjectStationToDM;
|
||||
import com.sdm.outbridge.entity.LyricVProjectToDM;
|
||||
import com.sdm.outbridge.entity.LyricVTodoEmulationInfoDM;
|
||||
import com.sdm.outbridge.service.lyric.LyricVMainPlanDMService;
|
||||
import com.sdm.outbridge.service.lyric.LyricVProjectStationToDmService;
|
||||
import com.sdm.outbridge.service.lyric.LyricVProjectToDmService;
|
||||
import com.sdm.outbridge.service.lyric.LyricVTodoInfoService;
|
||||
import com.sdm.project.common.MemberTypeEnum;
|
||||
import com.sdm.project.dao.SimulationDemandMapper;
|
||||
@@ -131,6 +135,12 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
"workspaceNodeId"
|
||||
};
|
||||
|
||||
@Autowired
|
||||
private LyricVProjectToDmService lyricVProjectToDmService;
|
||||
|
||||
@Autowired
|
||||
private LyricVProjectStationToDmService lyricVProjectStationToDmService;
|
||||
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
@@ -421,6 +431,69 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
List<SpdmNodeExtraReq> extraList;
|
||||
List<SpdmNodeExtraReq> allExtraList = new ArrayList<>();
|
||||
List<SpdmProjectNodeEditReq> currentNodeList;
|
||||
|
||||
// 如果项目当前阶段下存在机台、工位的信息,则直接拉取到DM系统中
|
||||
Optional<SpdmProjectNodeEditReq> projectOptional = addNodeList.stream().filter(node -> NodeTypeEnum.PROJECT.getValue().equals(node.getNodeType())).findFirst();
|
||||
if (projectOptional.isPresent()) {
|
||||
SpdmProjectNodeEditReq spdmProjectNodeEditReq = projectOptional.get();
|
||||
String projectSource = spdmProjectNodeEditReq.getProjectSource();
|
||||
if (SYNC_PROJECT_SOURCE.equals(projectSource)) {
|
||||
// 根据projectId查询项目机台工位信息的视图
|
||||
List<LyricVProjectStationToDM> projectStationList = lyricVProjectStationToDmService.lambdaQuery()
|
||||
.eq(LyricVProjectStationToDM::getProjectId, spdmProjectNodeEditReq.getProjectId())
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(projectStationList)) {
|
||||
// 同步EP中的节点、机台、工位到DM
|
||||
// 查询当前阶段
|
||||
LyricVProjectToDM lyricVProject = lyricVProjectToDmService.lambdaQuery()
|
||||
.like(StringUtils.isNotBlank(spdmProjectNodeEditReq.getNodeCode()), LyricVProjectToDM::getProjectNum, spdmProjectNodeEditReq.getNodeCode())
|
||||
.one();
|
||||
if (ObjectUtils.isNotEmpty(lyricVProject)) {
|
||||
// 当前阶段
|
||||
String currentPhase = lyricVProject.getStage();
|
||||
SpdmProjectNodeEditReq phaseNode = new SpdmProjectNodeEditReq();
|
||||
phaseNode.setUuid(RandomUtil.generateString(32));
|
||||
phaseNode.setNodeCode(currentPhase);
|
||||
phaseNode.setNodeName(currentPhase);
|
||||
phaseNode.setCreateTime(curDateStr);
|
||||
phaseNode.setCreator(jobNumber);
|
||||
phaseNode.setTenantId(tenantId);
|
||||
phaseNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
phaseNode.setPid(spdmProjectNodeEditReq.getUuid());
|
||||
addNodeList.add(phaseNode);
|
||||
// 机台、工位
|
||||
Map<String, List<LyricVProjectStationToDM>> machineMap = projectStationList.stream().collect(Collectors.groupingBy(LyricVProjectStationToDM::getMachineNumber));
|
||||
for (Map.Entry<String, List<LyricVProjectStationToDM>> machineEntry : machineMap.entrySet()) {
|
||||
String machineNumber = machineEntry.getKey();
|
||||
List<LyricVProjectStationToDM> projectStationByMachineNumberList = machineEntry.getValue();
|
||||
SpdmProjectNodeEditReq machineNode = new SpdmProjectNodeEditReq();
|
||||
machineNode.setUuid(RandomUtil.generateString(32));
|
||||
machineNode.setNodeCode(machineNumber);
|
||||
machineNode.setNodeName(projectStationByMachineNumberList.get(0).getMachineName());
|
||||
machineNode.setCreateTime(curDateStr);
|
||||
machineNode.setCreator(jobNumber);
|
||||
machineNode.setTenantId(tenantId);
|
||||
machineNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
machineNode.setPid(phaseNode.getUuid());
|
||||
addNodeList.add(machineNode);
|
||||
for (LyricVProjectStationToDM lyricVProjectStationToDM : projectStationByMachineNumberList) {
|
||||
SpdmProjectNodeEditReq workspaceNode = new SpdmProjectNodeEditReq();
|
||||
workspaceNode.setUuid(RandomUtil.generateString(32));
|
||||
workspaceNode.setNodeCode(lyricVProjectStationToDM.getStationNum());
|
||||
workspaceNode.setNodeName(lyricVProjectStationToDM.getStationName());
|
||||
workspaceNode.setCreateTime(curDateStr);
|
||||
workspaceNode.setCreator(jobNumber);
|
||||
workspaceNode.setTenantId(tenantId);
|
||||
workspaceNode.setProjectSource(SYNC_PROJECT_SOURCE);
|
||||
workspaceNode.setPid(machineNode.getUuid());
|
||||
addNodeList.add(workspaceNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(tagMap)) {
|
||||
// {key: "project", value: "Tag1"}, {key: "phase", value: "Tag2"}
|
||||
for (TaskNodeTag tagReq : tagMap) {
|
||||
@@ -448,7 +521,9 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
}
|
||||
}
|
||||
}
|
||||
addNode.setUuid(RandomUtil.generateString(32));
|
||||
if (StringUtils.isBlank(addNode.getUuid())) {
|
||||
addNode.setUuid(RandomUtil.generateString(32));
|
||||
}
|
||||
// 设置 当前节点所属项目根节点uuid
|
||||
// addNode.getPid()为空时,在创建项目,ownRootNodeUuid就是addNode本身uuid
|
||||
// addNode.getPid()不为空时,在创建阶段,ownRootNodeUuid就是入参的pid父节点
|
||||
@@ -492,7 +567,6 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
if (nodeMapper.addNodeBatch(addNodeList) <= 0) {
|
||||
return null;
|
||||
}
|
||||
Optional<SpdmProjectNodeEditReq> projectOptional = addNodeList.stream().filter(node -> NodeTypeEnum.PROJECT.getValue().equals(node.getNodeType())).findFirst();
|
||||
if (projectOptional.isPresent()) {
|
||||
SpdmProjectNodeEditReq projectNode = projectOptional.get();
|
||||
// 创建项目节点的文件夹
|
||||
@@ -685,6 +759,17 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
}
|
||||
SpdmNodeDetailVo spdmNodeDetailVo = new SpdmNodeDetailVo();
|
||||
BeanUtils.copyProperties(projectNode, spdmNodeDetailVo);
|
||||
if (SYNC_PROJECT_SOURCE.equals(projectNode.getProjectSource())) {
|
||||
// EP类型项目直接从视图拉取当前阶段的信息
|
||||
LyricVProjectToDM lyricVProject = lyricVProjectToDmService.lambdaQuery()
|
||||
.eq(StringUtils.isNotBlank(projectNode.getNodeCode()), LyricVProjectToDM::getProjectNum, projectNode.getNodeCode())
|
||||
.one();
|
||||
if (ObjectUtils.isNotEmpty(lyricVProject)) {
|
||||
spdmNodeDetailVo.setCurrentPhase(lyricVProject.getStage());
|
||||
return SdmResponse.success(spdmNodeDetailVo);
|
||||
}
|
||||
log.error("根据EP项目的项目编号:{},未查询到项目信息",projectNode.getNodeCode());
|
||||
}
|
||||
// 设置当前阶段
|
||||
String uuid = spdmNodeDetailVo.getUuid();
|
||||
List<SimulationNode> phaseNodeList = this.lambdaQuery().eq(SimulationNode::getParentId, uuid).eq(SimulationNode::getNodeType, NodeTypeEnum.PHASE.getValue()).list();
|
||||
|
||||
@@ -76,11 +76,11 @@ public class SimulationWorkServiceImpl extends ServiceImpl<SimulationWorkMapper,
|
||||
if (StringUtils.isBlank(beginTime) || StringUtils.isBlank(finishTime)) {
|
||||
return SdmResponse.failed("开始和完成时间都不为空时,才能填写实际工时");
|
||||
}
|
||||
Integer maxWorkHour = TimeCalculator.calculateWorkHours(beginTime, finishTime);
|
||||
log.info("actualWorkHour:{},maxWorkHour:{}",actualWorkHour,maxWorkHour);
|
||||
if (actualWorkHour > maxWorkHour) {
|
||||
return SdmResponse.failed("您填写的工时:" + actualWorkHour + "已超出最大可填写的工时:" + maxWorkHour);
|
||||
}
|
||||
// Integer maxWorkHour = TimeCalculator.calculateWorkHours(beginTime, finishTime);
|
||||
// log.info("actualWorkHour:{},maxWorkHour:{}",actualWorkHour,maxWorkHour);
|
||||
// if (actualWorkHour > maxWorkHour) {
|
||||
// return SdmResponse.failed("您填写的工时:" + actualWorkHour + "已超出最大可填写的工时:" + maxWorkHour);
|
||||
// }
|
||||
simulationWorkWrapper.set(SimulationWork::getActualWorkHour, actualWorkHour);
|
||||
}
|
||||
updateFlag = simulationWorkWrapper
|
||||
|
||||
Reference in New Issue
Block a user