上线版本4.0(新版修改)
This commit is contained in:
parent
f120d45198
commit
27c5a0317f
@ -3,10 +3,12 @@ package com.xdap.self_development;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
|
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
|
||||||
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
|
|
||||||
|
@EnableCaching
|
||||||
@SpringBootApplication(
|
@SpringBootApplication(
|
||||||
exclude = {EmbeddedMongoAutoConfiguration.class}
|
exclude = {EmbeddedMongoAutoConfiguration.class}
|
||||||
)
|
)
|
||||||
|
|||||||
@ -30,8 +30,10 @@ public class AnalysisCommonController {
|
|||||||
* @return 可用参数列表
|
* @return 可用参数列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("/getAvailableParameters")
|
@GetMapping("/getAvailableParameters")
|
||||||
public Response getAvailableParameters() {
|
public Response getAvailableParameters(
|
||||||
List<String> lists = analysisCommonParametersService.getAvailableParameters();
|
@RequestParam(required = false) String userId
|
||||||
|
) {
|
||||||
|
List<String> lists = analysisCommonParametersService.getAvailableParameters(userId);
|
||||||
return Response.ok().data(lists);
|
return Response.ok().data(lists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -40,8 +40,12 @@ public class EngineParamDetailController {
|
|||||||
* @return 参数列表
|
* @return 参数列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("/selectParamList")
|
@GetMapping("/selectParamList")
|
||||||
public Response selectParamList(@RequestParam(value = "modelID", required = false) String modelID,@RequestParam(value = "tcData", required = false) String tcData) {
|
public Response selectParamList(
|
||||||
Map<String, List<String>> list = engineParamDetailService.selectParamList(modelID,tcData);
|
@RequestParam(value = "modelID", required = false) String modelID,
|
||||||
|
@RequestParam(value = "tcData", required = false) String tcData,
|
||||||
|
@RequestParam(required = false) String userId
|
||||||
|
) {
|
||||||
|
Map<String, Set<String>> list = engineParamDetailService.selectParamList(modelID, tcData, userId);
|
||||||
return Response.ok().data(list);
|
return Response.ok().data(list);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
package com.xdap.self_development.controller;
|
package com.xdap.self_development.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.definesys.mpaas.common.http.Response;
|
||||||
import com.xdap.self_development.common.YcTaskResult;
|
import com.xdap.self_development.common.YcTaskResult;
|
||||||
import com.xdap.self_development.controller.request.YcGetTodoTaskRequest;
|
import com.xdap.self_development.controller.request.YcGetTodoTaskRequest;
|
||||||
import com.xdap.self_development.service.YcTaskResultService;
|
import com.xdap.self_development.service.YcTaskResultService;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@ -79,4 +77,25 @@ public class YcTaskResultController {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getTodoById")
|
||||||
|
public Response getTodoById(
|
||||||
|
@RequestParam String flowId
|
||||||
|
) {
|
||||||
|
return Response.ok().data(ycTaskResultService.getTodoById(flowId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getInitiatorById")
|
||||||
|
public Response getInitiatorById(
|
||||||
|
@RequestParam String flowId
|
||||||
|
) {
|
||||||
|
return Response.ok().data(ycTaskResultService.getInitiatorById(flowId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getCompletedById")
|
||||||
|
public Response getCompletedById(
|
||||||
|
@RequestParam String flowId
|
||||||
|
) {
|
||||||
|
return Response.ok().data(ycTaskResultService.getCompletedById(flowId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class EngineParamDetailRequest {
|
|||||||
/**
|
/**
|
||||||
* 版本
|
* 版本
|
||||||
*/
|
*/
|
||||||
private Integer versionNumber;
|
private Integer parameterVersion;
|
||||||
/**
|
/**
|
||||||
* 发动机型号+产品编号
|
* 发动机型号+产品编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -39,6 +39,11 @@ public class DataEntryEngineModelDto extends MpaasBasePojo {
|
|||||||
*/
|
*/
|
||||||
private String modelName;
|
private String modelName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* yc或oth
|
||||||
|
*/
|
||||||
|
private String ycOrOth;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品编号
|
* 产品编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -33,5 +33,5 @@ public class YcTodoTaskCommonResultDTO {
|
|||||||
private String urlMobileOA;
|
private String urlMobileOA;
|
||||||
private String urlWx;
|
private String urlWx;
|
||||||
private String mobileSuit;
|
private String mobileSuit;
|
||||||
|
private String systemName;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@SQLQuery(value = {
|
@SQLQuery(value = {
|
||||||
@SQL(view = "selectLastedComment"
|
@SQL(view = "selectLastedComment"
|
||||||
, sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY param_detail_id ORDER BY creation_date DESC) AS rn FROM data_change_comment WHERE param_detail_id IN (#paramIds) ) ranked WHERE rn = 1 ORDER BY param_detail_id")
|
, sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY subsystem_name, parameter_name ORDER BY creation_date DESC) AS rn FROM data_change_comment WHERE param_detail_id IN (#paramIds) ) ranked WHERE rn = 1 ORDER BY subsystem_name, parameter_name")
|
||||||
})
|
})
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
|||||||
@ -86,6 +86,11 @@ public class EngineReviewListPojo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String createdBy;
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 版本
|
||||||
|
*/
|
||||||
|
private Integer objectVersionNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -36,7 +36,8 @@ public class PersonReadListener implements ReadListener<ResponsiblePersonPojo> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
XdapUserView user = responsiblePersonService
|
XdapUserView user = responsiblePersonService
|
||||||
.getUserByDeptAndName(responsiblePerson.getDepartment(), responsiblePerson.getUserAccount(), responsiblePerson.getUsername());
|
.getUserByDeptAndName(responsiblePerson.getDepartment(), responsiblePerson.getUserAccount(),
|
||||||
|
responsiblePerson.getUsername());
|
||||||
if (user.getUserId() == null) {
|
if (user.getUserId() == null) {
|
||||||
problems.setFlag(true);
|
problems.setFlag(true);
|
||||||
problems.getErrors().add("责任人导入失败:用户" + responsiblePerson.getUsername() + "无法找到或有多个重名用户");
|
problems.getErrors().add("责任人导入失败:用户" + responsiblePerson.getUsername() + "无法找到或有多个重名用户");
|
||||||
|
|||||||
@ -103,6 +103,9 @@ public class SheetDataListener implements ReadListener<ParameterPojo> {
|
|||||||
public void doAfterAllAnalysed(AnalysisContext context) {
|
public void doAfterAllAnalysed(AnalysisContext context) {
|
||||||
if (!cachedDataList.isEmpty()) {
|
if (!cachedDataList.isEmpty()) {
|
||||||
processBatch();
|
processBatch();
|
||||||
|
} else {
|
||||||
|
problems.getErrors().add("模板导入失败:模板'" + currentSheetName + "'没有数据");
|
||||||
|
problems.setFlag(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,5 +13,5 @@ public interface AnalysisCommonParametersService {
|
|||||||
|
|
||||||
List<DataEntryEngineModelPojo> selectModelByLike(ReportRequest request);
|
List<DataEntryEngineModelPojo> selectModelByLike(ReportRequest request);
|
||||||
|
|
||||||
List<String> getAvailableParameters();
|
List<String> getAvailableParameters(String userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import com.xdap.self_development.domain.pojo.ParameterPojo;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -24,7 +23,7 @@ import java.util.Set;
|
|||||||
public interface EngineParamDetailService {
|
public interface EngineParamDetailService {
|
||||||
|
|
||||||
|
|
||||||
HashMap<String, List<String>> selectParamList(String modelID,String tcData);
|
Map<String, Set<String>> selectParamList(String modelID, String tcData, String userId);
|
||||||
|
|
||||||
void excelImport(MultipartFile file,String modelId, String userId);
|
void excelImport(MultipartFile file,String modelId, String userId);
|
||||||
|
|
||||||
@ -55,4 +54,8 @@ public interface EngineParamDetailService {
|
|||||||
List<XdapUsers> selectPersonoByType(String subSystem, String dept, Integer type);
|
List<XdapUsers> selectPersonoByType(String subSystem, String dept, Integer type);
|
||||||
|
|
||||||
Map<String, Map<String, Set<String>>> selectParamListAndModel(String modelID, Integer parameterVersion, String userId);
|
Map<String, Map<String, Set<String>>> selectParamListAndModel(String modelID, Integer parameterVersion, String userId);
|
||||||
|
|
||||||
|
List<ParameterPojo> selectParamByIsUserId(List<ParameterPojo> list, String userId);
|
||||||
|
|
||||||
|
List<EngineParamDetailPojo> selectModelParamByIsUserId(List<EngineParamDetailPojo> list, String userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,12 +4,16 @@ package com.xdap.self_development.service;
|
|||||||
import com.xdap.self_development.controller.request.ModelRolesRequest;
|
import com.xdap.self_development.controller.request.ModelRolesRequest;
|
||||||
import com.xdap.self_development.controller.request.RolePerJoinRequest;
|
import com.xdap.self_development.controller.request.RolePerJoinRequest;
|
||||||
import com.xdap.self_development.controller.request.UserRoleBindingRequest;
|
import com.xdap.self_development.controller.request.UserRoleBindingRequest;
|
||||||
|
import com.xdap.self_development.domain.pojo.EngineParamDetailPojo;
|
||||||
import com.xdap.self_development.domain.pojo.ModelRolesPojo;
|
import com.xdap.self_development.domain.pojo.ModelRolesPojo;
|
||||||
|
import com.xdap.self_development.domain.pojo.ParameterPojo;
|
||||||
import com.xdap.self_development.domain.view.MenuParamView;
|
import com.xdap.self_development.domain.view.MenuParamView;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public interface ModelRoleService {
|
public interface ModelRoleService {
|
||||||
|
|
||||||
@ -30,4 +34,26 @@ public interface ModelRoleService {
|
|||||||
void userRoleBinding(UserRoleBindingRequest userRoleBindingRequest);
|
void userRoleBinding(UserRoleBindingRequest userRoleBindingRequest);
|
||||||
|
|
||||||
HashMap<String, List<String>> selectUserOrDeptByRole(@NotBlank String roleID);
|
HashMap<String, List<String>> selectUserOrDeptByRole(@NotBlank String roleID);
|
||||||
|
|
||||||
|
boolean matchesAnyPermission(
|
||||||
|
EngineParamDetailPojo pojo,
|
||||||
|
Map<String, Map<String, Set<String>>> permissionIndex,
|
||||||
|
String cat
|
||||||
|
);
|
||||||
|
|
||||||
|
boolean matchesAnyPermission(
|
||||||
|
EngineParamDetailPojo pojo,
|
||||||
|
Map<String, Map<String, Set<String>>> permissionIndex,
|
||||||
|
List<String> cats
|
||||||
|
);
|
||||||
|
|
||||||
|
boolean matchesAnyPermission(
|
||||||
|
ParameterPojo pojo,
|
||||||
|
Map<String, Map<String, Set<String>>> permissionIndex,
|
||||||
|
List<String> cats
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, Map<String, Set<String>>> buildPermissionIndex(
|
||||||
|
Set<String> permissions
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,9 @@ package com.xdap.self_development.service;
|
|||||||
|
|
||||||
import com.xdap.self_development.common.YcTaskResult;
|
import com.xdap.self_development.common.YcTaskResult;
|
||||||
import com.xdap.self_development.controller.request.YcGetTodoTaskRequest;
|
import com.xdap.self_development.controller.request.YcGetTodoTaskRequest;
|
||||||
|
import com.xdap.self_development.domain.pojo.CompletedTaskPojo;
|
||||||
|
import com.xdap.self_development.domain.pojo.InitiatedTaskPojo;
|
||||||
|
import com.xdap.self_development.domain.pojo.TodoTaskPojo;
|
||||||
|
|
||||||
public interface YcTaskResultService {
|
public interface YcTaskResultService {
|
||||||
YcTaskResult returnTodoTask(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
YcTaskResult returnTodoTask(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
||||||
@ -9,4 +12,10 @@ public interface YcTaskResultService {
|
|||||||
YcTaskResult returnCompleted(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
YcTaskResult returnCompleted(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
||||||
|
|
||||||
YcTaskResult returnInitiator(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
YcTaskResult returnInitiator(YcGetTodoTaskRequest ycGetTodoTaskRequest);
|
||||||
|
|
||||||
|
TodoTaskPojo getTodoById(String flowId);
|
||||||
|
|
||||||
|
InitiatedTaskPojo getInitiatorById(String flowId);
|
||||||
|
|
||||||
|
CompletedTaskPojo getCompletedById(String flowId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -230,6 +230,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
engineReviewListPojo.setReviewComment(approvalNodeRequest.getComment());
|
engineReviewListPojo.setReviewComment(approvalNodeRequest.getComment());
|
||||||
engineReviewListPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
engineReviewListPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
engineReviewListPojo.setCreatedBy(userId);
|
engineReviewListPojo.setCreatedBy(userId);
|
||||||
|
engineReviewListPojo.setObjectVersionNumber(model.getVersionNumber());
|
||||||
|
|
||||||
engineReviewListPojo.setReturnNum(0);
|
engineReviewListPojo.setReturnNum(0);
|
||||||
engineReviewListPojo.setPreNode(-1);
|
engineReviewListPojo.setPreNode(-1);
|
||||||
@ -542,7 +543,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
.update("operation", "")// 清空操作状态
|
.update("operation", "")// 清空操作状态
|
||||||
// .update("minor_version", "")// 小版本清空
|
// .update("minor_version", "")// 小版本清空
|
||||||
.update("last_update_date", new Date())
|
.update("last_update_date", new Date())
|
||||||
.eq("last_updated_by", userId)
|
.eq("last_updated_by", flow.getCreatedBy()) // 流程创建人
|
||||||
.eq("engine_model_id", flow.getModelId())
|
.eq("engine_model_id", flow.getModelId())
|
||||||
.eq("major_version", model.getVersionNumber())
|
.eq("major_version", model.getVersionNumber())
|
||||||
.doUpdate(EngineParamDetailPojo.class);
|
.doUpdate(EngineParamDetailPojo.class);
|
||||||
@ -1401,7 +1402,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
List<EngineParamDetailPojo> detailPojos = bd.getBusinessDatabase()
|
List<EngineParamDetailPojo> detailPojos = bd.getBusinessDatabase()
|
||||||
.eq("approval_id", approvalId)
|
.eq("approval_id", approvalId)
|
||||||
.doQuery(EngineParamDetailPojo.class);
|
.doQuery(EngineParamDetailPojo.class);
|
||||||
List<String> ids = detailPojos.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList());
|
Set<String> ids = detailPojos.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toSet());
|
||||||
if (ObjectUtils.isEmpty(ids)) {
|
if (ObjectUtils.isEmpty(ids)) {
|
||||||
throw new CommonException("该审批流没有绑定的参数,请维护好参数后重新发起审批");
|
throw new CommonException("该审批流没有绑定的参数,请维护好参数后重新发起审批");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import com.xdap.self_development.domain.view.AnalysisModelParamterView;
|
|||||||
import com.xdap.self_development.domain.view.AnalysisModelParamterViewAndParam;
|
import com.xdap.self_development.domain.view.AnalysisModelParamterViewAndParam;
|
||||||
import com.xdap.self_development.exception.CommonException;
|
import com.xdap.self_development.exception.CommonException;
|
||||||
import com.xdap.self_development.service.AnalysisCommonParametersService;
|
import com.xdap.self_development.service.AnalysisCommonParametersService;
|
||||||
|
import com.xdap.self_development.service.EngineParamDetailService;
|
||||||
import com.xdap.self_development.service.TcDataQueryService;
|
import com.xdap.self_development.service.TcDataQueryService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
@ -39,6 +40,9 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame
|
|||||||
@Resource
|
@Resource
|
||||||
TcDataQueryService tcDataQueryService;
|
TcDataQueryService tcDataQueryService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EngineParamDetailService engineParamDetailService;
|
||||||
|
|
||||||
private static final Pattern ALL_NUMBER_PATTERN = Pattern.compile("^[-+]?\\d+(\\.\\d+)?([Ee][-+]?\\d+)?$");
|
private static final Pattern ALL_NUMBER_PATTERN = Pattern.compile("^[-+]?\\d+(\\.\\d+)?([Ee][-+]?\\d+)?$");
|
||||||
|
|
||||||
|
|
||||||
@ -94,12 +98,18 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame
|
|||||||
* @return 可用参数名称列表
|
* @return 可用参数名称列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAvailableParameters() {
|
public List<String> getAvailableParameters(
|
||||||
|
String userId
|
||||||
|
) {
|
||||||
List<ParameterPojo> modelParams = businessDatabase.getBusinessDatabase()
|
List<ParameterPojo> modelParams = businessDatabase.getBusinessDatabase()
|
||||||
.viewQueryMode(true)
|
.viewQueryMode(true)
|
||||||
.view("selectAllParameters")
|
.view("selectAllParameters")
|
||||||
.doQuery(ParameterPojo.class);
|
.doQuery(ParameterPojo.class);
|
||||||
return modelParams.stream().filter(x -> x.getUnit() != null && !x.getUnit().equals("/")).map(ParameterPojo::getParameterName).distinct().collect(Collectors.toList());
|
// 按权限过滤
|
||||||
|
List<ParameterPojo> parameters = engineParamDetailService.selectParamByIsUserId(modelParams, userId);
|
||||||
|
return parameters.stream()
|
||||||
|
.filter(x -> x.getUnit() != null && !x.getUnit().equals("/"))
|
||||||
|
.map(ParameterPojo::getParameterName).distinct().collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -83,13 +83,14 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
* @return 参数列表映射
|
* @return 参数列表映射
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public HashMap<String, List<String>> selectParamList(String modelID, String tcData) {
|
public Map<String, Set<String>> selectParamList(String modelID, String tcData, String userId) {
|
||||||
List<ParameterPojo> parameters;
|
List<ParameterPojo> allParameters;
|
||||||
if (ObjectUtils.isNotEmpty(tcData) && "tc".equals(tcData)) {
|
if (ObjectUtils.isNotEmpty(tcData) && "tc".equals(tcData)) {
|
||||||
parameters = selectAllAndTcByNewVersion();
|
allParameters = selectAllAndTcByNewVersion();
|
||||||
} else {
|
} else {
|
||||||
parameters = selectAllByNewVersion();
|
allParameters = selectAllByNewVersion();
|
||||||
}
|
}
|
||||||
|
List<ParameterPojo> parameters = selectParamByIsUserId(allParameters, userId);
|
||||||
|
|
||||||
List<TemplatePojo> templates = bd.getBusinessDatabase()
|
List<TemplatePojo> templates = bd.getBusinessDatabase()
|
||||||
.eq("status", "COMPLETE")
|
.eq("status", "COMPLETE")
|
||||||
@ -97,28 +98,32 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
if (ObjectUtils.isEmpty(templates)) {
|
if (ObjectUtils.isEmpty(templates)) {
|
||||||
throw new CommonException("未找到未找到已发布的参数模板");
|
throw new CommonException("未找到未找到已发布的参数模板");
|
||||||
}
|
}
|
||||||
//查找每个模板最新版本
|
|
||||||
// 每组内按版本号降序,取第一个(最新版本)
|
AtomicInteger seq = new AtomicInteger(1);
|
||||||
Map<String, TemplatePojo> latestTemplateMap = templates.stream()
|
LinkedHashMap<String, Integer> subsystemOrderMap = parameters.stream()
|
||||||
// 按模板ID分组
|
.sorted(Comparator
|
||||||
.collect(Collectors.toMap(TemplatePojo::getTemplateName, Function.identity(), BinaryOperator.maxBy(Comparator.comparingInt(TemplatePojo::getVersion))));
|
.comparing(ParameterPojo::getSubsystemName, Collator.getInstance(Locale.CHINA))
|
||||||
ArrayList<TemplatePojo> templatesMax = new ArrayList<>(latestTemplateMap.values());
|
.thenComparing(ParameterPojo::getParameterName, Collator.getInstance(Locale.CHINA))
|
||||||
Map<String, Long> systemOrderMap = templatesMax.stream()
|
)
|
||||||
|
.map(ParameterPojo::getSubsystemName)
|
||||||
|
.distinct()
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
TemplatePojo::getTemplateName, // key: 子系统编码
|
s -> s,
|
||||||
TemplatePojo::getOrderNum, // value: 排序号
|
s -> seq.getAndIncrement(), // 每次获取当前值,再自增(从1开始)
|
||||||
(oldValue, newValue) -> oldValue
|
(o, n) -> o,
|
||||||
|
LinkedHashMap::new
|
||||||
));
|
));
|
||||||
Map<String, List<String>> collect = parameters.stream()
|
|
||||||
|
Map<String, Set<String>> collect = parameters.stream()
|
||||||
.collect(Collectors.groupingBy(
|
.collect(Collectors.groupingBy(
|
||||||
ParameterPojo::getSubsystemName,
|
ParameterPojo::getSubsystemName,
|
||||||
Collectors.mapping(
|
Collectors.mapping(
|
||||||
ParameterPojo::getPartsName, // 提取 零部件名称字段
|
ParameterPojo::getPartsName, // 提取 零部件名称字段
|
||||||
Collectors.toList()
|
Collectors.toSet()
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
if (ObjectUtils.isNotEmpty(modelID)) {
|
if (ObjectUtils.isNotEmpty(modelID)) {
|
||||||
systemOrderMap.put("整车参数", (long) 0);
|
subsystemOrderMap.put("整车参数", 0);
|
||||||
DataEntryEngineModelPojo dataEntryEngineModelPojo = dataEntryEngineModelService.selectBymodelId(modelID);
|
DataEntryEngineModelPojo dataEntryEngineModelPojo = dataEntryEngineModelService.selectBymodelId(modelID);
|
||||||
//状态代号
|
//状态代号
|
||||||
String productNumber = dataEntryEngineModelPojo.getProductNumber();
|
String productNumber = dataEntryEngineModelPojo.getProductNumber();
|
||||||
@ -143,7 +148,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
Date productionDate = dataEntryEngineModelPojo.getProductionDate();
|
Date productionDate = dataEntryEngineModelPojo.getProductionDate();
|
||||||
String manufacturerName = dataEntryEngineModelPojo.getManufacturerName();
|
String manufacturerName = dataEntryEngineModelPojo.getManufacturerName();
|
||||||
String manufacturerAbbreviation = dataEntryEngineModelPojo.getManufacturerAbbreviation();
|
String manufacturerAbbreviation = dataEntryEngineModelPojo.getManufacturerAbbreviation();
|
||||||
ArrayList<String> strings = new ArrayList<>();
|
Set<String> strings = new HashSet<>();
|
||||||
if (dataEntryEngineModelPojo.getYcOrOth().equals("玉柴")) {
|
if (dataEntryEngineModelPojo.getYcOrOth().equals("玉柴")) {
|
||||||
strings.add("状态代号:" + productNumber);
|
strings.add("状态代号:" + productNumber);
|
||||||
} else {
|
} else {
|
||||||
@ -169,7 +174,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
// 保持顺序
|
// 保持顺序
|
||||||
return collect.entrySet().stream()
|
return collect.entrySet().stream()
|
||||||
.sorted(Comparator.comparing(entry ->
|
.sorted(Comparator.comparing(entry ->
|
||||||
systemOrderMap.getOrDefault(entry.getKey(), Long.MAX_VALUE)
|
subsystemOrderMap.getOrDefault(entry.getKey(), Integer.MAX_VALUE)
|
||||||
))
|
))
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
Map.Entry::getKey,
|
Map.Entry::getKey,
|
||||||
@ -291,8 +296,11 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
// TODO:根据权限过滤
|
// TODO:根据权限过滤
|
||||||
List<MenuParamView> menuParamViews = modelRoleService.selectPersByUser(userId);
|
List<MenuParamView> menuParamViews = modelRoleService.selectPersByUser(userId);
|
||||||
// 管理员返回全部
|
// 管理员返回全部
|
||||||
if (menuParamViews.size() == 1 && menuParamViews.get(0).getIsAdmin() == 1) {
|
for (MenuParamView menuParamView : menuParamViews) {
|
||||||
return pojoList;
|
if (menuParamView.getIsAdmin() != null &&
|
||||||
|
menuParamView.getIsAdmin() == 1) {
|
||||||
|
return pojoList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 过滤返回
|
// 过滤返回
|
||||||
@ -305,53 +313,15 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
.map(MenuParamView::getPermissionPath)
|
.map(MenuParamView::getPermissionPath)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
return pojoList.stream()
|
return pojoList.stream()
|
||||||
.filter(pojo -> matchesAnyPermission(pojo, result, model.getYcOrOth()))
|
.filter(pojo ->
|
||||||
|
modelRoleService.matchesAnyPermission(
|
||||||
|
pojo,
|
||||||
|
modelRoleService.buildPermissionIndex(result),
|
||||||
|
model.getYcOrOth() + "发动机数据"
|
||||||
|
))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean matchesAnyPermission(EngineParamDetailPojo pojo, Set<String> permissions, String ycOrOth) {
|
|
||||||
String cat = ycOrOth + "发动机数据";
|
|
||||||
String sys = pojo.getSubsystemName();
|
|
||||||
String comp = pojo.getPartsName(); // 可能为 null 或 "/"
|
|
||||||
|
|
||||||
if (comp == null) comp = "/";
|
|
||||||
|
|
||||||
for (String perm : permissions) {
|
|
||||||
String[] parts = perm.split("/", -1); // -1 保留尾部空字符串
|
|
||||||
|
|
||||||
if (parts.length == 1) {
|
|
||||||
// "玉柴发动机数据"
|
|
||||||
if (perm.equals(cat)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (parts.length == 2) {
|
|
||||||
// "玉柴发动机数据/点火子系统"
|
|
||||||
if (parts[0].equals(cat) && parts[1].equals(sys)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (parts.length == 3) {
|
|
||||||
String permComp = parts[2];
|
|
||||||
// "玉柴发动机数据/点火子系统/气环"
|
|
||||||
if (parts[0].equals(cat) && parts[1].equals(sys) && permComp.equals(comp)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (parts.length == 4) {
|
|
||||||
String permComp = parts[3];
|
|
||||||
if (parts[0].equals(cat)
|
|
||||||
&& parts[1].equals(sys)
|
|
||||||
&& "".equals(permComp)
|
|
||||||
) {
|
|
||||||
// 权限路径是 "玉柴发动机数据/点火子系统//")
|
|
||||||
if (comp.equals("/")) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 忽略长度 != 1,2,3 的非法路径(可选加日志)
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数列表和模型
|
* 查询参数列表和模型
|
||||||
* 根据模型ID获取参数列表和模型信息
|
* 根据模型ID获取参数列表和模型信息
|
||||||
@ -568,8 +538,8 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
.doQuery(EngineParamDetailPojo.class));
|
.doQuery(EngineParamDetailPojo.class));
|
||||||
} else {
|
} else {
|
||||||
Integer version = model.getVersionNumber();
|
Integer version = model.getVersionNumber();
|
||||||
if (request.getVersionNumber() != null) {
|
if (request.getParameterVersion() != null) {
|
||||||
version = request.getVersionNumber();
|
version = request.getParameterVersion();
|
||||||
}
|
}
|
||||||
paramDetails.addAll(bd.getBusinessDatabase()
|
paramDetails.addAll(bd.getBusinessDatabase()
|
||||||
.eq("engine_model_id", model.getId())
|
.eq("engine_model_id", model.getId())
|
||||||
@ -801,7 +771,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
initiatedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
initiatedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
||||||
initiatedTaskPojo.setProcessTitle(modelPojo.getModelName() + "-" + "分发参数填写人任务");
|
initiatedTaskPojo.setProcessTitle(modelPojo.getModelName() + "-" + "分发参数填写人任务");
|
||||||
initiatedTaskPojo.setCurrentNode(disStatus);
|
initiatedTaskPojo.setCurrentNode(disStatus);
|
||||||
initiatedTaskPojo.setCurrentProcessor(JSON.toJSONString(filledBys));
|
initiatedTaskPojo.setCurrentProcessor(ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(filledBys));
|
||||||
initiatedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
initiatedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
||||||
initiatedTaskPojo.setModelName(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getModelName() : "");
|
initiatedTaskPojo.setModelName(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getModelName() : "");
|
||||||
initiatedTaskPojo.setModelId(modelPojo.getId());
|
initiatedTaskPojo.setModelId(modelPojo.getId());
|
||||||
@ -815,6 +785,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("id", initiatedTask.getId())
|
.eq("id", initiatedTask.getId())
|
||||||
.update("current_node", disStatus)
|
.update("current_node", disStatus)
|
||||||
|
.update("current_processor", ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(filledBys))
|
||||||
.doUpdate(InitiatedTaskPojo.class);
|
.doUpdate(InitiatedTaskPojo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -832,7 +803,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
completedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
completedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
||||||
completedTaskPojo.setProcessTitle(modelPojo.getModelName() + "-" + "分发参数填写人任务");
|
completedTaskPojo.setProcessTitle(modelPojo.getModelName() + "-" + "分发参数填写人任务");
|
||||||
completedTaskPojo.setCurrentNode(distStatus);
|
completedTaskPojo.setCurrentNode(distStatus);
|
||||||
completedTaskPojo.setCurrentProcessor(JSON.toJSONString(filledBys));
|
completedTaskPojo.setCurrentProcessor(ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(filledBys));
|
||||||
completedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
completedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
||||||
completedTaskPojo.setModelName(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getModelName() : "");
|
completedTaskPojo.setModelName(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getModelName() : "");
|
||||||
completedTaskPojo.setModelId(modelPojo.getId());
|
completedTaskPojo.setModelId(modelPojo.getId());
|
||||||
@ -847,6 +818,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("id", completedTask.getId())
|
.eq("id", completedTask.getId())
|
||||||
.update("current_node", distStatus)
|
.update("current_node", distStatus)
|
||||||
|
.update("current_processor", ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(filledBys))
|
||||||
.doUpdate(CompletedTaskPojo.class);
|
.doUpdate(CompletedTaskPojo.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1058,4 +1030,62 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
|
|||||||
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
|
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
|
||||||
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodedFileName + ".xlsx");
|
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodedFileName + ".xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ParameterPojo> selectParamByIsUserId(List<ParameterPojo> list, String userId) {
|
||||||
|
// 没有人则返回全部
|
||||||
|
if (userId == null || userId.isEmpty()) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
// TODO:根据权限过滤
|
||||||
|
List<MenuParamView> menuParamViews = modelRoleService.selectPersByUser(userId);
|
||||||
|
// 管理员返回全部
|
||||||
|
for (MenuParamView menuParamView : menuParamViews) {
|
||||||
|
if (menuParamView.getIsAdmin() != null && menuParamView.getIsAdmin() == 1) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> result = menuParamViews.stream()
|
||||||
|
.map(MenuParamView::getPermissionPath)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
return list.stream()
|
||||||
|
.filter(pojo ->
|
||||||
|
modelRoleService.matchesAnyPermission(
|
||||||
|
pojo,
|
||||||
|
modelRoleService.buildPermissionIndex(result),
|
||||||
|
Arrays.asList("玉柴发动机数据", "竞品发动机数据")
|
||||||
|
))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<EngineParamDetailPojo> selectModelParamByIsUserId(List<EngineParamDetailPojo> list, String userId) {
|
||||||
|
// 没有人则返回全部
|
||||||
|
if (userId == null || userId.isEmpty()) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
// TODO:根据权限过滤
|
||||||
|
List<MenuParamView> menuParamViews = modelRoleService.selectPersByUser(userId);
|
||||||
|
// 管理员返回全部
|
||||||
|
for (MenuParamView menuParamView : menuParamViews) {
|
||||||
|
if (menuParamView.getIsAdmin() != null && menuParamView.getIsAdmin() == 1) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> result = menuParamViews.stream()
|
||||||
|
.map(MenuParamView::getPermissionPath)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
return list.stream()
|
||||||
|
.filter(pojo ->
|
||||||
|
modelRoleService.matchesAnyPermission(
|
||||||
|
pojo,
|
||||||
|
modelRoleService.buildPermissionIndex(result),
|
||||||
|
Arrays.asList("玉柴发动机数据", "竞品发动机数据")
|
||||||
|
))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,10 +8,7 @@ import com.xdap.self_development.controller.request.ModelRolesRequest;
|
|||||||
import com.xdap.self_development.controller.request.RolePerJoinRequest;
|
import com.xdap.self_development.controller.request.RolePerJoinRequest;
|
||||||
import com.xdap.self_development.controller.request.UserRoleBindingRequest;
|
import com.xdap.self_development.controller.request.UserRoleBindingRequest;
|
||||||
import com.xdap.self_development.domain.enums.ParamPermissionEnum;
|
import com.xdap.self_development.domain.enums.ParamPermissionEnum;
|
||||||
import com.xdap.self_development.domain.pojo.ModelDepUserRolePojo;
|
import com.xdap.self_development.domain.pojo.*;
|
||||||
import com.xdap.self_development.domain.pojo.ModelMenuParameterPojo;
|
|
||||||
import com.xdap.self_development.domain.pojo.ModelRolePermissionPojo;
|
|
||||||
import com.xdap.self_development.domain.pojo.ModelRolesPojo;
|
|
||||||
import com.xdap.self_development.domain.view.MenuParamView;
|
import com.xdap.self_development.domain.view.MenuParamView;
|
||||||
import com.xdap.self_development.exception.CommonException;
|
import com.xdap.self_development.exception.CommonException;
|
||||||
import com.xdap.self_development.service.ModelRoleService;
|
import com.xdap.self_development.service.ModelRoleService;
|
||||||
@ -359,4 +356,132 @@ public class ModelRoleServiceImpl implements ModelRoleService {
|
|||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean matchesAnyPermission(
|
||||||
|
EngineParamDetailPojo pojo,
|
||||||
|
Map<String, Map<String, Set<String>>> permissionIndex,
|
||||||
|
String cat
|
||||||
|
) {
|
||||||
|
String sys = pojo.getSubsystemName();
|
||||||
|
String comp = Optional.ofNullable(pojo.getPartsName()).orElse("/");
|
||||||
|
|
||||||
|
Map<String, Set<String>> sysMap = permissionIndex.get(cat);
|
||||||
|
if (sysMap == null) return false;
|
||||||
|
|
||||||
|
// 1. 检查是否有 cat/*/* (即 parts.length == 1)
|
||||||
|
if (sysMap.containsKey("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 检查是否有 cat/sys/* (即 parts.length == 2)
|
||||||
|
Set<String> compSet = sysMap.get(sys);
|
||||||
|
if (compSet != null) {
|
||||||
|
if (compSet.contains("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return compSet.contains(comp);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean matchesAnyPermission(EngineParamDetailPojo pojo, Map<String, Map<String, Set<String>>> permissionIndex, List<String> cats) {
|
||||||
|
String sys = pojo.getSubsystemName();
|
||||||
|
String comp = Optional.ofNullable(pojo.getPartsName()).orElse("/");
|
||||||
|
|
||||||
|
for (String cat : cats) {
|
||||||
|
Map<String, Set<String>> sysMap = permissionIndex.get(cat);
|
||||||
|
if (sysMap == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sysMap.containsKey("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> compSet = sysMap.get(sys);
|
||||||
|
if (compSet != null) {
|
||||||
|
if (compSet.contains("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (compSet.contains(comp)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean matchesAnyPermission(
|
||||||
|
ParameterPojo pojo,
|
||||||
|
Map<String, Map<String, Set<String>>> permissionIndex,
|
||||||
|
List<String> cats
|
||||||
|
) {
|
||||||
|
String sys = pojo.getSubsystemName();
|
||||||
|
String comp = Optional.ofNullable(pojo.getPartsName()).orElse("/");
|
||||||
|
|
||||||
|
for (String cat : cats) {
|
||||||
|
Map<String, Set<String>> sysMap = permissionIndex.get(cat);
|
||||||
|
if (sysMap == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sysMap.containsKey("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> compSet = sysMap.get(sys);
|
||||||
|
if (compSet != null) {
|
||||||
|
if (compSet.contains("*")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (compSet.contains(comp)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Map<String, Set<String>>> buildPermissionIndex(
|
||||||
|
Set<String> permissions
|
||||||
|
) {
|
||||||
|
Map<String, Map<String, Set<String>>> index = new HashMap<>();
|
||||||
|
|
||||||
|
for (String perm : permissions) {
|
||||||
|
String[] parts = perm.split("/", -1);
|
||||||
|
String cat, sys, comp;
|
||||||
|
|
||||||
|
if (parts.length == 1) {
|
||||||
|
cat = parts[0];
|
||||||
|
sys = "*"; // 表示通配
|
||||||
|
comp = "*";
|
||||||
|
} else if (parts.length == 2) {
|
||||||
|
cat = parts[0];
|
||||||
|
sys = parts[1];
|
||||||
|
comp = "*";
|
||||||
|
} else if (parts.length == 3) {
|
||||||
|
cat = parts[0];
|
||||||
|
sys = parts[1];
|
||||||
|
comp = parts[2];
|
||||||
|
} else if (parts.length == 4 && parts[3].isEmpty()) {
|
||||||
|
// "cat/sys//" → comp 应视为 "/"
|
||||||
|
cat = parts[0];
|
||||||
|
sys = parts[1];
|
||||||
|
comp = "/";
|
||||||
|
} else {
|
||||||
|
// 非法格式,跳过或记录日志
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
index.computeIfAbsent(cat, k -> new HashMap<>())
|
||||||
|
.computeIfAbsent(sys, k -> new HashSet<>())
|
||||||
|
.add(comp);
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import com.xdap.self_development.domain.pojo.TemplateAndParameterPojo;
|
|||||||
import com.xdap.self_development.domain.pojo.TemplatePojo;
|
import com.xdap.self_development.domain.pojo.TemplatePojo;
|
||||||
import com.xdap.self_development.domain.view.TemplateInfoView;
|
import com.xdap.self_development.domain.view.TemplateInfoView;
|
||||||
import com.xdap.self_development.exception.CommonException;
|
import com.xdap.self_development.exception.CommonException;
|
||||||
|
import com.xdap.self_development.service.ModelRoleService;
|
||||||
import com.xdap.self_development.service.ParameterService;
|
import com.xdap.self_development.service.ParameterService;
|
||||||
import com.xdap.self_development.utils.FormulaValidatorUtils;
|
import com.xdap.self_development.utils.FormulaValidatorUtils;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -40,6 +41,8 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
private BusinessDatabase bd;
|
private BusinessDatabase bd;
|
||||||
@Resource
|
@Resource
|
||||||
private ParameterService myself;
|
private ParameterService myself;
|
||||||
|
@Resource
|
||||||
|
private ModelRoleService modelRoleService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据条件获取参数
|
* 根据条件获取参数
|
||||||
@ -84,6 +87,14 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
public TemplateInfoView maintenanceParameters(UpdateParameterForm form) {
|
public TemplateInfoView maintenanceParameters(UpdateParameterForm form) {
|
||||||
// 公式格式检查
|
// 公式格式检查
|
||||||
for (ParameterForm parameter : form.getParameterForms()) {
|
for (ParameterForm parameter : form.getParameterForms()) {
|
||||||
|
|
||||||
|
if ("数据平台手工录入".equals(parameter.getParameterSource()) && parameter.getDepartment() == null) {
|
||||||
|
throw new CommonException(String.format("参数'%s'部门不能为空", parameter.getParameterName()));
|
||||||
|
}
|
||||||
|
if (parameter.getPartsName() == null || parameter.getPartsName().isEmpty()) {
|
||||||
|
parameter.setPartsName("/");
|
||||||
|
}
|
||||||
|
|
||||||
if (Objects.equals(parameter.getParameterSource(), "公式计算")) {
|
if (Objects.equals(parameter.getParameterSource(), "公式计算")) {
|
||||||
Map<String, Object> validationResult = FormulaValidatorUtils.validateFormulaDetailed(
|
Map<String, Object> validationResult = FormulaValidatorUtils.validateFormulaDetailed(
|
||||||
parameter.getNumberOrFormula());
|
parameter.getNumberOrFormula());
|
||||||
@ -569,7 +580,9 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
result.getNewParameters().stream()
|
result.getNewParameters().stream()
|
||||||
.map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId()))
|
.map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
bd.getBusinessDatabase().doBatchInsert(templateAndParameters);
|
if (!templateAndParameters.isEmpty()) {
|
||||||
|
bd.getBusinessDatabase().doBatchInsert(templateAndParameters);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 如果不是原模板
|
// 如果不是原模板
|
||||||
else {
|
else {
|
||||||
@ -578,7 +591,9 @@ public class ParameterServiceImpl implements ParameterService {
|
|||||||
.filter(parameter -> !parameterIds.contains(parameter.getId()))
|
.filter(parameter -> !parameterIds.contains(parameter.getId()))
|
||||||
.map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId()))
|
.map(parameter -> createTemplateAndParameter(newTemplate.getId(), parameter.getId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
bd.getBusinessDatabase().doBatchInsert(templateAndParameters);
|
if (!templateAndParameters.isEmpty()) {
|
||||||
|
bd.getBusinessDatabase().doBatchInsert(templateAndParameters);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 保存修订记录
|
// 保存修订记录
|
||||||
if (!result.getRevisionRecords().isEmpty()) {
|
if (!result.getRevisionRecords().isEmpty()) {
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService {
|
|||||||
throw new CommonException("没有找到研发总院");
|
throw new CommonException("没有找到研发总院");
|
||||||
}
|
}
|
||||||
XdapDepartments xdapDepartment = bd.getSystemDatabase()
|
XdapDepartments xdapDepartment = bd.getSystemDatabase()
|
||||||
.eq("id", form.getDepartmentId())
|
.eq("name", form.getDepartment())
|
||||||
.eq("parent_id", currentDept.getId())
|
.eq("parent_id", currentDept.getId())
|
||||||
.doQueryFirst(XdapDepartments.class);
|
.doQueryFirst(XdapDepartments.class);
|
||||||
if (xdapDepartment == null) {
|
if (xdapDepartment == null) {
|
||||||
|
|||||||
@ -361,7 +361,6 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
List<String> subsystemParts = request.getSubsystemParts();
|
List<String> subsystemParts = request.getSubsystemParts();
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
||||||
|
|
||||||
// 1. 前置空指针检查,提前拦截异常并给出明确信息
|
|
||||||
if (models == null || models.isEmpty()) {
|
if (models == null || models.isEmpty()) {
|
||||||
log.error("导出失败:机型列表为null或空");
|
log.error("导出失败:机型列表为null或空");
|
||||||
throw new CommonException("导出失败:机型列表不能为空");
|
throw new CommonException("导出失败:机型列表不能为空");
|
||||||
@ -380,21 +379,21 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 设置响应头
|
|
||||||
setupExcelResponse(response, "机型参数对比表" + formatter.format(LocalDateTime.now()) + ".xlsx");
|
setupExcelResponse(response, "机型参数对比表" + formatter.format(LocalDateTime.now()) + ".xlsx");
|
||||||
|
|
||||||
// 获取机型名称映射
|
// 获取机型名称映射
|
||||||
Map<String, String> modelNames = getModelNameMapping(models);
|
Map<String, String> modelNames = getModelNameMapping(models);
|
||||||
|
|
||||||
// 从Redis加载并处理数据
|
// 从Redis加载并处理数据
|
||||||
Map<String, Map<String, String>> parameterValues = new HashMap<>();
|
Map<String, Map<String, String>> parameterValues = new TreeMap<>();
|
||||||
Map<String, String[]> parameterSubsystemParts = new HashMap<>();
|
;
|
||||||
loadAndProcessRedisData(request, models, userID, subsystemParts, parameterValues, parameterSubsystemParts);
|
|
||||||
|
|
||||||
// 构建EasyExcel的表头和数据
|
loadAndProcessRedisData(request, models, userID, subsystemParts, parameterValues);
|
||||||
List<List<String>> excelData = buildExcelData(models, parameterValues, parameterSubsystemParts);
|
|
||||||
|
|
||||||
// 使用EasyExcel写入
|
// 构建表头和数据
|
||||||
|
List<List<String>> excelData = buildExcelData(models, parameterValues);
|
||||||
|
|
||||||
|
// 写入
|
||||||
try (OutputStream outputStream = response.getOutputStream()) {
|
try (OutputStream outputStream = response.getOutputStream()) {
|
||||||
EasyExcel.write(outputStream)
|
EasyExcel.write(outputStream)
|
||||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||||
@ -420,7 +419,6 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
* @return 引擎参数详情映射
|
* @return 引擎参数详情映射
|
||||||
*/
|
*/
|
||||||
public Map<String, List<EngineParamDetailPojo>> tcDataSelectByVersion(AnalysisVerRequest analysisRequest) {
|
public Map<String, List<EngineParamDetailPojo>> tcDataSelectByVersion(AnalysisVerRequest analysisRequest) {
|
||||||
List<ParameterPojo> parameters = engineParamDetailService.selectAllAndTcByNewVersion();
|
|
||||||
DataEntryEngineModelPojo dataEntryEngineModelPojo = engineModelService.selectBymodelId(analysisRequest.getEngineModelID());
|
DataEntryEngineModelPojo dataEntryEngineModelPojo = engineModelService.selectBymodelId(analysisRequest.getEngineModelID());
|
||||||
if (dataEntryEngineModelPojo == null) {
|
if (dataEntryEngineModelPojo == null) {
|
||||||
throw new CommonException("查询失败:机型不存在");
|
throw new CommonException("查询失败:机型不存在");
|
||||||
@ -439,6 +437,7 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
//批量查询所有系统数据
|
//批量查询所有系统数据
|
||||||
|
List<EngineParamDetailPojo> tcPojos = new ArrayList<>();
|
||||||
List<EngineParamDetailPojo> systemDataList = new ArrayList<>();
|
List<EngineParamDetailPojo> systemDataList = new ArrayList<>();
|
||||||
for (Map.Entry<String, String> subsystemPartsPair : subsystemPartsPairs) {
|
for (Map.Entry<String, String> subsystemPartsPair : subsystemPartsPairs) {
|
||||||
List<EngineParamDetailPojo> pojoList = bd.getBusinessDatabase()
|
List<EngineParamDetailPojo> pojoList = bd.getBusinessDatabase()
|
||||||
@ -448,14 +447,22 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
.eq("parts_name", subsystemPartsPair.getValue())
|
.eq("parts_name", subsystemPartsPair.getValue())
|
||||||
.ne("parameter_source", "TC分类表")
|
.ne("parameter_source", "TC分类表")
|
||||||
.doQuery(EngineParamDetailPojo.class);
|
.doQuery(EngineParamDetailPojo.class);
|
||||||
|
tcPojos.addAll(
|
||||||
|
bd.getBusinessDatabase()
|
||||||
|
.eq("engine_model_id", analysisRequest.getEngineModelID())
|
||||||
|
.eq("major_version", analysisRequest.getParameterVersion())
|
||||||
|
.eq("subsystem_name", subsystemPartsPair.getKey())
|
||||||
|
.eq("parts_name", subsystemPartsPair.getValue())
|
||||||
|
.eq("parameter_source", "TC分类表")
|
||||||
|
.doQuery(EngineParamDetailPojo.class)
|
||||||
|
);
|
||||||
if (ObjectUtils.isNotEmpty(pojoList)) {
|
if (ObjectUtils.isNotEmpty(pojoList)) {
|
||||||
systemDataList.addAll(pojoList);
|
systemDataList.addAll(pojoList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//批量查询所有TC数据
|
//批量查询所有TC数据
|
||||||
Map<String, List<ParameterPojo>> parameterMapTc = parameters.stream()
|
Map<String, List<EngineParamDetailPojo>> parameterMapTc = tcPojos.stream()
|
||||||
.filter(x-> Objects.equals(x.getParameterSource(), "TC分类表"))
|
|
||||||
.collect(Collectors.groupingBy(p -> p.getPartsName() + "&&" + p.getParameterName()));
|
.collect(Collectors.groupingBy(p -> p.getPartsName() + "&&" + p.getParameterName()));
|
||||||
List<Map.Entry<String, String>> subsystemPartsPairsTc = analysisRequest.getSubsystemParts().stream()
|
List<Map.Entry<String, String>> subsystemPartsPairsTc = analysisRequest.getSubsystemParts().stream()
|
||||||
.map(subsystemType -> {
|
.map(subsystemType -> {
|
||||||
@ -520,24 +527,22 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
List<EngineParamDetailPojo> tcDataPojos = allAttributes.stream()
|
List<EngineParamDetailPojo> tcDataPojos = allAttributes.stream()
|
||||||
.filter(attr -> parameterMapTc.containsKey(partsName + "&&" + attr.getIdattrtbutehame()))
|
.filter(attr -> parameterMapTc.containsKey(partsName + "&&" + attr.getIdattrtbutehame()))
|
||||||
.map(attr -> {
|
.map(attr -> {
|
||||||
ParameterPojo param = parameterMapTc.get(partsName + "&&" + attr.getIdattrtbutehame()).get(0);
|
EngineParamDetailPojo param = parameterMapTc.get(partsName + "&&" + attr.getIdattrtbutehame()).get(0);
|
||||||
EngineParamDetailPojo pojo = new EngineParamDetailPojo();
|
param.setParameterValue(attr.getFieldvalue());
|
||||||
pojo.setEngineModelId(dataEntryEngineModelPojo.getId());
|
return param;
|
||||||
pojo.setPartsName(param.getPartsName());
|
|
||||||
pojo.setSubsystemName(param.getSubsystemName());
|
|
||||||
pojo.setParameterName(param.getParameterName());
|
|
||||||
pojo.setParameterValue(attr.getFieldvalue());
|
|
||||||
pojo.setParameterId(param.getId());
|
|
||||||
return pojo;
|
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
systemDataList.addAll(tcDataPojos);
|
systemDataList.addAll(tcDataPojos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 按权限过滤返回数据
|
||||||
|
List<EngineParamDetailPojo> filerData = engineParamDetailService.selectModelParamByIsUserId(systemDataList, analysisRequest.getUserID());
|
||||||
|
|
||||||
//将allPojos存到Redis,KEY为userID+engineModelID+预操作,过期时间24小时
|
//将allPojos存到Redis,KEY为userID+engineModelID+预操作,过期时间24小时
|
||||||
try {
|
try {
|
||||||
String redisKey = analysisRequest.getUserID() + ":" + analysisRequest.getEngineModelID() + ":" + analysisRequest.getParameterVersion() + ":" + "ComparisonExport";
|
String redisKey = analysisRequest.getUserID() + ":" + analysisRequest.getEngineModelID() + ":" + analysisRequest.getParameterVersion() + ":" + "ComparisonExport";
|
||||||
String jsonValue = objectMapper.writeValueAsString(systemDataList);
|
String jsonValue = objectMapper.writeValueAsString(filerData);
|
||||||
redisTemplate.opsForValue().set(redisKey, jsonValue, 24, java.util.concurrent.TimeUnit.HOURS);
|
redisTemplate.opsForValue().set(redisKey, jsonValue, 24, java.util.concurrent.TimeUnit.HOURS);
|
||||||
log.info("成功将数据存储到Redis,KEY: {}", redisKey);
|
log.info("成功将数据存储到Redis,KEY: {}", redisKey);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -545,7 +550,7 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return systemDataList.stream().collect(Collectors.groupingBy(EngineParamDetailPojo::getSubsystemName));
|
return filerData.stream().collect(Collectors.groupingBy(EngineParamDetailPojo::getSubsystemName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -740,8 +745,7 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void loadAndProcessRedisData(ModelComparisonExportRequest request, List<ModelItem> models, String userID,
|
private void loadAndProcessRedisData(ModelComparisonExportRequest request, List<ModelItem> models, String userID,
|
||||||
List<String> subsystemParts, Map<String, Map<String, String>> parameterValues,
|
List<String> subsystemParts, Map<String, Map<String, String>> parameterValues) {
|
||||||
Map<String, String[]> parameterSubsystemParts) {
|
|
||||||
for (ModelItem model : models) {
|
for (ModelItem model : models) {
|
||||||
try {
|
try {
|
||||||
if (model == null) {
|
if (model == null) {
|
||||||
@ -772,7 +776,7 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
List<EngineParamDetailPojo> filteredPojos = filterEngineParams(allPojos, subsystemParts, request);
|
List<EngineParamDetailPojo> filteredPojos = filterEngineParams(allPojos, subsystemParts, request);
|
||||||
|
|
||||||
// 处理筛选后的数据
|
// 处理筛选后的数据
|
||||||
processFilteredParams(filteredPojos, modelId, parameterValues, parameterSubsystemParts);
|
processFilteredParams(filteredPojos, modelId, parameterValues);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String errorMsg = model != null ?
|
String errorMsg = model != null ?
|
||||||
@ -792,7 +796,7 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return allPojos.stream()
|
return allPojos.stream()
|
||||||
.filter(Objects::nonNull) // 增加null过滤
|
// .filter(Objects::nonNull) // 增加null过滤
|
||||||
.filter(pojo -> subsystemParts.stream().anyMatch(part -> {
|
.filter(pojo -> subsystemParts.stream().anyMatch(part -> {
|
||||||
String[] parts = part.split("-");
|
String[] parts = part.split("-");
|
||||||
if (parts.length != 2) return false;
|
if (parts.length != 2) return false;
|
||||||
@ -808,58 +812,51 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
|
|||||||
if ("/".equals(partsName)) {
|
if ("/".equals(partsName)) {
|
||||||
return Objects.equals(subsystem, pojo.getSubsystemName());
|
return Objects.equals(subsystem, pojo.getSubsystemName());
|
||||||
} else {
|
} else {
|
||||||
return Objects.equals(subsystem, pojo.getSubsystemName()) &&
|
return Objects.equals(subsystem, pojo.getSubsystemName()) && Objects.equals(partsName, pojo.getPartsName());
|
||||||
Objects.equals(partsName, pojo.getPartsName());
|
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processFilteredParams(List<EngineParamDetailPojo> filteredPojos, String modelId,
|
private void processFilteredParams(List<EngineParamDetailPojo> filteredPojos, String modelId,
|
||||||
Map<String, Map<String, String>> parameterValues,
|
Map<String, Map<String, String>> parameterValues) {
|
||||||
Map<String, String[]> parameterSubsystemParts) {
|
|
||||||
for (EngineParamDetailPojo pojo : filteredPojos) {
|
for (EngineParamDetailPojo pojo : filteredPojos) {
|
||||||
if (pojo == null || StringUtils.isEmpty(pojo.getParameterName())) {
|
if (pojo == null || StringUtils.isEmpty(pojo.getParameterName()) ||
|
||||||
log.warn("无效的参数项:pojo为null或参数名为空");
|
StringUtils.isEmpty(pojo.getSubsystemName())) {
|
||||||
|
log.warn("跳过无效参数项: {}", pojo);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String subsystem = pojo.getSubsystemName();
|
||||||
|
String parts = pojo.getPartsName();
|
||||||
String paramName = pojo.getParameterName();
|
String paramName = pojo.getParameterName();
|
||||||
String paramValue = pojo.getParameterValue() == null ? "" : pojo.getParameterValue();
|
String paramValue = pojo.getParameterValue();
|
||||||
|
|
||||||
parameterValues.computeIfAbsent(paramName, k -> new HashMap<>()).put(modelId + "-" + pojo.getMajorVersion(), paramValue);
|
String key = subsystem + "-" + parts + "-" + paramName;
|
||||||
|
|
||||||
// 只在首次添加时存储子系统和零部件信息
|
parameterValues.computeIfAbsent(key, k -> new HashMap<>())
|
||||||
parameterSubsystemParts.computeIfAbsent(paramName, k -> new String[]{
|
.put(modelId + "-" + pojo.getMajorVersion(), paramValue);
|
||||||
pojo.getSubsystemName() != null ? pojo.getSubsystemName() : "",
|
|
||||||
pojo.getPartsName() != null ? pojo.getPartsName() : ""
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<List<String>> buildExcelData(List<ModelItem> models,
|
private List<List<String>> buildExcelData(List<ModelItem> models,
|
||||||
Map<String, Map<String, String>> parameterValues,
|
Map<String, Map<String, String>> parameterValues) {
|
||||||
Map<String, String[]> parameterSubsystemParts) {
|
|
||||||
List<List<String>> excelData = new ArrayList<>();
|
List<List<String>> excelData = new ArrayList<>();
|
||||||
|
|
||||||
// 构建数据行
|
|
||||||
for (Map.Entry<String, Map<String, String>> entry : parameterValues.entrySet()) {
|
for (Map.Entry<String, Map<String, String>> entry : parameterValues.entrySet()) {
|
||||||
List<String> row = new ArrayList<>();
|
String key = entry.getKey();
|
||||||
String paramName = entry.getKey();
|
|
||||||
|
|
||||||
// 添加子系统和零部件信息
|
|
||||||
String[] subsystemParts = parameterSubsystemParts.get(paramName);
|
|
||||||
row.add(subsystemParts != null && subsystemParts.length >= 1 ? subsystemParts[0] : "");
|
|
||||||
row.add(subsystemParts != null && subsystemParts.length >= 2 ? subsystemParts[1] : "");
|
|
||||||
|
|
||||||
// 添加参数名
|
|
||||||
row.add(paramName);
|
|
||||||
|
|
||||||
// 添加各机型参数值
|
|
||||||
Map<String, String> values = entry.getValue();
|
Map<String, String> values = entry.getValue();
|
||||||
|
|
||||||
|
List<String> row = new ArrayList<>();
|
||||||
|
row.add(key.split("-")[0]); // 子系统
|
||||||
|
row.add(key.split("-")[1]); // 零部件
|
||||||
|
row.add(key.split("-")[2]); // 参数名
|
||||||
|
|
||||||
|
// 各机型值
|
||||||
for (ModelItem model : models) {
|
for (ModelItem model : models) {
|
||||||
String modelId = model != null ? model.getModelId() : "";
|
String modelKey = model != null ?
|
||||||
String paramVersion = model != null ? model.getParameterVersion() : "";
|
model.getModelId() + "-" + model.getParameterVersion() : "";
|
||||||
row.add(values.getOrDefault(modelId + "-" + paramVersion, ""));
|
row.add(values.getOrDefault(modelKey, ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
excelData.add(row);
|
excelData.add(row);
|
||||||
|
|||||||
@ -301,6 +301,11 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
// 验证公式
|
// 验证公式
|
||||||
for (ParameterPojo data : dataList) {
|
for (ParameterPojo data : dataList) {
|
||||||
data.setCreatedBy(createBy);
|
data.setCreatedBy(createBy);
|
||||||
|
if (data.getParameterName() == null) {
|
||||||
|
problems.setFlag(true);
|
||||||
|
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的参数名称字段为空");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (data.getSubsystemName() == null) {
|
if (data.getSubsystemName() == null) {
|
||||||
problems.setFlag(true);
|
problems.setFlag(true);
|
||||||
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的子系统字段为空");
|
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的子系统字段为空");
|
||||||
@ -311,11 +316,6 @@ public class TemplateServiceImpl implements TemplateService {
|
|||||||
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的参数类型字段为空");
|
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的参数类型字段为空");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (data.getParameterName() == null) {
|
|
||||||
problems.setFlag(true);
|
|
||||||
problems.getErrors().add("模板导入失败:" + sheetName + "模板的参数" + data.getParameterName() + "的参数名称字段为空");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.getPartsName() == null || data.getPartsName().isEmpty()) {
|
if (data.getPartsName() == null || data.getPartsName().isEmpty()) {
|
||||||
data.setPartsName("/");
|
data.setPartsName("/");
|
||||||
|
|||||||
@ -293,7 +293,7 @@ public class TodoTaskServiceImpl implements TodoTaskService {
|
|||||||
initiatedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
initiatedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
||||||
initiatedTaskPojo.setProcessTitle(model.getModelName() + "-" + "分发参数责任人任务");
|
initiatedTaskPojo.setProcessTitle(model.getModelName() + "-" + "分发参数责任人任务");
|
||||||
initiatedTaskPojo.setCurrentNode(disStatus);
|
initiatedTaskPojo.setCurrentNode(disStatus);
|
||||||
initiatedTaskPojo.setCurrentProcessor(JSON.toJSONString(resIds));
|
initiatedTaskPojo.setCurrentProcessor(ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(resIds));
|
||||||
initiatedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
initiatedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
||||||
initiatedTaskPojo.setModelName(ObjectUtils.isNotEmpty(model) ? model.getModelName() : "");
|
initiatedTaskPojo.setModelName(ObjectUtils.isNotEmpty(model) ? model.getModelName() : "");
|
||||||
initiatedTaskPojo.setModelId(modelId);
|
initiatedTaskPojo.setModelId(modelId);
|
||||||
@ -307,6 +307,7 @@ public class TodoTaskServiceImpl implements TodoTaskService {
|
|||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("id", initiatedTask.getId())
|
.eq("id", initiatedTask.getId())
|
||||||
.update("current_node", disStatus)
|
.update("current_node", disStatus)
|
||||||
|
.update("current_processor", ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(resIds))
|
||||||
.doUpdate(InitiatedTaskPojo.class);
|
.doUpdate(InitiatedTaskPojo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +325,7 @@ public class TodoTaskServiceImpl implements TodoTaskService {
|
|||||||
completedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
completedTaskPojo.setDocumentNo(UUID.randomUUID().toString());
|
||||||
completedTaskPojo.setProcessTitle(model.getModelName() + "-" + "分发参数责任人任务");
|
completedTaskPojo.setProcessTitle(model.getModelName() + "-" + "分发参数责任人任务");
|
||||||
completedTaskPojo.setCurrentNode(distStatus);
|
completedTaskPojo.setCurrentNode(distStatus);
|
||||||
completedTaskPojo.setCurrentProcessor(JSON.toJSONString(resIds));
|
completedTaskPojo.setCurrentProcessor(ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(resIds));
|
||||||
completedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
completedTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/);
|
||||||
completedTaskPojo.setModelName(ObjectUtils.isNotEmpty(model) ? model.getModelName() : "");
|
completedTaskPojo.setModelName(ObjectUtils.isNotEmpty(model) ? model.getModelName() : "");
|
||||||
completedTaskPojo.setModelId(modelId);
|
completedTaskPojo.setModelId(modelId);
|
||||||
@ -339,6 +340,7 @@ public class TodoTaskServiceImpl implements TodoTaskService {
|
|||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("id", completedTask.getId())
|
.eq("id", completedTask.getId())
|
||||||
.update("current_node", distStatus)
|
.update("current_node", distStatus)
|
||||||
|
.update("current_processor", ObjectUtils.isEmpty(toBeDistributedParams) ? null : JSON.toJSONString(resIds))
|
||||||
.doUpdate(CompletedTaskPojo.class);
|
.doUpdate(CompletedTaskPojo.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,7 +113,7 @@ public class YcTaskResultServiceImpl implements YcTaskResultService {
|
|||||||
dto.setSystemName("研发数据管理平台");
|
dto.setSystemName("研发数据管理平台");
|
||||||
dto.setUpdateDate(time2Str(todoTaskPojo.getCreationDate()));
|
dto.setUpdateDate(time2Str(todoTaskPojo.getCreationDate()));
|
||||||
dto.setActivityLabel(todoTaskPojo.getCurrentNode());
|
dto.setActivityLabel(todoTaskPojo.getCurrentNode());
|
||||||
dto.setUrl(getTodoUrl());
|
dto.setUrl(getTodoUrl() + "&flowId=" + todoTaskPojo.getId());
|
||||||
dtos.add(dto);
|
dtos.add(dto);
|
||||||
}
|
}
|
||||||
ycTaskResult.setCode("ok");
|
ycTaskResult.setCode("ok");
|
||||||
@ -171,7 +171,8 @@ public class YcTaskResultServiceImpl implements YcTaskResultService {
|
|||||||
dto.setTitle(completedTaskPojo.getProcessTitle());
|
dto.setTitle(completedTaskPojo.getProcessTitle());
|
||||||
dto.setCreateDate(time2Str(completedTaskPojo.getCreationDate()));
|
dto.setCreateDate(time2Str(completedTaskPojo.getCreationDate()));
|
||||||
dto.setActivityName(completedTaskPojo.getCurrentNode());
|
dto.setActivityName(completedTaskPojo.getCurrentNode());
|
||||||
dto.setUrl(getCompletedUrl());
|
dto.setSystemName("研发数据管理平台");
|
||||||
|
dto.setUrl(getCompletedUrl() + "&flowId=" + completedTaskPojo.getId());
|
||||||
list.add(dto);
|
list.add(dto);
|
||||||
});
|
});
|
||||||
ycTaskResult.setCode("ok");
|
ycTaskResult.setCode("ok");
|
||||||
@ -234,7 +235,8 @@ public class YcTaskResultServiceImpl implements YcTaskResultService {
|
|||||||
dto.setTitle(initiatedTaskPojo.getProcessTitle());
|
dto.setTitle(initiatedTaskPojo.getProcessTitle());
|
||||||
dto.setCreateDate(time2Str(initiatedTaskPojo.getCreationDate()));
|
dto.setCreateDate(time2Str(initiatedTaskPojo.getCreationDate()));
|
||||||
dto.setActivityName(initiatedTaskPojo.getCurrentNode());
|
dto.setActivityName(initiatedTaskPojo.getCurrentNode());
|
||||||
dto.setUrl(getInitiatorUrl());
|
dto.setUrl(getInitiatorUrl() + "&flowId=" + initiatedTaskPojo.getId());
|
||||||
|
dto.setSystemName("研发数据管理平台");
|
||||||
list.add(dto);
|
list.add(dto);
|
||||||
});
|
});
|
||||||
ycTaskResult.setCode("ok");
|
ycTaskResult.setCode("ok");
|
||||||
@ -243,6 +245,27 @@ public class YcTaskResultServiceImpl implements YcTaskResultService {
|
|||||||
return ycTaskResult;
|
return ycTaskResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TodoTaskPojo getTodoById(String flowId) {
|
||||||
|
return bd.getBusinessDatabase()
|
||||||
|
.eq("id", flowId)
|
||||||
|
.doQueryFirst(TodoTaskPojo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InitiatedTaskPojo getInitiatorById(String flowId) {
|
||||||
|
return bd.getBusinessDatabase()
|
||||||
|
.eq("id", flowId)
|
||||||
|
.doQueryFirst(InitiatedTaskPojo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletedTaskPojo getCompletedById(String flowId) {
|
||||||
|
return bd.getBusinessDatabase()
|
||||||
|
.eq("id", flowId)
|
||||||
|
.doQueryFirst(CompletedTaskPojo.class);
|
||||||
|
}
|
||||||
|
|
||||||
private Date safeParseDateParam(String dateStr, Date defaultValue) {
|
private Date safeParseDateParam(String dateStr, Date defaultValue) {
|
||||||
if (dateStr == null || dateStr.trim().isEmpty()) {
|
if (dateStr == null || dateStr.trim().isEmpty()) {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
|
|||||||
@ -60,7 +60,7 @@ deploy.powerjob.address=127.0.0.1:7700
|
|||||||
# ====================== ??????MPAAS? ======================
|
# ====================== ??????MPAAS? ======================
|
||||||
mpaas.datasource[0].name=xdap_app_223770822127386625
|
mpaas.datasource[0].name=xdap_app_223770822127386625
|
||||||
mpaas.datasource[0].type=mysql
|
mpaas.datasource[0].type=mysql
|
||||||
mpaas.datasource[0].url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
mpaas.datasource[0].url=jdbc:mysql://127.0.0.1:3306/xdap_app_223770822127386625?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
||||||
mpaas.datasource[0].driver-class-name=com.mysql.cj.jdbc.Driver
|
mpaas.datasource[0].driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
mpaas.datasource[0].username=root
|
mpaas.datasource[0].username=root
|
||||||
mpaas.datasource[0].password=qwer12
|
mpaas.datasource[0].password=qwer12
|
||||||
@ -68,7 +68,7 @@ mpaas.datasource[0].minPoolSize=50
|
|||||||
mpaas.datasource[0].maxPoolSize=1000
|
mpaas.datasource[0].maxPoolSize=1000
|
||||||
mpaas.datasource[1].name=yc_lrs_test_relsult
|
mpaas.datasource[1].name=yc_lrs_test_relsult
|
||||||
mpaas.datasource[1].type=mysql
|
mpaas.datasource[1].type=mysql
|
||||||
mpaas.datasource[1].url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
mpaas.datasource[1].url=jdbc:mysql://127.0.0.1:3306/yc_lrs_test_relsult?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
||||||
mpaas.datasource[1].driver-class-name=com.mysql.cj.jdbc.Driver
|
mpaas.datasource[1].driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
mpaas.datasource[1].username=root
|
mpaas.datasource[1].username=root
|
||||||
mpaas.datasource[1].password=qwer12
|
mpaas.datasource[1].password=qwer12
|
||||||
@ -76,7 +76,7 @@ mpaas.datasource[1].minPoolSize=50
|
|||||||
mpaas.datasource[1].maxPoolSize=1000
|
mpaas.datasource[1].maxPoolSize=1000
|
||||||
mpaas.datasource[2].name=qygs
|
mpaas.datasource[2].name=qygs
|
||||||
mpaas.datasource[2].type=mysql
|
mpaas.datasource[2].type=mysql
|
||||||
mpaas.datasource[2].url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
mpaas.datasource[2].url=jdbc:mysql://127.0.0.1:3306/qygs?serverTimezone=GMT%2B8&characterEncoding=utf-8
|
||||||
mpaas.datasource[2].driver-class-name=com.mysql.cj.jdbc.Driver
|
mpaas.datasource[2].driver-class-name=com.mysql.cj.jdbc.Driver
|
||||||
mpaas.datasource[2].username=root
|
mpaas.datasource[2].username=root
|
||||||
mpaas.datasource[2].password=qwer12
|
mpaas.datasource[2].password=qwer12
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user