From f120d451983ec995b386ee71e0872a4d94e5ad59 Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Fri, 6 Feb 2026 17:39:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E7=BA=BF=E7=89=88=E6=9C=AC3.0?= =?UTF-8?q?=EF=BC=88=E6=96=B0=E7=89=88=E4=BF=AE=E6=94=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../self_development/common/YcTaskResult.java | 1 + .../EngineParamDetailController.java | 6 +- .../controller/TodoTaskController.java | 12 ++ .../controller/YcTaskResultController.java | 2 + .../domain/dto/DataEntryEngineModelDto.java | 2 +- .../domain/enums/DistributeStatusEnum.java | 4 +- .../feign/ApaasMyTokenFeign.java | 1 - .../service/EngineParamDetailService.java | 2 +- .../service/TodoTaskService.java | 1 + .../impl/ActivitiProcessServiceImpl.java | 96 ++++++++------- .../AnalysisCommonParametersServiceImpl.java | 1 + .../impl/BenchmarkingReportServiceImpl.java | 67 ++++++----- .../impl/DataEntryEngineModelServiceImpl.java | 39 +++++- .../impl/EngineParamDetailServiceImpl.java | 111 ++++++++++++++++-- .../service/impl/TemplateServiceImpl.java | 1 - .../service/impl/TodoTaskServiceImpl.java | 81 +++++++++++++ .../impl/XdapDeptUsersServiceImpl.java | 4 +- .../service/impl/YcTaskResultServiceImpl.java | 56 +++++---- src/main/resources/application.properties | 2 +- 19 files changed, 365 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/xdap/self_development/common/YcTaskResult.java b/src/main/java/com/xdap/self_development/common/YcTaskResult.java index 05ae67e..f00310a 100644 --- a/src/main/java/com/xdap/self_development/common/YcTaskResult.java +++ b/src/main/java/com/xdap/self_development/common/YcTaskResult.java @@ -8,4 +8,5 @@ public class YcTaskResult { private Long total; private Object table; private String requestid; + private String msg; } diff --git a/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java b/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java index 69d0082..bbb71aa 100644 --- a/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java +++ b/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java @@ -53,10 +53,10 @@ public class EngineParamDetailController { @GetMapping("/selectParamListAndModel") public Response selectParamListAndModel( @RequestParam(value = "modelID"/*, required = false*/) String modelID, - @RequestParam(required = false) Integer parameterVersion - + @RequestParam(required = false) Integer parameterVersion, + @RequestParam(required = false) String userID ) { - Map>> list = engineParamDetailService.selectParamListAndModel(modelID, parameterVersion); + Map>> list = engineParamDetailService.selectParamListAndModel(modelID, parameterVersion, userID); return Response.ok().data(list); } diff --git a/src/main/java/com/xdap/self_development/controller/TodoTaskController.java b/src/main/java/com/xdap/self_development/controller/TodoTaskController.java index fda80cf..0d365c6 100644 --- a/src/main/java/com/xdap/self_development/controller/TodoTaskController.java +++ b/src/main/java/com/xdap/self_development/controller/TodoTaskController.java @@ -89,5 +89,17 @@ public class TodoTaskController { } + /** + * 跳过审批 + * + * @param todoTaskRequest + * @return + */ + @PostMapping("/skipApproval") + public Response skipApproval(@RequestBody RejectTodoRequest todoTaskRequest) { + todoTaskService.skipApproval(todoTaskRequest); + return Response.ok(); + } + } diff --git a/src/main/java/com/xdap/self_development/controller/YcTaskResultController.java b/src/main/java/com/xdap/self_development/controller/YcTaskResultController.java index d186e6f..79bfebc 100644 --- a/src/main/java/com/xdap/self_development/controller/YcTaskResultController.java +++ b/src/main/java/com/xdap/self_development/controller/YcTaskResultController.java @@ -57,6 +57,7 @@ public class YcTaskResultController { return ycTaskResultService.returnCompleted(ycGetTodoTaskRequest); } catch (Exception e) { result.setCode(RESULT_ERROR); + result.setMsg(e.getMessage()); return result; } } @@ -74,6 +75,7 @@ public class YcTaskResultController { return ycTaskResultService.returnInitiator(ycGetTodoTaskRequest); } catch (Exception e) { result.setCode(RESULT_ERROR); + result.setMsg(e.getMessage()); return result; } } diff --git a/src/main/java/com/xdap/self_development/domain/dto/DataEntryEngineModelDto.java b/src/main/java/com/xdap/self_development/domain/dto/DataEntryEngineModelDto.java index 44dcac7..54eb12c 100644 --- a/src/main/java/com/xdap/self_development/domain/dto/DataEntryEngineModelDto.java +++ b/src/main/java/com/xdap/self_development/domain/dto/DataEntryEngineModelDto.java @@ -22,7 +22,7 @@ import java.util.Date; @EqualsAndHashCode(callSuper = true) @SQLQuery(value = { @SQL(view = "selectVersionByConditionPage", - sql = "WITH ranked_models AS ( SELECT deem.*, epd.major_version AS parameterVersion, ROW_NUMBER() OVER (PARTITION BY deem.id, epd.major_version ORDER BY deem.id) AS rn FROM data_entry_engine_model deem JOIN engine_param_detail epd ON deem.id = epd.engine_model_id ) SELECT * FROM ranked_models WHERE rn = 1 ORDER BY model_name, parameterVersion") + sql = "WITH ranked_models AS ( SELECT deem.*, epd.major_version AS parameterVersion, ROW_NUMBER() OVER (PARTITION BY deem.id, epd.major_version ORDER BY deem.id) AS rn FROM data_entry_engine_model deem JOIN engine_param_detail epd ON deem.id = epd.engine_model_id ) SELECT * FROM ranked_models WHERE rn = 1 AND is_delete = 0 ORDER BY model_name, parameterVersion") }) @Data public class DataEntryEngineModelDto extends MpaasBasePojo { diff --git a/src/main/java/com/xdap/self_development/domain/enums/DistributeStatusEnum.java b/src/main/java/com/xdap/self_development/domain/enums/DistributeStatusEnum.java index 05f4cee..567e680 100644 --- a/src/main/java/com/xdap/self_development/domain/enums/DistributeStatusEnum.java +++ b/src/main/java/com/xdap/self_development/domain/enums/DistributeStatusEnum.java @@ -22,7 +22,9 @@ public enum DistributeStatusEnum { /** * 部分分发 */ - PART(3, "部分分发"); + PART(3, "部分分发"), + + COMPLETE(4, "已完成"); /** * 编码 diff --git a/src/main/java/com/xdap/self_development/feign/ApaasMyTokenFeign.java b/src/main/java/com/xdap/self_development/feign/ApaasMyTokenFeign.java index 2818827..2a37800 100644 --- a/src/main/java/com/xdap/self_development/feign/ApaasMyTokenFeign.java +++ b/src/main/java/com/xdap/self_development/feign/ApaasMyTokenFeign.java @@ -35,7 +35,6 @@ public interface ApaasMyTokenFeign { consumes = MediaType.MULTIPART_FORM_DATA_VALUE) FileUploadDTO uploadFile( @RequestHeader(value = "Authorization") String accessToken, - @RequestHeader("Content-Type") String type, @RequestPart("file") MultipartFile file, @RequestPart("uploadId") String uploadId, diff --git a/src/main/java/com/xdap/self_development/service/EngineParamDetailService.java b/src/main/java/com/xdap/self_development/service/EngineParamDetailService.java index c16f4b0..5242874 100644 --- a/src/main/java/com/xdap/self_development/service/EngineParamDetailService.java +++ b/src/main/java/com/xdap/self_development/service/EngineParamDetailService.java @@ -54,5 +54,5 @@ public interface EngineParamDetailService { List selectPersonoByType(String subSystem, String dept, Integer type); - Map>> selectParamListAndModel(String modelID, Integer parameterVersion); + Map>> selectParamListAndModel(String modelID, Integer parameterVersion, String userId); } diff --git a/src/main/java/com/xdap/self_development/service/TodoTaskService.java b/src/main/java/com/xdap/self_development/service/TodoTaskService.java index fad802c..4db787a 100644 --- a/src/main/java/com/xdap/self_development/service/TodoTaskService.java +++ b/src/main/java/com/xdap/self_development/service/TodoTaskService.java @@ -31,4 +31,5 @@ public interface TodoTaskService { void rejectTodo(RejectTodoRequest request); + void skipApproval(RejectTodoRequest todoTaskRequest); } diff --git a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java index 948f405..e5cacf0 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java @@ -169,23 +169,32 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { if (ObjectUtils.isEmpty(model)) { throw new CommonException("机型不存在,请检查"); } - + // TODO:机型发起审批 // 检查当前参数是否全部填写完成 - List toBeFilledParams = bd.getBusinessDatabase() - .eq("engine_model_id", model.getId()) - .eq("major_version", model.getVersionNumber()) - .eq("filled_by", userId) - .isNull("minor_version") - .doQuery(EngineParamDetailPojo.class); - if (!ObjectUtils.isEmpty(toBeFilledParams)) { - throw new CommonException("您在当前机型的参数未全部填写完成,请检查"); + TodoTaskPojo filledTodo = bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("data_type", CurrentNodeEnum.REPAIR.getDesc()) + .eq("is_delete", 0) + .eq("owner_id", userId) + .eq("process_title", model.getModelName() + "-" + "填写参数任务") + .doQueryFirst(TodoTaskPojo.class); + if (filledTodo != null) { + List toBeFilledParams = bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", userId) + .isNull("minor_version") + .doQuery(EngineParamDetailPojo.class); + if (!ObjectUtils.isEmpty(toBeFilledParams)) { + throw new CommonException("填写人在当前机型的参数未全部填写完成,请检查"); + } } // 查询机型最新版本的参数,过滤出操作为更新且由当前用户更新的参数 List paramList = bd.getBusinessDatabase() .eq("engine_model_id", model.getId()) .eq("major_version", model.getVersionNumber()) - .eq("filled_by", userId) + .eq("last_updated_by", userId) .doQuery(EngineParamDetailPojo.class); if (paramList.isEmpty()) { @@ -315,33 +324,36 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .eq("owner_id", userId) .eq("model_id", model.getId()) .eq("data_type", "数据维护") + .eq("is_delete", 0) .doQueryFirst(TodoTaskPojo.class); - // 修改待办和发起的任务状态 - bd.getBusinessDatabase() - .update("is_delete", 1) - .update("current_node", "已维护") - .update("last_update_date", new Date()) - .eq("document_no", todoTaskPojo.getDocumentNo()) - .doUpdate(TodoTaskPojo.class); + if (todoTaskPojo != null) { + // 修改待办和发起的任务状态 + bd.getBusinessDatabase() + .update("is_delete", 1) + .update("current_node", "已维护") + .update("last_update_date", new Date()) + .eq("document_no", todoTaskPojo.getDocumentNo()) + .doUpdate(TodoTaskPojo.class); - //新增这个人的填写的已办和经办 - CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); - BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo); - completedTaskPojo.setId(UUID.randomUUID().toString().replace("-", "")); - completedTaskPojo.setDocumentNo(todoTaskPojo.getDocumentNo()); - completedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate()); - completedTaskPojo.setIsDelete(0); - completedTaskPojo.setCurrentNode("已维护"); - bd.getBusinessDatabase().doInsert(completedTaskPojo); + //新增这个人的填写的已办和经办 + CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); + BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo); + completedTaskPojo.setId(UUID.randomUUID().toString().replace("-", "")); + completedTaskPojo.setDocumentNo(todoTaskPojo.getDocumentNo()); + completedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate()); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setCurrentNode("已维护"); + bd.getBusinessDatabase().doInsert(completedTaskPojo); - InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo(); - BeanUtils.copyProperties(todoTaskPojo, initiatedTask); - initiatedTask.setId(UUID.randomUUID().toString().replace("-", "")); - initiatedTask.setDocumentNo(todoTaskPojo.getDocumentNo()); - initiatedTask.setCreationDate(engineReviewListPojo.getCreationDate()); - initiatedTask.setIsDelete(0); - initiatedTask.setCurrentNode("已维护"); - bd.getBusinessDatabase().doInsert(initiatedTask); + InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo(); + BeanUtils.copyProperties(todoTaskPojo, initiatedTask); + initiatedTask.setId(UUID.randomUUID().toString().replace("-", "")); + initiatedTask.setDocumentNo(todoTaskPojo.getDocumentNo()); + initiatedTask.setCreationDate(engineReviewListPojo.getCreationDate()); + initiatedTask.setIsDelete(0); + initiatedTask.setCurrentNode("已维护"); + bd.getBusinessDatabase().doInsert(initiatedTask); + } } /** @@ -368,11 +380,11 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { DataEntryEngineModelPojo model = bd.getBusinessDatabase() .eq("id", reviewListPojo.getModelId()) .doQueryFirst(DataEntryEngineModelPojo.class); - // 获取当前流程填写人的填写参数 + // 获取当前流程填写的人填写的参数 List list = bd.getBusinessDatabase() .eq("engine_model_id", model.getId()) .eq("major_version", model.getVersionNumber()) - .eq("filled_by", reviewListPojo.getCreatedBy()) + .eq("last_updated_by", reviewListPojo.getCreatedBy()) .doQuery(EngineParamDetailPojo.class); ParamApprovalRecordPojo lastedRecord = bd.getBusinessDatabase() @@ -530,7 +542,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("operation", "")// 清空操作状态 // .update("minor_version", "")// 小版本清空 .update("last_update_date", new Date()) - .eq("approval_id", flow.getId()) + .eq("last_updated_by", userId) .eq("engine_model_id", flow.getModelId()) .eq("major_version", model.getVersionNumber()) .doUpdate(EngineParamDetailPojo.class); @@ -622,7 +634,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { DataEntryEngineModelPojo model = bd.getBusinessDatabase() .eq("id", flow.getModelId()) .doQueryFirst(DataEntryEngineModelPojo.class); - + // TODO:机型审批通过 // 检查当前参数是否为一版本,是则更新参数,否则新建版本。 // 这个机型下所有参数都全部写入一版且版本加一 没有参与审批的参数时原来的值,参与审批的参数值要取小版本值作为大版本 // 现版本需要填写的全部参数 @@ -695,6 +707,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { bd.getBusinessDatabase() .update("version_status", ParamValueVersionEnum.PASSED.getCode()) .update("last_update_date", new Date()) + .update("last_updated_by", null) .in("id", toBePassedIds) .doUpdate(EngineParamDetailPojo.class); // 审批流改为已通过 @@ -715,11 +728,12 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .eq("version_status", ParamValueVersionEnum.PASSED.getCode()) .doQuery(EngineParamDetailPojo.class); // 机型已完成分发并且全部分发参数已完成填写并审核通过 - if (model.getDistributeStatus() == 1 && oldDetails.size() == finishDetails.size()) { - // 修改机型状态为待分发 + if (Objects.equals(model.getDistributeStatus(), DistributeStatusEnum.DISTRIBUTED.getCode()) + && oldDetails.size() == finishDetails.size()) { + // 修改机型状态为已完成 bd.getBusinessDatabase() .eq("id", model.getId()) - .update("distribute_status", DistributeStatusEnum.UNDISTRIBUTED.getCode()) + .update("distribute_status", DistributeStatusEnum.COMPLETE.getCode()) .doUpdate(DataEntryEngineModelPojo.class); // 修改新参数状态为草稿并清除所有责任人和填写人 List collected = finishDetails.stream() diff --git a/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java index 81dbb2f..0d7bfcc 100644 --- a/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java @@ -83,6 +83,7 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame .conjuctionOr() .lteq("engine_capacity", request.getEngineCapacityMax()) .gteq("engine_capacity", request.getEngineCapacityMin()) + .eq("is_delete", 0) .doQuery(DataEntryEngineModelPojo.class)); } diff --git a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java index 7a4cc88..8c2541f 100644 --- a/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/BenchmarkingReportServiceImpl.java @@ -185,39 +185,42 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService */ @Override public String uploadFile(MultipartFile file, String userId) { - String currentTenantId = runtimeAppContextService.getCurrentTenantId(); - AppTokenDTO token = apaasMyTokenFeign.getAppToken( - "client_credentials", - clientId, - clientSecret - ); - if (token == null || token.getAccess_token() == null) { - throw new CommonException("文件上传失败"); + try { + String currentTenantId = runtimeAppContextService.getCurrentTenantId(); + AppTokenDTO token = apaasMyTokenFeign.getAppToken( + "client_credentials", + clientId, + clientSecret + ); + if (token == null || token.getAccess_token() == null) { + throw new CommonException("文件上传失败"); + } + UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken( + token.getAccess_token(), + userId + ); + if (userToken == null || userToken.getAccess_token() == null) { + throw new CommonException("文件上传失败"); + } + String uploadId = new ObjectId().toHexString(); + FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile( + "Bearer " + userToken.getAccess_token(), + file, + uploadId, + currentTenantId, + userId + ); + if (fileUploadDTO == null || fileUploadDTO.getData() == null) { + throw new CommonException("文件上传失败"); + } + Map map = new HashMap<>(); + map.put("xdaptenantid", currentTenantId); + cn.hutool.json.JSON json = JSONUtil.parse(map); + String tokenXdap = Base64.encode(json.toString()); + return fileUploadDTO.getData().getUrl() + "&download=download&token=" + tokenXdap; + } catch (Exception e) { + throw new CommonException(e.getMessage()); } - UserTokenDT0 userToken = apaasMyTokenFeign.getUserToken( - token.getAccess_token(), - userId - ); - if (userToken == null || userToken.getAccess_token() == null) { - throw new CommonException("文件上传失败"); - } - String uploadId = new ObjectId().toHexString(); - FileUploadDTO fileUploadDTO = apaasMyTokenFeign.uploadFile( - "Bearer " + userToken.getAccess_token(), - "application/x-www-form-urlencoded", - file, - uploadId, - currentTenantId, - userId - ); - if (fileUploadDTO == null || fileUploadDTO.getData() == null) { - throw new CommonException("文件上传失败"); - } - Map map = new HashMap<>(); - map.put("xdaptenantid", currentTenantId); - cn.hutool.json.JSON json = JSONUtil.parse(map); - String tokenXdap = Base64.encode(json.toString()); - return fileUploadDTO.getData().getUrl() +"&download=download&token=" + tokenXdap; } /** diff --git a/src/main/java/com/xdap/self_development/service/impl/DataEntryEngineModelServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/DataEntryEngineModelServiceImpl.java index 493382b..13ae516 100644 --- a/src/main/java/com/xdap/self_development/service/impl/DataEntryEngineModelServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/DataEntryEngineModelServiceImpl.java @@ -232,6 +232,7 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ BeanUtils.copyProperties(request, modelPojo, "status"); List modelPojos = bd.getBusinessDatabase() .eq("product_number", request.getProductNumber()) + .eq("is_delete", 0) .doQuery(DataEntryEngineModelPojo.class); if (ObjectUtils.isNotEmpty(modelPojos)) { throw new ExcelImportException( @@ -438,6 +439,10 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ // 检查机型 DataEntryEngineModelPojo model = bd.getBusinessDatabase() .eq("id", modelId) + .in("distribute_status", + DistributeStatusEnum.UNDISTRIBUTED.getCode(), + DistributeStatusEnum.COMPLETE.getCode() + ) .doQueryFirst(DataEntryEngineModelPojo.class); if (model == null) { throw new CommonException("机型不存在或已分发"); @@ -485,9 +490,17 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ .collect(Collectors.toList()); Map modelParamMap = modelParams.stream() .collect(Collectors. - toMap(EngineParamDetailPojo::getParameterId, pojo -> pojo) + toMap( + EngineParamDetailPojo::getParameterId, + pojo -> pojo, + (existing, replacement) -> existing) ); + // 验证是否需要更新 + if (modelParams.size() == parameters.size() && isSameParams(modelParams, parameters)) { + throw new CommonException("当前版本机型参数已同步最新模板参数"); + } + // 过滤新批次模板的参数,更新到机型参数中 // 统计需要插入的参数 List toInsertParams = new ArrayList<>(); @@ -523,7 +536,8 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ bd.getBusinessDatabase() .eq("id", model.getId()) .update("version_number", model.getVersionNumber()) - .update("distribute_status", DistributeStatusEnum.UNDISTRIBUTED.getCode()) + .update("parameter_num", parameters.size()) + .update("distribute_status", DistributeStatusEnum.COMPLETE.getCode()) .doUpdate(DataEntryEngineModelPojo.class); // 更新新版本机型的参数 @@ -546,6 +560,27 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ return model.getVersionNumber(); } + private boolean isSameParams(List modelParams, List parameters) { + Map modelParamMap = modelParams.stream() + .collect(Collectors. + toMap( + EngineParamDetailPojo::getParameterId, + pojo -> pojo, + (existing, replacement) -> existing + ) + ); + return parameters.stream().allMatch(parameter -> { + EngineParamDetailPojo detailPojo = modelParamMap.get(parameter.getId()); + return detailPojo != null && + Objects.equals(detailPojo.getParameterName(), parameter.getParameterName()) && + Objects.equals(detailPojo.getParameterSource(), parameter.getParameterSource()) && + Objects.equals(detailPojo.getParameterType(), parameter.getParameterType()) && + Objects.equals(detailPojo.getSubsystemName(), parameter.getSubsystemName()) && + Objects.equals(detailPojo.getDepartment(), parameter.getDepartment()) && + Objects.equals(detailPojo.getPartsName(), parameter.getPartsName()); + }); + } + /** * 设置响应 * 设置HTTP响应的头部信息用于文件下载 diff --git a/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java index 3eb7d89..7787e89 100644 --- a/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java @@ -18,6 +18,7 @@ import com.xdap.self_development.domain.enums.CurrentNodeEnum; import com.xdap.self_development.domain.enums.ParamOperationEnum; import com.xdap.self_development.domain.enums.ParamValueVersionEnum; import com.xdap.self_development.domain.pojo.*; +import com.xdap.self_development.domain.view.MenuParamView; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.exception.ExcelImportException; import com.xdap.self_development.listener.EngineParamDetailListener; @@ -66,6 +67,8 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { private XdapDeptUsersService xdapDeptUsersService; @Resource private ResponsiblePerService responsiblePerService; + @Resource + private ModelRoleService modelRoleService; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); @@ -176,21 +179,17 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { )); } - public Map> selectParamListByDetails(String modelID, Integer parameterVersion) { + public Map> selectParamListByDetails(String modelID, Integer parameterVersion, String userId) { if (parameterVersion == null) { DataEntryEngineModelPojo engineModel = bd.getBusinessDatabase() - .eq("engine_model_id", modelID) + .eq("id", modelID) .doQueryFirst(DataEntryEngineModelPojo.class); if (engineModel == null) { throw new CommonException("未找到该型号的参数"); } parameterVersion = engineModel.getVersionNumber(); } - List pojoList = bd.getBusinessDatabase() - .eq("engine_model_id", modelID) - .eq("major_version", parameterVersion) - .eq("parameter_source", "数据平台手工录入") - .doQuery(EngineParamDetailPojo.class); + List pojoList = selectByIsUserId(modelID, parameterVersion, userId); AtomicInteger seq = new AtomicInteger(1); LinkedHashMap subsystemOrderMap = pojoList.stream() @@ -279,6 +278,80 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { )); } + private List selectByIsUserId(String modelID, Integer parameterVersion, String userId) { + // 没有人则返回全部 + List pojoList = bd.getBusinessDatabase() + .eq("engine_model_id", modelID) + .eq("major_version", parameterVersion) + .eq("parameter_source", "数据平台手工录入") + .doQuery(EngineParamDetailPojo.class); + if (userId == null || userId.isEmpty()) { + return pojoList; + } + // TODO:根据权限过滤 + List menuParamViews = modelRoleService.selectPersByUser(userId); + // 管理员返回全部 + if (menuParamViews.size() == 1 && menuParamViews.get(0).getIsAdmin() == 1) { + return pojoList; + } + + // 过滤返回 + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", modelID) + .doQueryFirst(DataEntryEngineModelPojo.class); + + // 权限路径集合 + Set result = menuParamViews.stream() + .map(MenuParamView::getPermissionPath) + .collect(Collectors.toSet()); + return pojoList.stream() + .filter(pojo -> matchesAnyPermission(pojo, result, model.getYcOrOth())) + .collect(Collectors.toList()); + } + + private boolean matchesAnyPermission(EngineParamDetailPojo pojo, Set 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获取参数列表和模型信息 @@ -287,14 +360,14 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { * @return 参数列表和模型映射 */ @Override - public Map>> selectParamListAndModel(String modelID, Integer parameterVersion) { + public Map>> selectParamListAndModel(String modelID, Integer parameterVersion, String userId) { HashMap>> map = new HashMap<>(); DataEntryEngineModelPojo dataEntryEngineModelPojo = dataEntryEngineModelService.selectBymodelId(modelID); if (ObjectUtils.isEmpty(dataEntryEngineModelPojo)) { throw new CommonException("未找到该机型"); } String s = dataEntryEngineModelPojo.getProductNumber(); - Map> stringListMap = selectParamListByDetails(modelID, parameterVersion); + Map> stringListMap = selectParamListByDetails(modelID, parameterVersion, userId); map.put(s, stringListMap); return map; } @@ -461,14 +534,28 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { String type = subsystemType.split("-")[1]; //若传入填写人则查询填写人需要填写的参数 if (ObjectUtils.isNotEmpty(request.getFilledById())) { - paramDetails.addAll(bd.getBusinessDatabase() - .eq("filled_by", request.getFilledById()) + List pojoList = bd.getBusinessDatabase() + .eq("last_updated_by", request.getFilledById()) .eq("engine_model_id", model.getId()) .eq("subsystem_name", subsystem) .eq("parts_name", type) .eq("major_version", model.getVersionNumber()) .eq("parameter_source", "数据平台手工录入") - .doQuery(EngineParamDetailPojo.class)); + .doQuery(EngineParamDetailPojo.class); + if (pojoList.isEmpty()) { + paramDetails.addAll( + bd.getBusinessDatabase() + .eq("filled_by", request.getFilledById()) + .eq("engine_model_id", model.getId()) + .eq("subsystem_name", subsystem) + .eq("parts_name", type) + .eq("major_version", model.getVersionNumber()) + .eq("parameter_source", "数据平台手工录入") + .doQuery(EngineParamDetailPojo.class) + ); + } else { + paramDetails.addAll(pojoList); + } } else if (ObjectUtils.isNotEmpty(request.getResponsiblePersonId())) { //若传入责任人则查询责任人需要分发的参数 paramDetails.addAll(bd.getBusinessDatabase() diff --git a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java index 18b1433..f0553b7 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TemplateServiceImpl.java @@ -383,7 +383,6 @@ public class TemplateServiceImpl implements TemplateService { List lastTemplateParameters = new ArrayList<>(); if (lastTemplate != null) { - // TODO基于最新版本创建新版本 targetTemplate = new TemplatePojo( templateName, lastTemplate.getVersion() + 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis() / 1000, 0 diff --git a/src/main/java/com/xdap/self_development/service/impl/TodoTaskServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TodoTaskServiceImpl.java index 387c23b..6ba19c9 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TodoTaskServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TodoTaskServiceImpl.java @@ -10,6 +10,7 @@ import com.xdap.self_development.domain.dto.EngineParamDetailDTO; import com.xdap.self_development.domain.dto.PageResultDTO; import com.xdap.self_development.domain.enums.CurrentNodeEnum; import com.xdap.self_development.domain.enums.DistributeStatusEnum; +import com.xdap.self_development.domain.enums.ParamValueVersionEnum; import com.xdap.self_development.domain.pojo.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.service.TodoTaskService; @@ -450,4 +451,84 @@ public class TodoTaskServiceImpl implements TodoTaskService { .update("is_delete", 1) .doUpdate(TodoTaskPojo.class); } + + @Override + public void skipApproval(RejectTodoRequest request) { + // TODO:跳过审批 + TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase() + .eq("id", request.getTodoId()) + .doQueryFirst(TodoTaskPojo.class); + if (ObjectUtils.isEmpty(todoTaskPojo)) { + throw new CommonException("待办任务不存在"); + } + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", todoTaskPojo.getModelId()) + .doQueryFirst(DataEntryEngineModelPojo.class); + if (ObjectUtils.isEmpty(model)) { + throw new CommonException("机型不存在,请检查"); + } + List list = new ArrayList<>(); + if ((ObjectUtils.isNotEmpty(request.getFillerId())) + && (request.getResponsiblePersonId() == null || ObjectUtils.isEmpty(request.getResponsiblePersonId()))) { + bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", request.getFillerId()) + .update("version_status", ParamValueVersionEnum.PASSED.getCode()) + .doUpdate(EngineParamDetailPojo.class); + // 更新发起 + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("created_by_id", todoTaskPojo.getCreatedById()) + .eq("process_title", model.getModelName() + "-" + "分发参数填写人任务") + .update("current_node", "已完成") + .update("current_processor", null) + .doUpdate(InitiatedTaskPojo.class); + // 更新完成 + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("owner_id", todoTaskPojo.getCreatedById()) + .eq("process_title", model.getModelName() + "-" + "分发参数填写人任务") + .update("current_node", "已完成") + .update("current_processor", null) + .doUpdate(CompletedTaskPojo.class); + } else if ((request.getFillerId() == null || ObjectUtils.isEmpty(request.getFillerId())) + && ObjectUtils.isNotEmpty(request.getResponsiblePersonId())) { + bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("responsible_person_id", request.getResponsiblePersonId()) + .update("version_status", ParamValueVersionEnum.PASSED.getCode()) + .doUpdate(EngineParamDetailPojo.class); + + // 更新发起 + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("created_by_id", todoTaskPojo.getCreatedById()) + .eq("process_title", model.getModelName() + "-" + "分发参数责任人任务") + .update("current_node", "已完成") + .update("current_processor", null) + .doUpdate(InitiatedTaskPojo.class); + + // 更新完成 + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("owner_id", todoTaskPojo.getCreatedById()) + .eq("process_title", model.getModelName() + "-" + "分发参数责任人任务") + .update("current_node", "已完成") + .update("current_processor", null) + .doUpdate(CompletedTaskPojo.class); + } else { + throw new CommonException("参数错误"); + } + // 更新待办 + bd.getBusinessDatabase() + .eq("id", request.getTodoId()) + .update("is_delete", 1) + .doUpdate(TodoTaskPojo.class); + } } diff --git a/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java index 76cc968..191f9e0 100644 --- a/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java @@ -211,9 +211,9 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { List depts = bd.getSystemDatabase() .eq("user_id", user.getId()) .doQuery(XdapDeptUsers.class); - XdapDeptUsers commonDept = bd.getSystemDatabase() + XdapDepartments commonDept = bd.getSystemDatabase() .eq("name", "研发总院") - .doQueryFirst(XdapDeptUsers.class); + .doQueryFirst(XdapDepartments.class); if (depts.isEmpty() || commonDept == null) { return userInfoView; } diff --git a/src/main/java/com/xdap/self_development/service/impl/YcTaskResultServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/YcTaskResultServiceImpl.java index b499912..1064ee0 100644 --- a/src/main/java/com/xdap/self_development/service/impl/YcTaskResultServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/YcTaskResultServiceImpl.java @@ -1,5 +1,6 @@ package com.xdap.self_development.service.impl; +import com.definesys.mpaas.query.MpaasQuery; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.menus.pojo.XdapMenus; import com.xdap.api.moudle.user.pojo.XdapUsers; @@ -35,7 +36,7 @@ import java.util.stream.Collectors; @Service public class YcTaskResultServiceImpl implements YcTaskResultService { private static final Pattern POSITIVE_INTEGER_PATTERN = Pattern.compile("^[1-9]\\d*$"); - private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.systemDefault()); + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()); ; @Resource @@ -127,15 +128,12 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { @Override public YcTaskResult returnCompleted(YcGetTodoTaskRequest ycGetTodoTaskRequest) { YcTaskResult ycTaskResult = new YcTaskResult(); - if (ObjectUtils.isEmpty(ycGetTodoTaskRequest.getCreateDateStart())) { - throw new CommonException("开始时间为必填项"); - } List completedTaskPojos = new ArrayList<>(); if (ObjectUtils.isEmpty(ycGetTodoTaskRequest.getUsername())) { - List list = bd.getBusinessDatabase() - .eq("is_delete", 0) - .gteq("creation_date", ycGetTodoTaskRequest.getCreateDateStart()) - .lteq("creation_date", ycGetTodoTaskRequest.getCreateDateEnd() == null ? new Date() : ycGetTodoTaskRequest.getCreateDateEnd()) + MpaasQuery query = bd.getBusinessDatabase() + .eq("is_delete", 0); + queryData(ycGetTodoTaskRequest, query); + List list = query .doQuery(CompletedTaskPojo.class); completedTaskPojos.addAll(list); } else { @@ -145,12 +143,11 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { if (user == null) { throw new CommonException("用户不存在"); } - Date createDateEnd = safeParseDateParam(ycGetTodoTaskRequest.getCreateDateEnd(), new Date()); - List result = bd.getBusinessDatabase() + MpaasQuery query = bd.getBusinessDatabase() .eq("owner_id", user.getId()) - .eq("is_delete", 0) - .gteq("creation_date", ycGetTodoTaskRequest.getCreateDateStart()) - .lteq("creation_date", createDateEnd) + .eq("is_delete", 0); + queryData(ycGetTodoTaskRequest, query); + List result = query .doQuery(CompletedTaskPojo.class); completedTaskPojos.addAll(result); } @@ -202,16 +199,13 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { @Override public YcTaskResult returnInitiator(YcGetTodoTaskRequest ycGetTodoTaskRequest) { YcTaskResult ycTaskResult = new YcTaskResult(); - if (ObjectUtils.isEmpty(ycGetTodoTaskRequest.getCreateDateStart())) { - throw new CommonException("开始时间为必填项"); - } List initiatedTaskPojos = new ArrayList<>(); - long total = 0; + long total; if (ObjectUtils.isEmpty(ycGetTodoTaskRequest.getUsername())) { - List list = bd.getBusinessDatabase() - .eq("is_delete", 0) - .gteq("creation_date", ycGetTodoTaskRequest.getCreateDateStart()) - .lteq("creation_date", ycGetTodoTaskRequest.getCreateDateEnd() == null ? new Date() : ycGetTodoTaskRequest.getCreateDateEnd()) + MpaasQuery query = bd.getBusinessDatabase() + .eq("is_delete", 0); + queryData(ycGetTodoTaskRequest, query); + List list = query .doQuery(InitiatedTaskPojo.class); initiatedTaskPojos.addAll(list); total = list.size(); @@ -224,12 +218,11 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { } Integer page = safeParsePageParam(ycGetTodoTaskRequest.getPage(), 1); Integer pageSize = safeParsePageParam(ycGetTodoTaskRequest.getPageSize(), 10); - Date createDateEnd = safeParseDateParam(ycGetTodoTaskRequest.getCreateDateEnd(), new Date()); - PageQueryResult result = bd.getBusinessDatabase() + MpaasQuery query = bd.getBusinessDatabase() .eq("created_by_id", user.getId()) - .eq("is_delete", 0) - .gteq("creation_date", ycGetTodoTaskRequest.getCreateDateStart()) - .lteq("creation_date", createDateEnd) + .eq("is_delete", 0); + queryData(ycGetTodoTaskRequest, query); + PageQueryResult result = query .doPageQuery(page, pageSize, InitiatedTaskPojo.class); total = result.getCount(); initiatedTaskPojos.addAll(result.getResult()); @@ -263,4 +256,15 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { return defaultValue; } } + + private void queryData(YcGetTodoTaskRequest ycGetTodoTaskRequest, MpaasQuery query) { + if (ycGetTodoTaskRequest.getCreateDateStart() != null && !ycGetTodoTaskRequest.getCreateDateStart().isEmpty()) { + Date createDateStart = safeParseDateParam(ycGetTodoTaskRequest.getCreateDateStart(), new Date()); + query.gteq("creation_date", createDateStart); + } + if (ycGetTodoTaskRequest.getCreateDateEnd() != null && !ycGetTodoTaskRequest.getCreateDateEnd().isEmpty()) { + Date createDateEnd = safeParseDateParam(ycGetTodoTaskRequest.getCreateDateEnd(), new Date()); + query.lteq("creation_date", createDateEnd); + } + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 02159bf..d460100 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ # ====================== APAAS ???? ====================== apaas.app.url=https://apaas-meim.app.yuchai.com/app/a5e8e08/ycgf-yf-rddata -apaas.token.url=http://apaas-meim.app.yuchai.com/apaas/backend/a5e8e08/ycgf-yf-rddata +apaas.token.url=http://asdasd apaas.token.clientId=2b5b3de8-e7fd-406a-a59a-d5568457b1f4 apaas.token.clientSecred=94bddc6a-27a4-4204-885b-b075812ec535 apaas.single.tenantId=223770822127386625