fix[project]: 仿真策划时创建任务时,同时创建需求
This commit is contained in:
@@ -121,6 +121,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
|||||||
public static final String PROGRAM_TEAM = "programTeam";
|
public static final String PROGRAM_TEAM = "programTeam";
|
||||||
public static final String REFERENCE_ITEM = "referenceItem";
|
public static final String REFERENCE_ITEM = "referenceItem";
|
||||||
public static final String PROJECT_UNDERTAKER = "projectUndertaker";
|
public static final String PROJECT_UNDERTAKER = "projectUndertaker";
|
||||||
|
public static final String IS_MOLD_MAKING = "isMoldMaking";
|
||||||
// 同步待办锁
|
// 同步待办锁
|
||||||
private final ReentrantLock syncTodoInfoLock = new ReentrantLock();
|
private final ReentrantLock syncTodoInfoLock = new ReentrantLock();
|
||||||
|
|
||||||
|
|||||||
@@ -45,10 +45,7 @@ import com.sdm.common.utils.RandomUtil;
|
|||||||
import com.sdm.common.utils.SystemOperate;
|
import com.sdm.common.utils.SystemOperate;
|
||||||
import com.sdm.common.utils.excel.ExcelUtil;
|
import com.sdm.common.utils.excel.ExcelUtil;
|
||||||
import com.sdm.project.bo.ExportOperate;
|
import com.sdm.project.bo.ExportOperate;
|
||||||
import com.sdm.project.common.MemberTypeEnum;
|
import com.sdm.project.common.*;
|
||||||
import com.sdm.project.common.NodeMemberTypeEnum;
|
|
||||||
import com.sdm.project.common.TaskExeStatusEnum;
|
|
||||||
import com.sdm.project.common.VersionEnum;
|
|
||||||
import com.sdm.project.dao.SimulationDemandMapper;
|
import com.sdm.project.dao.SimulationDemandMapper;
|
||||||
import com.sdm.project.dao.SimulationNodeMapper;
|
import com.sdm.project.dao.SimulationNodeMapper;
|
||||||
import com.sdm.project.dao.SimulationProjectMapper;
|
import com.sdm.project.dao.SimulationProjectMapper;
|
||||||
@@ -78,11 +75,13 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.sdm.project.service.impl.LyricInternalServiceImpl.*;
|
||||||
import static com.sdm.project.service.impl.NodeServiceImpl.*;
|
import static com.sdm.project.service.impl.NodeServiceImpl.*;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -2193,7 +2192,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
log.info("仿真策划时,删除用户权限的返回值为:{}",updatePermissionResponse);
|
log.info("仿真策划时,删除用户权限的返回值为:{}",updatePermissionResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SdmResponse newRealAddSimulationTaskItems(TaskNodeTree taskNodeTree, Long tenantId, List<TaskNodeTag> tagList, String ownRootNodeUuid) {
|
private SdmResponse newRealAddSimulationTaskItems(TaskNodeTree taskNodeTree, Long tenantId, List<TaskNodeTag> tagList, String ownRootNodeUuid,List<SpdmNodeExtraVo> nodeExtraList) {
|
||||||
Long userId = ThreadLocalContext.getUserId();
|
Long userId = ThreadLocalContext.getUserId();
|
||||||
SdmResponse response = SdmResponse.success();
|
SdmResponse response = SdmResponse.success();
|
||||||
if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) {
|
if (CollectionUtils.isEmpty(taskNodeTree.getNodeList())) {
|
||||||
@@ -2409,7 +2408,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
}
|
}
|
||||||
// 20260320 新增任务时,同步新增一个需求
|
// 20260320 新增任务时,同步新增一个需求
|
||||||
try {
|
try {
|
||||||
addDemandByTask(taskNodeList);
|
addDemandByTask(taskNodeList,nodeExtraList);
|
||||||
}catch (Exception ex) {
|
}catch (Exception ex) {
|
||||||
log.error("新增任务时,同步新增需求时异常:{}",ex.getMessage());
|
log.error("新增任务时,同步新增需求时异常:{}",ex.getMessage());
|
||||||
}
|
}
|
||||||
@@ -2489,7 +2488,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDemandByTask(List<TaskNode> taskNodeList) {
|
public void addDemandByTask(List<TaskNode> taskNodeList,List<SpdmNodeExtraVo> nodeExtraList) {
|
||||||
log.info("addDemandByTask 策划任务时,新增需求");
|
log.info("addDemandByTask 策划任务时,新增需求");
|
||||||
Long tenantId = ThreadLocalContext.getTenantId();
|
Long tenantId = ThreadLocalContext.getTenantId();
|
||||||
Long jobNumber = ThreadLocalContext.getUserId();
|
Long jobNumber = ThreadLocalContext.getUserId();
|
||||||
@@ -2512,11 +2511,65 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
String attentionMemberList = taskNode.getAMemberList();
|
String attentionMemberList = taskNode.getAMemberList();
|
||||||
req.setCreateTime(curDateStr);
|
req.setCreateTime(curDateStr);
|
||||||
req.setUuid(RandomUtil.generateString(32));
|
req.setUuid(RandomUtil.generateString(32));
|
||||||
|
req.setDemandName(taskNode.getTaskName());
|
||||||
|
req.setProjectId(String.join(",", taskNode.getTag1()));
|
||||||
|
req.setPhaseId(String.join(",", taskNode.getTag2()));
|
||||||
|
req.setMachineId(String.join(",", taskNode.getTag4()));
|
||||||
|
req.setWorkspaceId(String.join(",", taskNode.getTag5()));
|
||||||
|
req.setSimType(taskNode.getDiscipline());
|
||||||
|
req.setBeginTime(taskNode.getBeginTime());
|
||||||
|
req.setEndTime(taskNode.getEndTime());
|
||||||
|
req.setDemandStatus(String.valueOf(DemandStatusTypeEnum.NOT_STARTED.getCode()));
|
||||||
|
// 没有的属性:
|
||||||
if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) {
|
if (demandMapper.addDemand(req, tenantId, jobNumber) <= 0) {
|
||||||
log.error("addDemandByTask 新增需求失败!");
|
log.error("addDemandByTask 新增需求失败!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
long demandId = req.getId();
|
long demandId = req.getId();
|
||||||
|
List<SpdmDemandExtraReq> demandExtraList = new ArrayList<>();
|
||||||
|
// 项目承接主题
|
||||||
|
SpdmNodeExtraVo projectUndertakerExtraVo = nodeExtraList.stream().filter(nodeExtra -> PROJECT_UNDERTAKER.equals(nodeExtra.getPropertyName())).findFirst().orElse(null);
|
||||||
|
if (projectUndertakerExtraVo != null) {
|
||||||
|
SpdmDemandExtraReq demandExtraReq = new SpdmDemandExtraReq();
|
||||||
|
demandExtraReq.setDemandId(req.getUuid());
|
||||||
|
demandExtraReq.setPropertyName(PROJECT_UNDERTAKER);
|
||||||
|
demandExtraReq.setPropertyValue(projectUndertakerExtraVo.getPropertyValue());
|
||||||
|
demandExtraReq.setPropertyClass(projectUndertakerExtraVo.getPropertyClass());
|
||||||
|
demandExtraReq.setCreator(jobNumber);
|
||||||
|
demandExtraReq.setCreateTime(curDateStr);
|
||||||
|
demandExtraList.add(demandExtraReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品线
|
||||||
|
SpdmNodeExtraVo projectLineExtraVo = nodeExtraList.stream().filter(nodeExtra -> PRODUCE_LINE.equals(nodeExtra.getPropertyName())).findFirst().orElse(null);
|
||||||
|
if (projectLineExtraVo != null) {
|
||||||
|
SpdmDemandExtraReq demandExtraReq = new SpdmDemandExtraReq();
|
||||||
|
demandExtraReq.setDemandId(req.getUuid());
|
||||||
|
demandExtraReq.setPropertyName(PRODUCE_LINE);
|
||||||
|
demandExtraReq.setPropertyValue(projectLineExtraVo.getPropertyValue());
|
||||||
|
demandExtraReq.setPropertyClass(projectLineExtraVo.getPropertyClass());
|
||||||
|
demandExtraReq.setCreator(jobNumber);
|
||||||
|
demandExtraReq.setCreateTime(curDateStr);
|
||||||
|
demandExtraList.add(demandExtraReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 是否开模件
|
||||||
|
SpdmNodeExtraVo isMoldMakingExtraVo = nodeExtraList.stream().filter(nodeExtra -> IS_MOLD_MAKING.equals(nodeExtra.getPropertyName())).findFirst().orElse(null);
|
||||||
|
if (isMoldMakingExtraVo != null) {
|
||||||
|
SpdmDemandExtraReq demandExtraReq = new SpdmDemandExtraReq();
|
||||||
|
demandExtraReq.setDemandId(req.getUuid());
|
||||||
|
demandExtraReq.setPropertyName(IS_MOLD_MAKING);
|
||||||
|
demandExtraReq.setPropertyValue(isMoldMakingExtraVo.getPropertyValue());
|
||||||
|
demandExtraReq.setPropertyClass(isMoldMakingExtraVo.getPropertyClass());
|
||||||
|
demandExtraReq.setCreator(jobNumber);
|
||||||
|
demandExtraReq.setCreateTime(curDateStr);
|
||||||
|
demandExtraList.add(demandExtraReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(demandExtraList)) {
|
||||||
|
demandMapper.addDemandExtra(demandExtraList);
|
||||||
|
}
|
||||||
|
|
||||||
List<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
|
List<SpdmDemandRelateMemberReq> allMemberList = new ArrayList<>();
|
||||||
String uuid = req.getUuid();
|
String uuid = req.getUuid();
|
||||||
if (StringUtils.isNotBlank(pMemberList)) {
|
if (StringUtils.isNotBlank(pMemberList)) {
|
||||||
@@ -3003,7 +3056,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
Long tenantId = ThreadLocalContext.getTenantId();
|
Long tenantId = ThreadLocalContext.getTenantId();
|
||||||
TaskNodeTree taskNodeTree = newParseTaskTree(JSONArray.parseArray(JSONArray.toJSONString(addNodeList)));
|
TaskNodeTree taskNodeTree = newParseTaskTree(JSONArray.parseArray(JSONArray.toJSONString(addNodeList)));
|
||||||
tagMap = req.getTagMap();
|
tagMap = req.getTagMap();
|
||||||
SdmResponse response = newRealAddSimulationTaskItems(taskNodeTree, tenantId, req.getTagMap(),req.getOwnRootNodeUuid());
|
List<String> tag1Id = addNodeList.get(0).getTag1();
|
||||||
|
// 查询项目的拓展属性
|
||||||
|
List<SpdmNodeExtraVo> nodeExtraList = nodeMapper.getNodeExtraListByNodeIdList(tag1Id);
|
||||||
|
SdmResponse response = newRealAddSimulationTaskItems(taskNodeTree, tenantId, req.getTagMap(),req.getOwnRootNodeUuid(),nodeExtraList);
|
||||||
if (response.getCode() != ResultCode.SUCCESS.getCode()) {
|
if (response.getCode() != ResultCode.SUCCESS.getCode()) {
|
||||||
log.error("新增任务、分析项失败,清理新增数据!");
|
log.error("新增任务、分析项失败,清理新增数据!");
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
@@ -3908,4 +3964,20 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
|
|||||||
|
|
||||||
return PageUtils.getJsonObjectSdmResponse(pagedList, pageInfo);
|
return PageUtils.getJsonObjectSdmResponse(pagedList, pageInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getTagProperty(Object obj, String propertyName) throws Exception {
|
||||||
|
Class<?> clazz = obj.getClass();
|
||||||
|
Field field = clazz.getDeclaredField(propertyName);
|
||||||
|
field.setAccessible(true);
|
||||||
|
return (String) field.get(obj);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user