上线版本

This commit is contained in:
zjh 2026-02-02 15:23:30 +08:00
parent 46ceb430b4
commit d4d5dc2e23
29 changed files with 370 additions and 176 deletions

View File

@ -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");
}
}

View File

@ -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导入
*

View File

@ -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> 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<DepartmentUserView> responsiblePeoples = runtimeDatasourceService
.buildTenantNoSchemaMpaasQuery()
List<DepartmentUserView> responsiblePeoples = bd.getSystemDatabase()
.viewQueryMode(true)
.view("getUserByDepartment")
.setVar("departmentId", form.getDepartmentId())

View File

@ -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<DepartmentUserView> users = runtimeDatasourceService.buildTenantNoSchemaMpaasQuery()
List<DepartmentUserView> users = bd.getSystemDatabase()
.viewQueryMode(true)
.view("getUserAndDept")
.like("username", name)

View File

@ -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);
}
/**
* 查询部门下的人用于选择参数填写人
*

View File

@ -27,6 +27,11 @@ public class EngineParamDetailRequest {
*/
@NotBlank(message = "发动机型号ID不能为空")
private String engineModelID;
/**
* 版本
*/
private Integer versionNumber;
/**
* 发动机型号+产品编号
*/

View File

@ -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

View File

@ -146,7 +146,7 @@ public class ParameterPojo extends MpaasBasePojo {
"非必填",
"必填并且为下列之一数据平台手工录入、TC分类表、公式计算",
"非必填,如果参数来源为'公式计算'则必填。填写规范:参数名可以是中文、数字、大小写字母、中文括号 ``必须以中文开头,不能包含运算符和英文括号;参数名也可以是数字;支持圆周率,必须是小写的`π`,不支持`Π`;负号 `-` 可作为操作数前缀。公式示例:π*(直径(内径)/2)*(直径(内径)/2)",
"非必填,如果参数来源为'数据平台手工录入'则必填;部门必须为研发总院的部门,如‘研发部’",
"非必填,如果参数来源为'数据平台手工录入'则必填;部门必须为研发总院的部门,如‘研发部’",
"非必填"};
}
}

View File

@ -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)

View File

@ -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",

View File

@ -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 {

View File

@ -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 {

View File

@ -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<String> departments;
}

View File

@ -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;

View File

@ -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<DataEntryEngineModelDto> selectVersionByConditionPage();
void delete(String modelId);
void synchronizeParams(@NotBlank(message = "机型不能为空") String modelId);
}

View File

@ -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);
}

View File

@ -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<EngineParamDetailPojo> 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<EngineParamDetailPojo> toInsert = new ArrayList<>();
for (EngineParamDetailPojo oldDetail : oldDetails) {
List<EngineParamDetailPojo> 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<String> 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<String> collected = finishDetails.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList());
List<String> 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<String> 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) {

View File

@ -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<String, String> 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<TodoAndReportListView> getApprovalList(ApprovalListForm form) {
List<String> ids = bd.getSystemDatabase()
.like("username", form.getUsername())
.eq("exit_status", "ENABLE")
.doQuery(XdapUsers.class).stream()
.map(XdapUsers::getId).collect(Collectors.toList());
PageQueryResult<TodoAndReportListView> 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<TodoAndReportListView> 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<String> userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class);
List<ApprovalXdapUsersPojo> approvalXdapUsers = bd.getBusinessDatabase()
List<ApprovalXdapUsersPojo> 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<TodoAndReportView> 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<String> 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) {

View File

@ -190,7 +190,7 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ
if (ObjectUtils.isEmpty(userId)) {
throw new ExcelImportException("执行上传操作的用户查不到,无法上传");
}
List<XdapUsers> users = bd.getBusinessDatabase()
List<XdapUsers> users = bd.getSystemDatabase()
.eq("id", userId)
.doQuery(XdapUsers.class);
if (ObjectUtils.isEmpty(users)) {
@ -239,7 +239,7 @@ public class DataEntryEngineModelServiceImpl implements DataEntryEngineModelServ
);
}
List<XdapUsers> users = bd.getBusinessDatabase()
List<XdapUsers> 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响应的头部信息用于文件下载

View File

@ -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));
}

View File

@ -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<String> parameterIds = bd.getBusinessDatabase()
.eq("template_id", newTemplate.getId())

View File

@ -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<ResponsiblePersonPojo> getDeptResponsible(DeptResponsiblePageForm form) {
return bd.getBusinessDatabase()
PageQueryResult<ResponsiblePersonPojo> 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> xdapUsers = bd.getBusinessDatabase()
List<XdapUsers> 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<XdapDepartments> 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);
}

View File

@ -420,6 +420,9 @@ public class TcDataQueryServiceImpl implements TcDataQueryService {
public Map<String, List<EngineParamDetailPojo>> tcDataSelectByVersion(AnalysisVerRequest analysisRequest) {
List<ParameterPojo> parameters = engineParamDetailService.selectAllAndTcByNewVersion();
DataEntryEngineModelPojo dataEntryEngineModelPojo = engineModelService.selectBymodelId(analysisRequest.getEngineModelID());
if (dataEntryEngineModelPojo == null) {
throw new CommonException("查询失败:机型不存在");
}
//解析所有子系统-零部件对
List<Map.Entry<String, String>> subsystemPartsPairs = analysisRequest.getSubsystemParts().stream()

View File

@ -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<TodoAndTemplateView> getApprovalList(ApprovalListForm form) {
List<String> ids = bd.getSystemDatabase()
.like("username", form.getUsername())
.eq("exit_status", "ENABLE")
.doQuery(XdapUsers.class).stream()
.map(XdapUsers::getId).collect(Collectors.toList());
PageQueryResult<TodoAndTemplateView> 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<TodoAndTemplateView> 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<String> userIds = JSON.parseArray(item.getCurrentUsers()).toJavaList(String.class);
List<ApprovalXdapUsersPojo> approvalXdapUsers = bd.getBusinessDatabase()
List<ApprovalXdapUsersPojo> 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<String> 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("不是申请人无法撤回");
}

View File

@ -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<TemplatePojo> getTemplateByCondition(TemplatePageForm form) {
return bd.getBusinessDatabase()
PageQueryResult<TemplatePojo> 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<Long> 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<String> originalTemplateId = bd.getBusinessDatabase()
.eq("order_num", template.getOrderNum())
.doQuery(TemplatePojo.class).stream().map(TemplatePojo::getId)
.collect(Collectors.toList());
List<String> 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<String> subDepartments = bd.getBusinessDatabase()
.in("parent_id", targetDepartmentIds)
if (targetDepartment == null) {
throw new CommonException("找不到部门‘研发总院’");
}
List<String> 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<ParameterPojo> 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
);
}

View File

@ -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("参数错误");

View File

@ -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<XdapDepartments> departmentsPojos = bd.getBusinessDatabase()
List<XdapDepartments> 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<XdapDepartments> departmentsPojos = bd.getBusinessDatabase()
List<XdapDepartments> 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<XdapUsers> xdapUsersPojos = new ArrayList<>();
if (ObjectUtils.isNotEmpty(xdapDepartmentsPojo)) {
List<XdapDeptUsers> xdapDeptUsersPojos = bd.getBusinessDatabase()
List<XdapDeptUsers> xdapDeptUsersPojos = bd.getSystemDatabase()
.eq("department_id", xdapDepartmentsPojo.getId())
.doQuery(XdapDeptUsers.class);
if (ObjectUtils.isNotEmpty(xdapDeptUsersPojos)) {
for (XdapDeptUsers xdapDeptUsersPojo : xdapDeptUsersPojos) {
List<XdapUsers> usersPojos = bd.getBusinessDatabase()
List<XdapUsers> 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<String> idList = xdapUsersPojos.stream().map(x -> x.getId()).collect(Collectors.toList());
List<String> idList = xdapUsersPojos.stream().map(XdapUsers::getId).collect(Collectors.toList());
//根据用户ID查找对应关系表
List<XdapDeptUsers> departmentsPojos = bd.getBusinessDatabase()
List<XdapDeptUsers> 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<XdapUsers> usersPojo = bd.getBusinessDatabase()
List<XdapUsers> 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<XdapUsers> userPojos = bd.getBusinessDatabase()
List<XdapUsers> 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<XdapUsers> userPojos = bd.getBusinessDatabase()
List<XdapUsers> 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<XdapDeptUsers> 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> xdapDepartments = bd.getSystemDatabase()
.in("id", depts)
.eq("parent_id", commonDept.getId())
.doQuery(XdapDepartments.class);
if (xdapDepartments.isEmpty()) {
userInfoView.setDepartments(new ArrayList<>());
return userInfoView;
}
List<String> deptNames = xdapDepartments.stream().map(XdapDepartments::getName).collect(Collectors.toList());
userInfoView.setDepartments(deptNames);
return userInfoView;
}
}

View File

@ -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&currentMenu=" + menuId;
return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-toDoList?appId=" + appId + "&menuType=CUSTOM&title=我的待办&url=apaas-custom-toDoList&currentMenu=" + 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&currentMenu=" + menuId;
return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-myDone?appId=" + appId + "&menuType=CUSTOM&title=我发起的&url=apaas-custom-mySend&currentMenu=" + 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&currentMenu=" + menuId;
return frontUrl + "/" + tenantId + "/app/custom-page/apaas-custom-mySend?appId=" + appId + "&menuType=CUSTOM&title=我的经办&url=apaas-custom-myDone&currentMenu=" + menuId;
}
/**
@ -95,12 +104,13 @@ public class YcTaskResultServiceImpl implements YcTaskResultService {
List<TodoTaskPojo> 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<CompletedTaskPojo> paginatedList = collect.subList(fromIndex, toIndex);
List<YcTodoTaskCommonResultDTO> 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) {

View File

@ -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