From d4d5dc2e23e107e834bfed4cec501087dfe7ac56 Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Mon, 2 Feb 2026 15:23:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E7=BA=BF=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/BusinessDatabase.java | 10 ++- .../DataEntryEngineModelController.java | 14 +++ .../ResponsiblePersonController.java | 13 ++- .../TemplateApprovalController.java | 6 +- .../controller/XdapDeptUsersController.java | 15 +++- .../request/EngineParamDetailRequest.java | 5 ++ .../domain/pojo/BenchmarkingReportPojo.java | 2 +- .../domain/pojo/ParameterPojo.java | 2 +- .../domain/pojo/ResponsiblePersonPojo.java | 2 +- .../domain/pojo/TemplatePojo.java | 5 +- .../domain/view/TodoAndReportListView.java | 2 +- .../domain/view/TodoAndTemplateView.java | 4 +- .../domain/view/UserInfoView.java | 11 +++ .../ParameterValueCalculationTimer.java | 2 +- .../service/DataEntryEngineModelService.java | 3 + .../service/XdapDeptUsersService.java | 4 + .../impl/ActivitiProcessServiceImpl.java | 45 +++++++--- .../impl/BenchmarkingReportServiceImpl.java | 45 ++++++++-- .../impl/DataEntryEngineModelServiceImpl.java | 20 ++--- .../impl/EngineParamDetailServiceImpl.java | 6 +- .../service/impl/ParameterServiceImpl.java | 5 ++ .../impl/ResponsiblePersonServiceImpl.java | 55 ++++++++++-- .../service/impl/TcDataQueryServiceImpl.java | 3 + .../impl/TemplateApprovalServiceImpl.java | 27 +++++- .../service/impl/TemplateServiceImpl.java | 89 +++++++------------ .../service/impl/TodoTaskServiceImpl.java | 4 + .../impl/XdapDeptUsersServiceImpl.java | 54 ++++++++--- .../service/impl/YcTaskResultServiceImpl.java | 77 +++++++++------- src/main/resources/application.properties | 16 ++++ 29 files changed, 370 insertions(+), 176 deletions(-) create mode 100644 src/main/java/com/xdap/self_development/domain/view/UserInfoView.java rename src/main/java/com/xdap/self_development/{schedule => job}/ParameterValueCalculationTimer.java (99%) diff --git a/src/main/java/com/xdap/self_development/common/BusinessDatabase.java b/src/main/java/com/xdap/self_development/common/BusinessDatabase.java index 5cd3f3d..bb30f05 100644 --- a/src/main/java/com/xdap/self_development/common/BusinessDatabase.java +++ b/src/main/java/com/xdap/self_development/common/BusinessDatabase.java @@ -17,16 +17,18 @@ public class BusinessDatabase { @Value("${apaas.single.tenantId}") private String tenantId; - @Value("${mpaas.datasource[0].name}") - private String tcDatabaseName; - @Bean public MpaasQuery getBusinessDatabase() { + return queryFactory.buildFromDatasource("qygs"); + } + + @Bean + public MpaasQuery getSystemDatabase() { return queryFactory.buildFromDatasource(DatasourceConstant.XDAP_MYSQL_PREFIX + tenantId); } @Bean public MpaasQuery getTCDatabase() { - return queryFactory.buildFromDatasource(tcDatabaseName == null ? DatasourceConstant.XDAP_MYSQL_PREFIX + tenantId : tcDatabaseName); + return queryFactory.buildFromDatasource("yc_lrs_test_relsult"); } } diff --git a/src/main/java/com/xdap/self_development/controller/DataEntryEngineModelController.java b/src/main/java/com/xdap/self_development/controller/DataEntryEngineModelController.java index b7e4ed4..2228458 100644 --- a/src/main/java/com/xdap/self_development/controller/DataEntryEngineModelController.java +++ b/src/main/java/com/xdap/self_development/controller/DataEntryEngineModelController.java @@ -11,6 +11,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; /** * 发动机型号数据控制器 @@ -27,6 +28,19 @@ public class DataEntryEngineModelController { @Resource private DataEntryEngineModelService entryEngineModelService; + /** + * 同步新模板参数 + * + * @param modelId 机型ID + */ + @GetMapping("synchronizeParams") + public Response synchronizeParams( + @NotBlank(message = "机型不能为空") String modelId + ) { + entryEngineModelService.synchronizeParams(modelId); + return Response.ok().setMessage("同步成功"); + } + /** * Excel导入 * diff --git a/src/main/java/com/xdap/self_development/controller/ResponsiblePersonController.java b/src/main/java/com/xdap/self_development/controller/ResponsiblePersonController.java index 8d4a702..e5b39b5 100644 --- a/src/main/java/com/xdap/self_development/controller/ResponsiblePersonController.java +++ b/src/main/java/com/xdap/self_development/controller/ResponsiblePersonController.java @@ -4,7 +4,7 @@ import com.definesys.mpaas.common.http.Response; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.department.pojo.entity.XdapDepartments; import com.xdap.api.moudle.user.pojo.XdapUsers; -import com.xdap.runtime.service.RuntimeDatasourceService; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.common.MyResponse; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.domain.pojo.ResponsiblePersonPojo; @@ -34,7 +34,7 @@ import java.util.Set; @RequestMapping("/custom/responsible") public class ResponsiblePersonController { @Resource - private RuntimeDatasourceService runtimeDatasourceService; + private BusinessDatabase bd; @Resource private ResponsiblePersonService responsiblePersonService; @@ -158,14 +158,12 @@ public class ResponsiblePersonController { ) { List xdapDepartments; if (departmentId == null || departmentId.isEmpty()) { - xdapDepartments = runtimeDatasourceService. - buildTenantNoSchemaMpaasQuery() + xdapDepartments = bd.getSystemDatabase() .eq("level", 1) .eq("status", "ENABLE") .doQuery(XdapDepartments.class); } else { - xdapDepartments = runtimeDatasourceService. - buildTenantNoSchemaMpaasQuery() + xdapDepartments = bd.getSystemDatabase() .eq("parent_id", departmentId) .eq("status", "ENABLE") .doQuery(XdapDepartments.class); @@ -184,8 +182,7 @@ public class ResponsiblePersonController { public Response getUserByDepartmentId( @Valid DepartmentUserForm form ) { - List responsiblePeoples = runtimeDatasourceService - .buildTenantNoSchemaMpaasQuery() + List responsiblePeoples = bd.getSystemDatabase() .viewQueryMode(true) .view("getUserByDepartment") .setVar("departmentId", form.getDepartmentId()) diff --git a/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java b/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java index 209fb84..51b3ead 100644 --- a/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java +++ b/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java @@ -2,7 +2,7 @@ package com.xdap.self_development.controller; import com.definesys.mpaas.common.http.Response; import com.definesys.mpaas.query.db.PageQueryResult; -import com.xdap.runtime.service.RuntimeDatasourceService; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.domain.dto.ApprovalNodesDTO; import com.xdap.self_development.domain.view.ApprovalFlowNodeView; @@ -31,7 +31,7 @@ public class TemplateApprovalController { @Resource private TemplateApprovalService templateApprovalService; @Resource - private RuntimeDatasourceService runtimeDatasourceService; + private BusinessDatabase bd; /** * 修改后继续流程 @@ -132,7 +132,7 @@ public class TemplateApprovalController { public Response getUsersByCondition( @RequestParam String name ) { - List users = runtimeDatasourceService.buildTenantNoSchemaMpaasQuery() + List users = bd.getSystemDatabase() .viewQueryMode(true) .view("getUserAndDept") .like("username", name) diff --git a/src/main/java/com/xdap/self_development/controller/XdapDeptUsersController.java b/src/main/java/com/xdap/self_development/controller/XdapDeptUsersController.java index df86384..bc58c43 100644 --- a/src/main/java/com/xdap/self_development/controller/XdapDeptUsersController.java +++ b/src/main/java/com/xdap/self_development/controller/XdapDeptUsersController.java @@ -3,14 +3,13 @@ package com.xdap.self_development.controller; import com.definesys.mpaas.common.http.Response; import com.xdap.api.moudle.user.pojo.XdapUsers; +import com.xdap.self_development.domain.view.UserInfoView; import com.xdap.self_development.service.XdapDeptUsersService; import org.apache.commons.lang3.ObjectUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.constraints.NotBlank; import java.util.List; /** @@ -26,6 +25,14 @@ public class XdapDeptUsersController { @Resource private XdapDeptUsersService xdapDeptUsersService; + @GetMapping("/getUserInfo") + public Response getDeptAndUserById( + @NotBlank(message = "用户不能为空") String userId + ) { + UserInfoView userInfo = xdapDeptUsersService.getUserInfo(userId); + return Response.ok(userInfo); + } + /** * 查询部门下的人(用于选择参数填写人) * diff --git a/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java b/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java index 88c965a..0f42376 100644 --- a/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java +++ b/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java @@ -27,6 +27,11 @@ public class EngineParamDetailRequest { */ @NotBlank(message = "发动机型号ID不能为空") private String engineModelID; + + /** + * 版本 + */ + private Integer versionNumber; /** * 发动机型号+产品编号 */ diff --git a/src/main/java/com/xdap/self_development/domain/pojo/BenchmarkingReportPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/BenchmarkingReportPojo.java index 1e6d87a..a1aceaa 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/BenchmarkingReportPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/BenchmarkingReportPojo.java @@ -18,7 +18,7 @@ import java.sql.Timestamp; */ @SQLQuery(value = { @SQL(view = "getReportById", - sql = "SELECT ymbr.series, ymbr.id, ymbr.title, ymbr.manufacturer_name, ymbr.model_name, ymbr.module , ymbr.manufacturer_abbreviation, ymbr.model_abbreviation, ymbr.product_number, ymbr.plate, ymbr.platform , ymbr.market_segment, ymbr.project_name, ymbr.project_number, ymbr.upload_time, ymbr.file_path , ymbr.status, ymbr.file_name, xu.username AS create_by FROM yfsjglpt_model_benchmarking_report ymbr LEFT JOIN xdap_users xu ON xu.id = ymbr.create_by where ymbr.id = #reportId") + sql = "SELECT ymbr.series, ymbr.id, ymbr.title, ymbr.manufacturer_name, ymbr.model_name, ymbr.module , ymbr.manufacturer_abbreviation, ymbr.model_abbreviation, ymbr.product_number, ymbr.plate, ymbr.platform , ymbr.market_segment, ymbr.project_name, ymbr.project_number, ymbr.upload_time, ymbr.file_path , ymbr.status, ymbr.file_name FROM yfsjglpt_model_benchmarking_report ymbr where ymbr.id = #reportId") }) @EqualsAndHashCode(callSuper = true) @Data diff --git a/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java index 7c5e093..7afc3e1 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java @@ -146,7 +146,7 @@ public class ParameterPojo extends MpaasBasePojo { "非必填", "必填,并且为下列之一:数据平台手工录入、TC分类表、公式计算", "非必填,如果参数来源为'公式计算'则必填。填写规范:参数名可以是中文、数字、大小写字母、中文括号 `()`必须以中文开头,不能包含运算符和英文括号;参数名也可以是数字;支持圆周率,必须是小写的`π`,不支持`Π`;负号 `-` 可作为操作数前缀。公式示例:π*(直径(内径)/2)*(直径(内径)/2)", - "非必填,如果参数来源为'数据平台手工录入'则必填;部门必须为研发总院的子部门,如‘研发部’", + "非必填,如果参数来源为'数据平台手工录入'则必填;部门必须为研发总院的部门,如‘研发部’", "非必填"}; } } diff --git a/src/main/java/com/xdap/self_development/domain/pojo/ResponsiblePersonPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/ResponsiblePersonPojo.java index 03ca9ae..5e3bf3a 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/ResponsiblePersonPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/ResponsiblePersonPojo.java @@ -14,7 +14,7 @@ import java.sql.Timestamp; @Table("yfsjglpt_model_responsible_person") @SQLQuery(value = { @SQL(view = "getResponsibleAndName", - sql = "SELECT ymrp.*, xu.username, xu.user_number as userAccount FROM yfsjglpt_model_responsible_person ymrp JOIN xdap_users xu ON ymrp.user_id = xu.id where ymrp.person_level = #level order by creation_date desc") + sql = "SELECT ymrp.* FROM yfsjglpt_model_responsible_person ymrp where ymrp.person_level = #level order by creation_date desc") }) public class ResponsiblePersonPojo extends MpaasBasePojo { @RowID(sequence = "responsible_person_s", type = RowIDType.UUID) diff --git a/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java b/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java index 27a6352..bf1bbcd 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java @@ -17,12 +17,11 @@ import java.sql.Timestamp; @SQLQuery(value = { @SQL(view = "getLatestTemplateOrder", - sql = "WITH ranked_templates AS ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) SELECT rt.order_num, rt.id, rt.template_name, rt.version, rt.status , rt.created_time, rt.published_time, xu.username AS \"createBy\" FROM ranked_templates rt LEFT JOIN xdap_users xu ON xu.id = rt.create_by WHERE rt.rn = 1 ORDER BY CASE rt.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC, rt.order_num DESC"), + sql = "WITH ranked_templates AS ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) SELECT rt.order_num, rt.id, rt.template_name, rt.version, rt.status , rt.created_time, rt.published_time, rt.create_by AS \"createBy\" FROM ranked_templates rt WHERE rt.rn = 1 ORDER BY CASE rt.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC, rt.created_time DESC"), // 查找每个模板的最新版本并且优先级按照已发布、审核中、草稿状态转变(只有这三种状态) // CASE ranked.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC, @SQL(view = "getLatestTemplate", - sql = "SELECT ROW_NUMBER() OVER (ORDER BY ranked.order_num DESC) AS display_order_num, ranked.id, ranked.template_name, ranked.version, ranked.return_num , ranked.status, ranked.created_time, ranked.published_time, ROW_NUMBER() OVER (ORDER BY ranked.order_num DESC) AS order_num , xu.username AS \"createBy\" FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE WHEN status = 'COMPLETE' THEN 1 WHEN status = 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) ranked LEFT JOIN xdap_users xu ON xu.id = ranked.create_by WHERE rn = 1 ORDER BY ranked.order_num DESC" -// sql = "SELECT ROW_NUMBER() OVER (ORDER BY CASE ranked.status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'RETURNED' THEN 4 WHEN 'REJECTED' THEN 5 ELSE 6 END ASC, ranked.order_num DESC) AS order_num, ranked.id, ranked.template_name, ranked.version , ranked.status, ranked.created_time, ranked.published_time, xu.username AS \"createBy\" FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE WHEN status = 'COMPLETE' THEN 1 WHEN status = 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) ranked LEFT JOIN xdap_users xu ON xu.id = ranked.create_by WHERE rn = 1 ORDER BY ranked.order_num DESC" + sql = "SELECT ROW_NUMBER() OVER (ORDER BY ranked.created_time DESC) AS display_order_num, ranked.id, ranked.template_name, ranked.version, ranked.return_num , ranked.status, ranked.created_time, ranked.published_time, ROW_NUMBER() OVER (ORDER BY ranked.order_num DESC) AS order_num , ranked.create_by AS \"createBy\" FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY template_name ORDER BY CASE WHEN status = 'COMPLETE' THEN 1 WHEN status = 'APPROVING' THEN 2 ELSE 3 END, version DESC) AS rn FROM yfsjglpt_model_template t WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) ranked WHERE rn = 1 ORDER BY ranked.created_time DESC" ), // 获取所有模板的最新版本号(包括所有状态) @SQL(view = "getNewTemplate", diff --git a/src/main/java/com/xdap/self_development/domain/view/TodoAndReportListView.java b/src/main/java/com/xdap/self_development/domain/view/TodoAndReportListView.java index 2dce51f..197a616 100644 --- a/src/main/java/com/xdap/self_development/domain/view/TodoAndReportListView.java +++ b/src/main/java/com/xdap/self_development/domain/view/TodoAndReportListView.java @@ -13,7 +13,7 @@ import java.util.List; @SQLQuery(value = { // 查询每个报告最新审批流程 @SQL(view = "getAllReportApprovalList", - sql = "WITH RankedFlows AS (SELECT af.id AS flowId, r.id AS reportId, af.process_title AS title, af.flow_status AS status, af.create_by AS createBy, xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users, ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 2 and af.flow_status <> 'DRAFT') SELECT flowId, reportId, title, status, createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC") + sql = "WITH RankedFlows AS ( SELECT af.id AS flowId, r.id AS reportId, af.process_title AS title, af.flow_status AS status, af.create_by AS createBy , af.created_time AS createdTime, ac.assignees AS current_users, row_number() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_benchmarking_report r ON af.template_id = r.id WHERE af.flow_type = 2 AND af.flow_status <> 'DRAFT' ) SELECT flowId, reportId, title, status, createBy , createdTime, current_users FROM RankedFlows WHERE rn = 1 AND title LIKE CONCAT('%', #title, '%') AND status LIKE CONCAT('%', #status, '%') AND createdTime LIKE CONCAT('%', #createdTime, '%') AND createBy in (#ids) ORDER BY createdTime DESC") }) @Data public class TodoAndReportListView { diff --git a/src/main/java/com/xdap/self_development/domain/view/TodoAndTemplateView.java b/src/main/java/com/xdap/self_development/domain/view/TodoAndTemplateView.java index aefc50c..51fe017 100644 --- a/src/main/java/com/xdap/self_development/domain/view/TodoAndTemplateView.java +++ b/src/main/java/com/xdap/self_development/domain/view/TodoAndTemplateView.java @@ -12,11 +12,9 @@ import java.util.List; @SQLQuery(value = { // CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC @SQL(view = "getAllApproval", - sql = "WITH RankedFlows AS ( SELECT af.id AS flowId, t.id AS templateId, t.template_name AS templateName, t.version AS version, af.flow_status AS status , af.create_by AS createBy, xu.username AS username, af.created_time AS createdTime, ac.assignees AS current_users , ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_template t ON af.template_id = t.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE af.flow_type = 1 ) SELECT flowId, templateId, templateName, version, status , createBy, username, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND templateName LIKE CONCAT('%', #templateName, '%')AND status LIKE CONCAT('%', #status, '%')AND createdTime LIKE CONCAT('%', #createdTime, '%')AND username LIKE CONCAT('%', #username, '%') ORDER BY createdTime DESC"), + sql = "WITH RankedFlows AS ( SELECT af.id AS flowId, t.id AS templateId, t.template_name AS templateName, t.version AS version, af.flow_status AS status , af.create_by AS createBy, af.created_time AS createdTime, ac.assignees AS current_users , ROW_NUMBER() OVER (PARTITION BY af.template_id ORDER BY af.created_time DESC) AS rn FROM yfsjglpt_model_approval_flow af LEFT JOIN approval_config ac ON af.id = ac.approval_id AND af.current_node = ac.node_order LEFT JOIN yfsjglpt_model_template t ON af.template_id = t.id WHERE af.flow_type = 1 ) SELECT flowId, templateId, templateName, version, status , createBy, createdTime, current_users FROM RankedFlows WHERE rn = 1 AND templateName LIKE CONCAT('%', #templateName, '%')AND status LIKE CONCAT('%', #status, '%')AND createdTime LIKE CONCAT('%', #createdTime, '%') AND createBy in (#ids) ORDER BY createdTime DESC"), @SQL(view = "getApprovalByUserIdAndIds", sql = "SELECT af.id AS \"flowId\", t.id AS \"templateId\", t.template_name AS \"templateName\", t.version AS \"version\", af.flow_status AS \"status\" , af.create_by AS \"createBy\", af.created_time AS \"createdTime\" , CASE WHEN current_node = 'PROOFREAD' THEN proofread_users WHEN current_node = 'REVIEW' THEN review_users WHEN current_node = 'COUNTERSIGN' THEN countersign_users WHEN current_node = 'APPROVE' THEN approve_users END AS current_users FROM yfsjglpt_model_approval_flow af JOIN yfsjglpt_model_template t ON af.template_id = t.id WHERE t.template_name like CONCAT('%',#templateName, '%') and af.flow_status like CONCAT('%',#status, '%') and af.flow_type = 1 and af.id NOT IN (#ids) AND af.create_by = #createBy"), - @SQL(view = "getTodoAndTemplate", - sql = "SELECT af.id AS \"flowId\", t.id AS \"templateId\", t.template_name AS \"templateName\", t.version AS \"version\", af.flow_status AS \"status\" , af.create_by AS \"createBy\" , xu.username AS \"username\", af.created_time AS \"createdTime\" , CASE WHEN current_node = 'PROOFREAD' THEN proofread_users WHEN current_node = 'REVIEW' THEN review_users WHEN current_node = 'COUNTERSIGN' THEN countersign_users WHEN current_node = 'APPROVE' THEN approve_users END AS current_users FROM yfsjglpt_model_approval_flow af JOIN yfsjglpt_model_template t ON af.template_id = t.id LEFT JOIN xdap_users xu ON xu.id = af.create_by WHERE t.template_name LIKE CONCAT('%', #templateName, '%') AND af.flow_status LIKE CONCAT('%', #status, '%') AND af.created_time LIKE CONCAT('%', #createdTime, '%') AND xu.username LIKE CONCAT('%', #username, '%') AND af.flow_type = 1 AND (af.id IN (#ids) OR af.create_by = #createBy) ORDER BY CASE af.flow_status WHEN 'COMPLETE' THEN 1 WHEN 'APPROVING' THEN 2 WHEN 'DRAFT' THEN 3 WHEN 'REJECTED' THEN 4 ELSE 5 END ASC") }) @Data public class TodoAndTemplateView { diff --git a/src/main/java/com/xdap/self_development/domain/view/UserInfoView.java b/src/main/java/com/xdap/self_development/domain/view/UserInfoView.java new file mode 100644 index 0000000..4f7813c --- /dev/null +++ b/src/main/java/com/xdap/self_development/domain/view/UserInfoView.java @@ -0,0 +1,11 @@ +package com.xdap.self_development.domain.view; + +import lombok.Data; + +import java.util.List; + +@Data +public class UserInfoView { + private String username; + private List departments; +} diff --git a/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java b/src/main/java/com/xdap/self_development/job/ParameterValueCalculationTimer.java similarity index 99% rename from src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java rename to src/main/java/com/xdap/self_development/job/ParameterValueCalculationTimer.java index 3b0cc1e..ce2d13d 100644 --- a/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java +++ b/src/main/java/com/xdap/self_development/job/ParameterValueCalculationTimer.java @@ -1,4 +1,4 @@ -package com.xdap.self_development.schedule; +package com.xdap.self_development.job; import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.domain.pojo.ClassificationAttributePojo; diff --git a/src/main/java/com/xdap/self_development/service/DataEntryEngineModelService.java b/src/main/java/com/xdap/self_development/service/DataEntryEngineModelService.java index d233dab..7c88290 100644 --- a/src/main/java/com/xdap/self_development/service/DataEntryEngineModelService.java +++ b/src/main/java/com/xdap/self_development/service/DataEntryEngineModelService.java @@ -7,6 +7,7 @@ import com.xdap.self_development.domain.pojo.DataEntryEngineModelPojo; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; import java.util.List; /** @@ -43,4 +44,6 @@ public interface DataEntryEngineModelService { PageResultDTO selectVersionByConditionPage(); void delete(String modelId); + + void synchronizeParams(@NotBlank(message = "机型不能为空") String modelId); } diff --git a/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java b/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java index 458f225..390e819 100644 --- a/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java +++ b/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java @@ -3,7 +3,9 @@ package com.xdap.self_development.service; import com.xdap.api.moudle.department.pojo.entity.XdapDepartments; import com.xdap.api.moudle.user.pojo.XdapUsers; +import com.xdap.self_development.domain.view.UserInfoView; +import javax.validation.constraints.NotBlank; import java.util.List; /** @@ -30,4 +32,6 @@ public interface XdapDeptUsersService { XdapUsers selectUserByID(String userId); //通过人工号查找人员 XdapUsers selectUserByCode(String userCode); + + UserInfoView getUserInfo(@NotBlank(message = "用户不能为空") String userId); } 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 43eb4bd..6fcc058 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 @@ -509,6 +509,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { ParamValueVersionEnum status, String userId ) { + // + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", flow.getModelId()) + .doQueryFirst(DataEntryEngineModelPojo.class); // 删除所有待办 bd.getBusinessDatabase() .eq("document_no", flow.getId()) @@ -523,6 +527,8 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { // .update("minor_version", "")// 小版本清空 .update("last_update_date", new Date()) .eq("approval_id", flow.getId()) + .eq("engine_model_id", flow.getModelId()) + .eq("major_version", model.getVersionNumber()) .doUpdate(EngineParamDetailPojo.class); // 审批流改为已拒绝或已撤回 bd.getBusinessDatabase() @@ -632,7 +638,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .ne("is_distributed_res", 2) .isNull("parameter_value") .doQuery(EngineParamDetailPojo.class); - + List toBePassed = new ArrayList<>(); if (emptyParameters.size() == oldDetails.size()) { for (EngineParamDetailPojo item : list) { bd.getBusinessDatabase() @@ -640,23 +646,24 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("parameter_value", item.getMinorVersion()) .update("minor_version", null) .doUpdate(EngineParamDetailPojo.class); + toBePassed.add(item); } } else { // 更新机型版本 - model.setVersionNumber(model.getVersionNumber() + 1); List toInsert = new ArrayList<>(); - for (EngineParamDetailPojo oldDetail : oldDetails) { + List allOldParams = bd.getBusinessDatabase() + .eq("engine_model_id", flow.getModelId()) + .eq("major_version", model.getVersionNumber()) + .doQuery(EngineParamDetailPojo.class); + model.setVersionNumber(model.getVersionNumber() + 1); + for (EngineParamDetailPojo oldDetail : allOldParams) { EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo(); BeanUtils.copyProperties(oldDetail, engineParamDetailPojo - , "id" - , "majorVersion" - , "minorVersion" - , "versionStatus" - , "approvalId" - , "isDelete" - , "operation"); + , "id"); if (ids.contains(oldDetail.getId())) { engineParamDetailPojo.setParameterValue(oldDetail.getMinorVersion()); + engineParamDetailPojo.setMinorVersion(null); + toBePassed.add(engineParamDetailPojo); } engineParamDetailPojo.setMajorVersion(model.getVersionNumber()); // 添加到待插入列表 @@ -673,10 +680,18 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { } // 这一批数据改成审核通过, + List toBePassedIds = new ArrayList<>(); + if (!toBePassed.isEmpty()) { + toBePassedIds.addAll( + toBePassed.stream() + .map(EngineParamDetailPojo::getId) + .collect(Collectors.toList()) + ); + } bd.getBusinessDatabase() .update("version_status", ParamValueVersionEnum.PASSED.getCode()) .update("last_update_date", new Date()) - .eq("approval_id", flow.getId()) + .in("id", toBePassedIds) .doUpdate(EngineParamDetailPojo.class); // 审批流改为已通过 bd.getBusinessDatabase() @@ -703,7 +718,9 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("distribute_status", DistributeStatusEnum.UNDISTRIBUTED.getCode()) .doUpdate(DataEntryEngineModelPojo.class); // 修改新参数状态为草稿并清除所有责任人和填写人 - List collected = finishDetails.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList()); + List collected = finishDetails.stream() + .map(EngineParamDetailPojo::getId) + .collect(Collectors.toList()); bd.getBusinessDatabase() .update("is_distributed_res", 0) .update("is_distributed_filled", 0) @@ -1054,7 +1071,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { dto.setNodeName(node.getNodeName()); dto.setNodeOrder(node.getNodeOrder()); dto.setAssignees( - bd.getBusinessDatabase() + bd.getSystemDatabase() .in("id", userIds) .doQuery(XdapUsers.class) ); @@ -1558,7 +1575,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { private String getUserNames(List userIds) { StringJoiner joiner = new StringJoiner(" "); for (String userId : userIds) { - XdapUsers user = bd.getBusinessDatabase() + XdapUsers user = bd.getSystemDatabase() .eq("id", userId) .doQueryFirst(XdapUsers.class); if (user != null) { 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 e0508e4..7a4cc88 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 @@ -191,12 +191,16 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService 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(), @@ -206,6 +210,9 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService 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); @@ -810,13 +817,18 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService */ @Override public PageQueryResult getApprovalList(ApprovalListForm form) { + List ids = bd.getSystemDatabase() + .like("username", form.getUsername()) + .eq("exit_status", "ENABLE") + .doQuery(XdapUsers.class).stream() + .map(XdapUsers::getId).collect(Collectors.toList()); PageQueryResult result = bd.getBusinessDatabase() .viewQueryMode(true) .view("getAllReportApprovalList") .setVar("title", form.getTemplateName()) .setVar("status", form.getStatus()) .setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate()) - .setVar("username", form.getUsername()) + .setVar("ids", ids) .doPageQuery(form.getPageNumber(), form.getPageSize(), TodoAndReportListView.class); setApprovalCurrentUser(result); return result; @@ -831,12 +843,20 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService */ private void setApprovalCurrentUser(PageQueryResult result) { result.getResult().forEach(item -> { + ApprovalXdapUsersPojo approvalXdapUser = bd.getSystemDatabase() + .eq("id", item.getCreateBy()) + .doQueryFirst(ApprovalXdapUsersPojo.class); + if (approvalXdapUser == null || approvalXdapUser.getUsername() == null) { + item.setUsername("未知用户-" + item.getCreateBy()); + } else { + item.setUsername(approvalXdapUser.getUsername()); + } if (item.getCurrentUsers() == null || item.getCurrentUsers().isEmpty()) { item.setCurrentApprovers(null); item.setCurrentUsers(null); } else { List userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class); - List approvalXdapUsers = bd.getBusinessDatabase() + List approvalXdapUsers = bd.getSystemDatabase() .in("id", userIds) .doQuery(ApprovalXdapUsersPojo.class); item.setCurrentApprovers(approvalXdapUsers); @@ -883,7 +903,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService */ private void setCurrentApprovers(PageQueryResult result) { result.getResult().forEach(item -> { - ApprovalXdapUsersPojo approvalXdapUser = bd.getBusinessDatabase() + ApprovalXdapUsersPojo approvalXdapUser = bd.getSystemDatabase() .eq("id", item.getCreateBy()) .doQueryFirst(ApprovalXdapUsersPojo.class); item.setCreateBy(approvalXdapUser == null ? item.getCreateBy() : approvalXdapUser.getUsername()); @@ -1216,7 +1236,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService dto.setNodeName(node.getNodeName()); dto.setNodeOrder(node.getNodeOrder()); dto.setAssignees( - bd.getBusinessDatabase() + bd.getSystemDatabase() .in("id", userIds) .doQuery(XdapUsers.class) ); @@ -1230,11 +1250,20 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService @Override public BenchmarkingReportPojo getReportDetail(String reportId) { - return bd.getBusinessDatabase() + BenchmarkingReportPojo benchmarkingReportPojo = bd.getBusinessDatabase() .viewQueryMode(true) .view("getReportById") .setVar("reportId", reportId) .doQueryFirst(BenchmarkingReportPojo.class); + XdapUsers user = bd.getSystemDatabase() + .eq("id", benchmarkingReportPojo.getCreateBy()) + .doQueryFirst(XdapUsers.class); + if (user == null || user.getUsername() == null) { + benchmarkingReportPojo.setCreateBy("未知用户-" + benchmarkingReportPojo.getCreateBy()); + } else { + benchmarkingReportPojo.setCreateBy(user.getUsername()); + } + return benchmarkingReportPojo; } @Override @@ -1387,7 +1416,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService private String getUserNames(List userIds) { StringJoiner joiner = new StringJoiner(" "); for (String userId : userIds) { - XdapUsers user = bd.getBusinessDatabase() + XdapUsers user = bd.getSystemDatabase() .eq("id", userId) .doQueryFirst(XdapUsers.class); if (user != null) { 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 8b05624..5331d63 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 @@ -190,7 +190,7 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ if (ObjectUtils.isEmpty(userId)) { throw new ExcelImportException("执行上传操作的用户查不到,无法上传"); } - List users = bd.getBusinessDatabase() + List users = bd.getSystemDatabase() .eq("id", userId) .doQuery(XdapUsers.class); if (ObjectUtils.isEmpty(users)) { @@ -239,7 +239,7 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ ); } - List users = bd.getBusinessDatabase() + List users = bd.getSystemDatabase() .eq("id", userId) .doQuery(XdapUsers.class); if (ObjectUtils.isEmpty(users)) { @@ -394,16 +394,9 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ */ @Override public void delete(String modelId) { - EngineReviewListPojo flow = bd.getBusinessDatabase() - .eq("model_id", modelId) - .doQueryFirst(EngineReviewListPojo.class); - if (!ObjectUtils.isEmpty(flow)) { - throw new CommonException("参数值在审批值,机型无法删除"); - } - DataEntryEngineModelPojo model = bd.getBusinessDatabase() - .eq("model_id", modelId) + .eq("id", modelId) .doQueryFirst(DataEntryEngineModelPojo.class); if (ObjectUtils.isEmpty(model)) { throw new CommonException("机型不存在"); @@ -419,6 +412,13 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ .doUpdate(DataEntryEngineModelPojo.class); } + @Override + public void synchronizeParams(String modelId) { + bd.getBusinessDatabase() + .eq("status", "COMPLETE") + .doQuery(TemplatePojo.class); + } + /** * 设置响应 * 设置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 1752060..cd73983 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 @@ -373,11 +373,15 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { .eq("parameter_source", "数据平台手工录入") .doQuery(EngineParamDetailPojo.class)); } else { + Integer version = model.getVersionNumber(); + if (request.getVersionNumber() != null) { + version = request.getVersionNumber(); + } paramDetails.addAll(bd.getBusinessDatabase() .eq("engine_model_id", model.getId()) .eq("subsystem_name", subsystem) .eq("parts_name", type) - .eq("major_version", model.getVersionNumber()) + .eq("major_version", version) .eq("parameter_source", "数据平台手工录入") .doQuery(EngineParamDetailPojo.class)); } diff --git a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java index 8d65eeb..458c846 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ParameterServiceImpl.java @@ -159,6 +159,8 @@ public class ParameterServiceImpl implements ParameterService { * @param userId 用户ID * @return 模板POJO */ + @Override + @Transactional public TemplatePojo createOrReuseNewTemplate(TemplateBenchmark benchmark, String userId) { TemplatePojo baseTemplate = benchmark.getBaseTemplate(); // 草稿状态复用原模板,已发布创建新版本 @@ -187,6 +189,7 @@ public class ParameterServiceImpl implements ParameterService { * @param templateRowId 模板行ID * @return 模板基准信息 */ + @Override public TemplateBenchmark getTemplateBenchmark(String templateRowId) { // 基准模板(用户选择的要比较的版本) TemplatePojo baseTemplate = bd.getBusinessDatabase() @@ -548,6 +551,8 @@ public class ParameterServiceImpl implements ParameterService { * @param result 参数处理结果 * @return void */ + @Override + @Transactional public void saveAllData(TemplatePojo originalTemplate, TemplatePojo newTemplate, ParameterProcessingResult result) { List parameterIds = bd.getBusinessDatabase() .eq("template_id", newTemplate.getId()) diff --git a/src/main/java/com/xdap/self_development/service/impl/ResponsiblePersonServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ResponsiblePersonServiceImpl.java index cc2d4af..7b4b674 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ResponsiblePersonServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ResponsiblePersonServiceImpl.java @@ -58,6 +58,21 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { .eq("personLevel", 1) .doQuery(ResponsiblePersonPojo.class); + XdapDepartments currentDept = bd.getSystemDatabase() + .eq("name", "研发总院") + .doQueryFirst(XdapDepartments.class); + if (currentDept == null) { + throw new CommonException("没有找到研发总院"); + } + XdapDepartments xdapDepartment = bd.getSystemDatabase() + .eq("id", form.getDepartmentId()) + .eq("parent_id", currentDept.getId()) + .doQueryFirst(XdapDepartments.class); + if (xdapDepartment == null) { + throw new CommonException("在研发总院,找不到该部门"); + } + + if (!responsiblePeople.isEmpty()) { throw new CommonException("一个部门和子系统只能有一个责任人"); } @@ -151,12 +166,23 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { * @return 部门责任人分页查询结果 */ public PageQueryResult getDeptResponsible(DeptResponsiblePageForm form) { - - return bd.getBusinessDatabase() + PageQueryResult result = bd.getBusinessDatabase() .viewQueryMode(true) .view("getResponsibleAndName") .setVar("level", 1) .doPageQuery(form.getPageNumber(), form.getPageSize(), ResponsiblePersonPojo.class); + result.getResult().forEach(responsiblePersonPojo -> { + XdapUsers user = bd.getSystemDatabase() + .eq("id", responsiblePersonPojo.getUserId()) + .doQueryFirst(XdapUsers.class); + if (user == null || user.getUsername() == null) { + responsiblePersonPojo.setUsername("未知用户-" + responsiblePersonPojo.getUserId()); + } else { + responsiblePersonPojo.setUsername(user.getUsername()); + responsiblePersonPojo.setUserAccount(user.getUserNumber()); + } + }); + return result; } @Override @@ -255,6 +281,18 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { .setVar("level", 1) .doQuery(ResponsiblePersonPojo.class); + list.forEach(responsiblePersonPojo -> { + XdapUsers user = bd.getSystemDatabase() + .eq("id", responsiblePersonPojo.getUserId()) + .doQueryFirst(XdapUsers.class); + if (user == null || user.getUsername() == null) { + responsiblePersonPojo.setUsername("未知用户-" + responsiblePersonPojo.getUserId()); + } else { + responsiblePersonPojo.setUsername(user.getUsername()); + responsiblePersonPojo.setUserAccount(user.getUserNumber()); + } + }); + EasyExcel.write(response.getOutputStream(), ResponsiblePersonPojo.class) .registerWriteHandler(new DescriptionWriteUtils(ResponsiblePersonPojo.getFieldDescriptions())) .includeColumnFieldNames(getIncludeColumnFieldNames()) @@ -344,10 +382,11 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { */ public XdapUserView getUserByDeptAndName(String department, String userAccount, String username) { XdapUserView xdapUserView = new XdapUserView(); - XdapDepartments xdapDepartments = bd.getBusinessDatabase() + XdapDepartments xdapDepartments = bd.getSystemDatabase() .eq("name", "研发总院") .doQueryFirst(XdapDepartments.class); - XdapDepartments currentDept = bd.getBusinessDatabase() + if (xdapDepartments == null) return xdapUserView; + XdapDepartments currentDept = bd.getSystemDatabase() .eq("name", department) .eq("parent_id", xdapDepartments.getId()) .doQueryFirst(XdapDepartments.class); @@ -355,7 +394,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { if (currentDept != null) xdapUserView.setDepartmentId(currentDept.getId()); if (userAccount != null) { - XdapUsers currentUser = bd.getBusinessDatabase() + XdapUsers currentUser = bd.getSystemDatabase() .eq("user_number", userAccount) .eq("username", username) .eq("exit_status", "ENABLE") @@ -363,7 +402,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { if (currentUser != null) xdapUserView.setUserId(currentUser.getId()); } else { - List xdapUsers = bd.getBusinessDatabase() + List xdapUsers = bd.getSystemDatabase() .eq("username", username) .eq("exit_status", "ENABLE") .doQuery(XdapUsers.class); @@ -381,11 +420,11 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { */ @Override public List getResponsibleDepartment() { - XdapDepartments currentDept = bd.getBusinessDatabase() + XdapDepartments currentDept = bd.getSystemDatabase() .eq("name", "研发总院") .doQueryFirst(XdapDepartments.class); if (currentDept == null) return Collections.emptyList(); - return bd.getBusinessDatabase() + return bd.getSystemDatabase() .eq("parent_id", currentDept.getId()) .doQuery(XdapDepartments.class); } diff --git a/src/main/java/com/xdap/self_development/service/impl/TcDataQueryServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TcDataQueryServiceImpl.java index d389f2a..89d68a4 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TcDataQueryServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TcDataQueryServiceImpl.java @@ -420,6 +420,9 @@ public class TcDataQueryServiceImpl implements TcDataQueryService { public Map> tcDataSelectByVersion(AnalysisVerRequest analysisRequest) { List parameters = engineParamDetailService.selectAllAndTcByNewVersion(); DataEntryEngineModelPojo dataEntryEngineModelPojo = engineModelService.selectBymodelId(analysisRequest.getEngineModelID()); + if (dataEntryEngineModelPojo == null) { + throw new CommonException("查询失败:机型不存在"); + } //解析所有子系统-零部件对 List> subsystemPartsPairs = analysisRequest.getSubsystemParts().stream() diff --git a/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java index 275fe23..09cb38e 100644 --- a/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/TemplateApprovalServiceImpl.java @@ -221,6 +221,10 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { throw new CommonException("流程不存在"); } + if (flow.getFlowStatus().equals("APPROVING")) { + throw new CommonException("流程正在审批中"); + } + // 清除原流程节点的所有待办 bd.getBusinessDatabase() .eq("document_no", flow.getId()) @@ -397,13 +401,18 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { * @return 待办和模板视图分页结果 */ public PageQueryResult getApprovalList(ApprovalListForm form) { + List ids = bd.getSystemDatabase() + .like("username", form.getUsername()) + .eq("exit_status", "ENABLE") + .doQuery(XdapUsers.class).stream() + .map(XdapUsers::getId).collect(Collectors.toList()); PageQueryResult result = bd.getBusinessDatabase() .viewQueryMode(true) .view("getAllApproval") .setVar("templateName", form.getTemplateName()) .setVar("status", form.getStatus()) .setVar("createdTime", form.getCreateDate() == null ? "" : form.getCreateDate()) - .setVar("username", form.getUsername()) + .setVar("ids", ids) .doPageQuery(form.getPageNumber(), form.getPageSize(), TodoAndTemplateView.class); setCurrentApprovers(result); return result; @@ -411,12 +420,16 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { private void setCurrentApprovers(PageQueryResult result) { result.getResult().forEach(item -> { + XdapUsers user = bd.getSystemDatabase() + .eq("id", item.getCreateBy()) + .doQueryFirst(XdapUsers.class); + item.setUsername(user == null ? "未找到用户-" + item.getCreateBy() : user.getUsername()); if (item.getCurrentUsers() == null || item.getCurrentUsers().isEmpty()) { item.setCurrentApprovers(null); item.setCurrentUsers(null); } else { List userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class); - List approvalXdapUsers = bd.getBusinessDatabase() + List approvalXdapUsers = bd.getSystemDatabase() .in("id", userIds) .doQuery(ApprovalXdapUsersPojo.class); item.setCurrentApprovers(approvalXdapUsers); @@ -783,7 +796,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { dto.setNodeName(node.getNodeName()); dto.setNodeOrder(node.getNodeOrder()); dto.setAssignees( - bd.getBusinessDatabase() + bd.getSystemDatabase() .in("id", userIds) .doQuery(XdapUsers.class) ); @@ -1044,6 +1057,9 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { TemplatePojo template = bd.getBusinessDatabase() .eq("id", form.getTemplateId()) .doQueryFirst(TemplatePojo.class); + if (template == null) { + throw new CommonException("模板不存在"); + } if (form.getFlowId() == null) { return bd.getBusinessDatabase() .viewQueryMode(true) @@ -1263,7 +1279,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { private String getUserNames(List userIds) { StringJoiner joiner = new StringJoiner(" "); for (String userId : userIds) { - XdapUsers user = bd.getBusinessDatabase() + XdapUsers user = bd.getSystemDatabase() .eq("id", userId) .doQueryFirst(XdapUsers.class); if (user != null) { @@ -1282,6 +1298,9 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { ApprovalFlowPojo flow = bd.getBusinessDatabase() .eq("id", request.getFlowId()) .doQueryFirst(ApprovalFlowPojo.class); + if (flow == null) { + throw new CommonException("流程不存在"); + } if (!Objects.equals(flow.getCreateBy(), request.getUserId())) { throw new CommonException("不是申请人无法撤回"); } 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 ec9254d..18b1433 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 @@ -6,6 +6,7 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.department.pojo.entity.XdapDepartments; +import com.xdap.api.moudle.user.pojo.XdapUsers; import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.common.MyResponse; import com.xdap.self_development.controller.form.*; @@ -55,11 +56,23 @@ public class TemplateServiceImpl implements TemplateService { */ @Override public PageQueryResult getTemplateByCondition(TemplatePageForm form) { - return bd.getBusinessDatabase() + PageQueryResult result = bd.getBusinessDatabase() .viewQueryMode(true) .view("getLatestTemplate") .like("template_name", form.getTemplateName()) .doPageQuery(form.getPageNumber(), form.getPageSize(), TemplatePojo.class); + result.getResult().forEach(templatePojo -> { + XdapUsers user = bd.getSystemDatabase() + .eq("id", templatePojo.getCreateBy()) + .doQueryFirst(XdapUsers.class); + if (user == null || user.getUsername() == null) { + templatePojo.setCreateBy("未知用户-" + templatePojo.getCreateBy()); + } else { + templatePojo.setCreateBy(user.getUsername()); + } + }); + return result; + } /** @@ -83,7 +96,7 @@ public class TemplateServiceImpl implements TemplateService { // 创建新模板 TemplatePojo newTemplate = new TemplatePojo( form.getTemplateName(), 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), - null, form.getUserId(), System.currentTimeMillis(), 0 + null, form.getUserId(), System.currentTimeMillis() / 1000, 0 ); bd.getBusinessDatabase().doInsert(newTemplate); @@ -97,58 +110,13 @@ public class TemplateServiceImpl implements TemplateService { @Override @Transactional public void updateTemplate(UpdateTemplateForm form) { - TemplatePojo template = bd.getBusinessDatabase() - .viewQueryMode(true) - .view("getLatestTemplateOrder") - .eq("template_name", form.getTemplateName()) + TemplatePojo templateName = bd.getBusinessDatabase() + .rowid("id", form.getTemplateRowId()) .doQueryFirst(TemplatePojo.class); - if (template != null) { - if (Objects.equals(form.getTemplateName(), template.getTemplateName()) && form.getOrderNum() != null) { - List sorted = bd.getBusinessDatabase() - .groupBy("order_num") - .orderBy("order_num", "desc") - .doQuery(TemplatePojo.class) - .stream().map(TemplatePojo::getOrderNum) - .collect(Collectors.toList()); - - Long num = sorted.get(form.getOrderNum() - 1); - if (num == null) { - num = sorted.get(sorted.size() - 1); - } - - List originalTemplateId = bd.getBusinessDatabase() - .eq("order_num", template.getOrderNum()) - .doQuery(TemplatePojo.class).stream().map(TemplatePojo::getId) - .collect(Collectors.toList()); - List updateTemplateId = bd.getBusinessDatabase() - .eq("order_num", num) - .doQuery(TemplatePojo.class).stream().map(TemplatePojo::getId) - .collect(Collectors.toList()); - - if (updateTemplateId.isEmpty()) { - bd.getBusinessDatabase() - .in("id", originalTemplateId) - .update("order_num", System.currentTimeMillis()) - .doUpdate(TemplatePojo.class); - } else { - bd.getBusinessDatabase() - .in("id", updateTemplateId) - .update("order_num", template.getOrderNum()) - .doUpdate(TemplatePojo.class); - bd.getBusinessDatabase() - .in("id", originalTemplateId) - .update("order_num", num) - .doUpdate(TemplatePojo.class); - } - return; - } - throw new CommonException("不可修改为已有模板"); + if (templateName == null) { + throw new CommonException("没有找到模板"); } - String templateName = bd.getBusinessDatabase() - .rowid("id", form.getTemplateRowId()) - .doQueryFirst(TemplatePojo.class) - .getTemplateName(); bd.getBusinessDatabase() .eq("template_name", templateName) @@ -181,15 +149,20 @@ public class TemplateServiceImpl implements TemplateService { MyResponse problems = new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无")); - String targetDepartmentIds = bd.getBusinessDatabase() + XdapDepartments targetDepartment = bd.getSystemDatabase() .eq("name", "研发总院") - .doQueryFirst(XdapDepartments.class).getId(); + .doQueryFirst(XdapDepartments.class); - List subDepartments = bd.getBusinessDatabase() - .in("parent_id", targetDepartmentIds) + if (targetDepartment == null) { + throw new CommonException("找不到部门‘研发总院’"); + } + + List subDepartments = bd.getSystemDatabase() + .in("parent_id", targetDepartment.getId()) .doQuery(XdapDepartments.class).stream().map(XdapDepartments::getName) .collect(Collectors.toList()); + try (InputStream inputStream = file.getInputStream()){ EasyExcel.read( inputStream, @@ -410,10 +383,10 @@ 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(), 0 + Timestamp.valueOf(LocalDateTime.now()), null, createBy, System.currentTimeMillis() / 1000, 0 ); lastTemplateParameters = bd.getBusinessDatabase() .viewQueryMode(true) @@ -424,7 +397,7 @@ public class TemplateServiceImpl implements TemplateService { // 如果没有同名模板,创建第一个版本 targetTemplate = new TemplatePojo( templateName, 1, "DRAFT", Timestamp.valueOf(LocalDateTime.now()), - null, createBy, System.currentTimeMillis(), 0 + 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 982359a..4ef68b9 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 @@ -386,6 +386,7 @@ public class TodoTaskServiceImpl implements TodoTaskService { .eq("created_by_id", todoTaskPojo.getCreatedById()) .eq("process_title", model.getModelName() + "-" + "分发参数填写人任务") .update("current_node", "待分解") + .update("current_processor", null) .doUpdate(InitiatedTaskPojo.class); // 更新完成 bd.getBusinessDatabase() @@ -394,6 +395,7 @@ public class TodoTaskServiceImpl implements TodoTaskService { .eq("owner_id", todoTaskPojo.getCreatedById()) .eq("process_title", model.getModelName() + "-" + "分发参数填写人任务") .update("current_node", "待分解") + .update("current_processor", null) .doUpdate(CompletedTaskPojo.class); } } @@ -428,6 +430,7 @@ public class TodoTaskServiceImpl implements TodoTaskService { .eq("created_by_id", todoTaskPojo.getCreatedById()) .eq("process_title", model.getModelName() + "-" + "分发参数责任人任务") .update("current_node", "待分解") + .update("current_processor", null) .doUpdate(InitiatedTaskPojo.class); // 更新完成 @@ -437,6 +440,7 @@ public class TodoTaskServiceImpl implements TodoTaskService { .eq("owner_id", todoTaskPojo.getCreatedById()) .eq("process_title", model.getModelName() + "-" + "分发参数责任人任务") .update("current_node", "待分解") + .update("current_processor", null) .doUpdate(CompletedTaskPojo.class); } else { throw new CommonException("参数错误"); 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 4e4f585..76cc968 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 @@ -5,6 +5,8 @@ import com.xdap.api.moudle.department.pojo.entity.XdapDepartments; import com.xdap.api.moudle.department.pojo.entity.XdapDeptUsers; import com.xdap.api.moudle.user.pojo.XdapUsers; import com.xdap.self_development.common.BusinessDatabase; +import com.xdap.self_development.domain.view.UserInfoView; +import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.service.XdapDeptUsersService; import groovy.util.logging.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -43,7 +45,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isEmpty(deptId)) { return null; } - List departmentsPojos = bd.getBusinessDatabase() + List departmentsPojos = bd.getSystemDatabase() .eq("id", deptId) .doQuery(XdapDepartments.class); if (ObjectUtils.isNotEmpty(departmentsPojos)) { @@ -63,7 +65,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isEmpty(deptName)) { return null; } - List departmentsPojos = bd.getBusinessDatabase() + List departmentsPojos = bd.getSystemDatabase() .eq("name", deptName) .doQuery(XdapDepartments.class); if (ObjectUtils.isNotEmpty(departmentsPojos)) { @@ -83,12 +85,12 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { XdapDepartments xdapDepartmentsPojo = selectDeptByName(deptName); List xdapUsersPojos = new ArrayList<>(); if (ObjectUtils.isNotEmpty(xdapDepartmentsPojo)) { - List xdapDeptUsersPojos = bd.getBusinessDatabase() + List xdapDeptUsersPojos = bd.getSystemDatabase() .eq("department_id", xdapDepartmentsPojo.getId()) .doQuery(XdapDeptUsers.class); if (ObjectUtils.isNotEmpty(xdapDeptUsersPojos)) { for (XdapDeptUsers xdapDeptUsersPojo : xdapDeptUsersPojos) { - List usersPojos = bd.getBusinessDatabase() + List usersPojos = bd.getSystemDatabase() .eq("id", xdapDeptUsersPojo.getUserId()) .doQuery(XdapUsers.class); if (ObjectUtils.isNotEmpty(usersPojos)) { @@ -114,7 +116,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isEmpty(personName)) { return Collections.emptyList(); } - return bd.getBusinessDatabase() + return bd.getSystemDatabase() .eq("username", personName) .doQuery(XdapUsers.class); } @@ -131,9 +133,9 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isNotEmpty(xdapUsersPojos) && ObjectUtils.isNotEmpty(dpName)) { //提取用户ID集合 - List idList = xdapUsersPojos.stream().map(x -> x.getId()).collect(Collectors.toList()); + List idList = xdapUsersPojos.stream().map(XdapUsers::getId).collect(Collectors.toList()); //根据用户ID查找对应关系表 - List departmentsPojos = bd.getBusinessDatabase() + List departmentsPojos = bd.getSystemDatabase() .in("user_id", idList) .doQuery(XdapDeptUsers.class); //关系表筛选部门 @@ -141,7 +143,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { //筛选完成后查到对应的人员 if (ObjectUtils.isNotEmpty(collect)) { String userId = collect.get(0).getUserId(); - List usersPojo = bd.getBusinessDatabase() + List usersPojo = bd.getSystemDatabase() .eq("id", userId) .doQuery(XdapUsers.class); if (ObjectUtils.isNotEmpty(usersPojo)) { @@ -166,7 +168,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isEmpty(userId)) { return null; } - List userPojos = bd.getBusinessDatabase() + List userPojos = bd.getSystemDatabase() .eq("id", userId) .doQuery(XdapUsers.class); if (ObjectUtils.isNotEmpty(userPojos)) { @@ -187,7 +189,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { if (ObjectUtils.isEmpty(userCode)) { return null; } - List userPojos = bd.getBusinessDatabase() + List userPojos = bd.getSystemDatabase() .eq("user_number", userCode) .doQuery(XdapUsers.class); if (ObjectUtils.isNotEmpty(userPojos)) { @@ -195,4 +197,36 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService { } return null; } + + @Override + public UserInfoView getUserInfo(String userId) { + UserInfoView userInfoView = new UserInfoView(); + XdapUsers user = bd.getSystemDatabase() + .eq("id", userId) + .doQueryFirst(XdapUsers.class); + if (user == null) { + throw new CommonException("找不到当前用户"); + } + userInfoView.setUsername(user.getUsername()); + List depts = bd.getSystemDatabase() + .eq("user_id", user.getId()) + .doQuery(XdapDeptUsers.class); + XdapDeptUsers commonDept = bd.getSystemDatabase() + .eq("name", "研发总院") + .doQueryFirst(XdapDeptUsers.class); + if (depts.isEmpty() || commonDept == null) { + return userInfoView; + } + List xdapDepartments = bd.getSystemDatabase() + .in("id", depts) + .eq("parent_id", commonDept.getId()) + .doQuery(XdapDepartments.class); + if (xdapDepartments.isEmpty()) { + userInfoView.setDepartments(new ArrayList<>()); + return userInfoView; + } + List deptNames = xdapDepartments.stream().map(XdapDepartments::getName).collect(Collectors.toList()); + userInfoView.setDepartments(deptNames); + 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 047e9a0..e777e12 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 @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.Instant; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; import java.util.ArrayList; @@ -34,7 +35,8 @@ 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 DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.systemDefault()); + ; @Resource private BusinessDatabase bd; @@ -47,31 +49,38 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { @Value("${apaas.single.appId}") private String appId; + public static String time2Str(Date creationDate) { + if (creationDate == null) { + return ""; + } + return FORMATTER.format(creationDate.toInstant()); + } + private String getTodoUrl() { - XdapMenus xdapMenus = bd.getBusinessDatabase() + XdapMenus xdapMenus = bd.getSystemDatabase() .eq("app_id", appId) .eq("menu_name", "我的待办") .doQueryFirst(XdapMenus.class); String menuId = xdapMenus == null ? "" : xdapMenus.getId(); - return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-toDoList?appId=" + appId + "&title=我的待办&url=apaas-custom-toDoList¤tMenu=" + menuId; + return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-toDoList?appId=" + appId + "&menuType=CUSTOM&title=我的待办&url=apaas-custom-toDoList¤tMenu=" + menuId; } private String getCompletedUrl() { - XdapMenus xdapMenus = bd.getBusinessDatabase() + XdapMenus xdapMenus = bd.getSystemDatabase() .eq("app_id", appId) .eq("menu_name", "我发起的") .doQueryFirst(XdapMenus.class); String menuId = xdapMenus == null ? "" : xdapMenus.getId(); - return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-myDone?appId=" + appId + "&title=我发起的&url=apaas-custom-mySend¤tMenu=" + menuId; + return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-myDone?appId=" + appId + "&menuType=CUSTOM&title=我发起的&url=apaas-custom-mySend¤tMenu=" + menuId; } private String getInitiatorUrl() { - XdapMenus xdapMenus = bd.getBusinessDatabase() + XdapMenus xdapMenus = bd.getSystemDatabase() .eq("app_id", appId) .eq("menu_name", "我的经办") .doQueryFirst(XdapMenus.class); String menuId = xdapMenus == null ? "" : xdapMenus.getId(); - return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-mySend?appId=" + appId + "&title=我的经办&url=apaas-custom-myDone¤tMenu=" + menuId; + return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-mySend?appId=" + appId + "&menuType=CUSTOM&title=我的经办&url=apaas-custom-myDone¤tMenu=" + menuId; } /** @@ -95,12 +104,13 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { List todoTaskPojos = bd.getBusinessDatabase() .eq("owner_id", id) .eq("is_delete", 0) + .orderBy("creation_date", "desc") .doQuery(TodoTaskPojo.class); for (TodoTaskPojo todoTaskPojo : todoTaskPojos) { YcTodoTaskResultDTO dto = new YcTodoTaskResultDTO(); dto.setTitle(todoTaskPojo.getProcessTitle()); dto.setSystemName("研发数据管理平台"); - dto.setUpdateDate(DATE_FORMATTER.format(todoTaskPojo.getCreationDate().toInstant())); + dto.setUpdateDate(time2Str(todoTaskPojo.getCreationDate())); dto.setActivityLabel(todoTaskPojo.getCurrentNode()); dto.setUrl(getTodoUrl()); dtos.add(dto); @@ -128,7 +138,7 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { .doQuery(CompletedTaskPojo.class); completedTaskPojos.addAll(list); } else { - XdapUsers user = bd.getBusinessDatabase() + XdapUsers user = bd.getSystemDatabase() .eq("user_number", ycGetTodoTaskRequest.getUsername()) .doQueryFirst(XdapUsers.class); if (user == null) { @@ -150,17 +160,17 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { BinaryOperator .maxBy(Comparator.comparing(CompletedTaskPojo::getCreationDate)))) .values()); - Integer page = safeParsePageParam(ycGetTodoTaskRequest.getPage(), 1); - Integer pageSize = safeParsePageParam(ycGetTodoTaskRequest.getPageSize(), 10); - int fromIndex = (page - 1) * pageSize; - int toIndex = Math.min(fromIndex + pageSize, collect.size()); + Integer page = safeParsePageParam(ycGetTodoTaskRequest.getPage(), null); + Integer pageSize = safeParsePageParam(ycGetTodoTaskRequest.getPageSize(), null); + int fromIndex = page == null ? 0 : (page - 1) * pageSize; + int toIndex = page == null ? collect.size() : Math.min(fromIndex + pageSize, collect.size()); List paginatedList = collect.subList(fromIndex, toIndex); List list = new ArrayList<>(); paginatedList.forEach(completedTaskPojo -> { YcTodoTaskCommonResultDTO dto = new YcTodoTaskCommonResultDTO(); dto.setTitle(completedTaskPojo.getProcessTitle()); - dto.setCreateDate(DATE_FORMATTER.format(completedTaskPojo.getCreationDate().toInstant())); + dto.setCreateDate(time2Str(completedTaskPojo.getCreationDate())); dto.setActivityName(completedTaskPojo.getCurrentNode()); dto.setUrl(getCompletedUrl()); list.add(dto); @@ -171,6 +181,22 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { return ycTaskResult; } + private Integer safeParsePageParam(String paramStr, Integer defaultValue) { + if (paramStr == null || paramStr.trim().isEmpty()) { + return defaultValue; + } + String cleanParam = paramStr.trim(); + + if (!POSITIVE_INTEGER_PATTERN.matcher(cleanParam).matches()) { + return defaultValue; + } + try { + return Integer.parseInt(cleanParam); + } catch (NumberFormatException e) { + return defaultValue; + } + } + @Override public YcTaskResult returnInitiator(YcGetTodoTaskRequest ycGetTodoTaskRequest) { YcTaskResult ycTaskResult = new YcTaskResult(); @@ -185,8 +211,9 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { .lteq("creation_date", ycGetTodoTaskRequest.getCreateDateEnd() == null ? new Date() : ycGetTodoTaskRequest.getCreateDateEnd()) .doQuery(InitiatedTaskPojo.class); initiatedTaskPojos.addAll(list); + total = list.size(); } else { - XdapUsers user = bd.getBusinessDatabase() + XdapUsers user = bd.getSystemDatabase() .eq("user_number", ycGetTodoTaskRequest.getUsername()) .doQueryFirst(XdapUsers.class); if (user == null) { @@ -208,7 +235,7 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { initiatedTaskPojos.forEach(initiatedTaskPojo -> { YcTodoTaskCommonResultDTO dto = new YcTodoTaskCommonResultDTO(); dto.setTitle(initiatedTaskPojo.getProcessTitle()); - dto.setCreateDate(DATE_FORMATTER.format(initiatedTaskPojo.getCreationDate().toInstant())); + dto.setCreateDate(time2Str(initiatedTaskPojo.getCreationDate())); dto.setActivityName(initiatedTaskPojo.getCurrentNode()); dto.setUrl(getInitiatorUrl()); list.add(dto); @@ -219,29 +246,13 @@ public class YcTaskResultServiceImpl implements YcTaskResultService { return ycTaskResult; } - private Integer safeParsePageParam(String paramStr, Integer defaultValue) { - if (paramStr == null || paramStr.trim().isEmpty()) { - return defaultValue; - } - String cleanParam = paramStr.trim(); - - if (!POSITIVE_INTEGER_PATTERN.matcher(cleanParam).matches()) { - return defaultValue; - } - try { - return Integer.parseInt(cleanParam); - } catch (NumberFormatException e) { - return defaultValue; - } - } - private Date safeParseDateParam(String dateStr, Date defaultValue) { if (dateStr == null || dateStr.trim().isEmpty()) { return defaultValue; } try { String trimmedDateStr = dateStr.trim(); - TemporalAccessor temporal = DATE_FORMATTER.parse(trimmedDateStr); + TemporalAccessor temporal = FORMATTER.parse(trimmedDateStr); Instant instant = Instant.from(temporal); return Date.from(instant); } catch (Exception e) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a03fcea..02159bf 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -66,6 +66,22 @@ mpaas.datasource[0].username=root mpaas.datasource[0].password=qwer12 mpaas.datasource[0].minPoolSize=50 mpaas.datasource[0].maxPoolSize=1000 +mpaas.datasource[1].name=yc_lrs_test_relsult +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].driver-class-name=com.mysql.cj.jdbc.Driver +mpaas.datasource[1].username=root +mpaas.datasource[1].password=qwer12 +mpaas.datasource[1].minPoolSize=50 +mpaas.datasource[1].maxPoolSize=1000 +mpaas.datasource[2].name=qygs +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].driver-class-name=com.mysql.cj.jdbc.Driver +mpaas.datasource[2].username=root +mpaas.datasource[2].password=qwer12 +mpaas.datasource[2].minPoolSize=50 +mpaas.datasource[2].maxPoolSize=1000 mpaas.security=false mpaas.query.dbadatper=mysql