From 1a8dbb061707849d3da7929e6d6da296ff6dbd7f Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Mon, 19 Jan 2026 16:25:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=B0=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=8F=82=E6=95=B0=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= =?UTF-8?q?=EF=BC=8C=E6=9F=A5=E8=AF=A2=E5=88=86=E6=9E=90=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=80=80=E5=9B=9E=EF=BC=8C=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{config => common}/BusinessDatabase.java | 2 +- .../common/UserPermissionGetter.java | 89 -------- .../controller/AnalysisCommonController.java | 6 + .../controller/CommonParameterController.java | 1 + .../controller/DeleteController.java | 111 +-------- .../TemplateApprovalController.java | 11 + .../controller/TemplateController.java | 1 - .../controller/request/ReportRequest.java | 2 +- .../pojo/AnalysisCommonParameters.java | 11 +- .../xdap/self_development/pojo/Parameter.java | 2 + .../ParameterValueCalculationTimer.java | 64 +++--- .../AnalysisCommonParametersService.java | 2 + .../service/TemplateApprovalService.java | 2 + .../impl/ActivitiProcessServiceImpl.java | 2 +- .../AnalysisCommonParametersServiceImpl.java | 103 ++------- .../impl/BenchmarkingReportServiceImpl.java | 2 +- .../impl/CommonParameterServiceImpl.java | 21 +- .../impl/EngineParamDetailServiceImpl.java | 30 ++- .../impl/ModelMenuPermissionServiceImpl.java | 7 +- .../service/impl/ModelRoleServiceImpl.java | 3 +- .../service/impl/ParameterServiceImpl.java | 2 +- .../impl/ResponsiblePersonServiceImpl.java | 5 +- .../service/impl/TcDataQueryServiceImpl.java | 214 +++--------------- .../impl/TemplateApprovalServiceImpl.java | 73 +++++- .../service/impl/TemplateServiceImpl.java | 2 +- .../service/impl/TodoTaskServiceImpl.java | 3 +- src/main/resources/sql.sql | 113 ++++++++- 27 files changed, 348 insertions(+), 536 deletions(-) rename src/main/java/com/xdap/self_development/{config => common}/BusinessDatabase.java (95%) delete mode 100644 src/main/java/com/xdap/self_development/common/UserPermissionGetter.java diff --git a/src/main/java/com/xdap/self_development/config/BusinessDatabase.java b/src/main/java/com/xdap/self_development/common/BusinessDatabase.java similarity index 95% rename from src/main/java/com/xdap/self_development/config/BusinessDatabase.java rename to src/main/java/com/xdap/self_development/common/BusinessDatabase.java index 2d2bc16..bedcb3b 100644 --- a/src/main/java/com/xdap/self_development/config/BusinessDatabase.java +++ b/src/main/java/com/xdap/self_development/common/BusinessDatabase.java @@ -1,4 +1,4 @@ -package com.xdap.self_development.config; +package com.xdap.self_development.common; import com.definesys.mpaas.query.MpaasQuery; import com.definesys.mpaas.query.MpaasQueryFactory; diff --git a/src/main/java/com/xdap/self_development/common/UserPermissionGetter.java b/src/main/java/com/xdap/self_development/common/UserPermissionGetter.java deleted file mode 100644 index f80c519..0000000 --- a/src/main/java/com/xdap/self_development/common/UserPermissionGetter.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.xdap.self_development.common; - -import com.xdap.jobworker.moudle.department.pojo.entity.XdapDeptUsers; -import com.xdap.runtime.service.RuntimeAppContextService; -import com.xdap.self_development.config.BusinessDatabase; -import com.xdap.self_development.pojo.view.MenuParamView; -import com.xdap.self_development.service.ModelRoleService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -@Slf4j -@Component -public class UserPermissionGetter { - @Resource - private BusinessDatabase businessDatabase; - @Resource - private ModelRoleService modelRoleService; - @Resource - private RuntimeAppContextService runtimeAppContextService; - - public String getUserId() { - return runtimeAppContextService.getCurrentUserId(); - } - - // 获取子系统下的零部件权限 - public List getParamPermissions(String subsystem, String userId) { - Set result = new HashSet<>(); - try { - // 获取用户所有权限 - Map> collected = modelRoleService.selectPersByUser(userId) - .stream().collect(Collectors.groupingBy(MenuParamView::getSubsystem)); - // 获取用户在当前子系统拥有的零部件权限 - if (collected.containsKey(subsystem)) { - result.addAll(collected.get(subsystem) - .stream().map(MenuParamView::getPartsName).collect(Collectors.toSet())); - } - // 获取用户所在部门在当前子系统拥有的零部件权限 - List deptIds = businessDatabase.getBusinessDatabase() - .eq("user_id", userId).doQuery(XdapDeptUsers.class) - .stream().map(XdapDeptUsers::getDepartmentId).collect(Collectors.toList()); - for (String deptId : deptIds) { - Map> collected1 = modelRoleService.selectPersByUser(deptId) - .stream().collect(Collectors.groupingBy(MenuParamView::getSubsystem)); - if (collected1.containsKey(subsystem)) { - result.addAll(collected1.get(subsystem) - .stream().map(MenuParamView::getPartsName).collect(Collectors.toSet())); - } - } - } catch (Exception e) { - log.error(e.getMessage()); - return new ArrayList<>(); - } - return new ArrayList<>(result); - } - - // 获取全部参数权限 - public List getParamPermissions(String userId) { - Set result = new HashSet<>(); - try { - // 获取用户权限 - Map> collected = modelRoleService.selectPersByUser(userId) - .stream().collect(Collectors.groupingBy(MenuParamView::getSubsystem)); - for (String subsystem : collected.keySet()) { - result.addAll(collected.get(subsystem) - .stream().map(MenuParamView::getPartsName).collect(Collectors.toSet())); - } - // 获取用户所在部门权限 - List deptIds = businessDatabase.getBusinessDatabase() - .eq("user_id", userId).doQuery(XdapDeptUsers.class) - .stream().map(XdapDeptUsers::getDepartmentId).collect(Collectors.toList()); - for (String deptId : deptIds) { - Map> collected1 = modelRoleService.selectPersByUser(deptId) - .stream().collect(Collectors.groupingBy(MenuParamView::getSubsystem)); - for (String subsystem : collected1.keySet()) { - result.addAll(collected1.get(subsystem) - .stream().map(MenuParamView::getPartsName).collect(Collectors.toSet())); - } - } - } catch (Exception e) { - log.error(e.getMessage()); - return new ArrayList<>(); - } - return new ArrayList<>(result); - } -} diff --git a/src/main/java/com/xdap/self_development/controller/AnalysisCommonController.java b/src/main/java/com/xdap/self_development/controller/AnalysisCommonController.java index f240375..524203d 100644 --- a/src/main/java/com/xdap/self_development/controller/AnalysisCommonController.java +++ b/src/main/java/com/xdap/self_development/controller/AnalysisCommonController.java @@ -27,6 +27,12 @@ public class AnalysisCommonController { return Response.ok().data(lists); } + // 获取可用参数 + @GetMapping("/getAvailableParameters") + public Response getAvailableParameters() { + List lists = analysisCommonParametersService.getAvailableParameters(); + return Response.ok().data(lists); + } //统计分析图表 @PostMapping("/showReport") diff --git a/src/main/java/com/xdap/self_development/controller/CommonParameterController.java b/src/main/java/com/xdap/self_development/controller/CommonParameterController.java index 4862813..6c919ec 100644 --- a/src/main/java/com/xdap/self_development/controller/CommonParameterController.java +++ b/src/main/java/com/xdap/self_development/controller/CommonParameterController.java @@ -63,6 +63,7 @@ public class CommonParameterController { return Response.ok().setMessage("修改成功"); } +/*-----------------------------------------------------------------*/ // 查询数据分析常用 @GetMapping("/getAnalysisCommonParameter") diff --git a/src/main/java/com/xdap/self_development/controller/DeleteController.java b/src/main/java/com/xdap/self_development/controller/DeleteController.java index 796b488..a603a05 100644 --- a/src/main/java/com/xdap/self_development/controller/DeleteController.java +++ b/src/main/java/com/xdap/self_development/controller/DeleteController.java @@ -1,123 +1,24 @@ package com.xdap.self_development.controller; -import com.alibaba.excel.EasyExcel; import com.definesys.mpaas.common.http.Response; -import com.definesys.mpaas.query.MpaasQueryFactory; -import com.xdap.motor.entity.SnowflakeIdWorker; -import com.xdap.runtime.service.RuntimeAppContextService; import com.xdap.self_development.common.MyResponse; -import com.xdap.self_development.common.UserPermissionGetter; -import com.xdap.self_development.config.BusinessDatabase; -import com.xdap.self_development.controller.request.ModelComparisonExportRequest; -import com.xdap.self_development.feign.ApaasMyTokenFeign; -import com.xdap.self_development.pojo.DataEntryEngineModelPojo; -import com.xdap.self_development.pojo.EngineParamDetailPojo; -import com.xdap.self_development.pojo.ModelDepUserRolePojo; -import com.xdap.self_development.pojo.view.MenuParamView; -import com.xdap.self_development.pojo.view.TcQueryView; import com.xdap.self_development.schedule.ParameterValueCalculationTimer; -import com.xdap.self_development.service.ModelRoleService; -import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @Slf4j @RestController @RequestMapping("/custom/delete") public class DeleteController { + @Resource - private BusinessDatabase yourDataService; + private ParameterValueCalculationTimer parameterValueCalculationTimer; - @PostMapping("queryTc") - public Response queryTc( - @RequestBody List models - ) { - try { - Map engineModelPojoMap = yourDataService.getBusinessDatabase() - .in("id", models) - .doQuery(DataEntryEngineModelPojo.class).stream() - .collect(Collectors.toMap(DataEntryEngineModelPojo::getId, model -> model)); - List allEngineParamDetails = yourDataService.getBusinessDatabase() - .in("engine_model_id", models) - .doQuery(EngineParamDetailPojo.class); - Map> engineParamDetailMap = allEngineParamDetails.stream() - .collect(Collectors.groupingBy(EngineParamDetailPojo::getEngineModelId)); - List queryModels = new ArrayList<>(); - engineParamDetailMap.forEach((key, value) -> { - value.forEach(param -> { - QueryModel queryModel = new QueryModel(); - queryModel.setZtj(engineModelPojoMap.get(key).getProductNumber()); - queryModel.setIdattrtbutehame(param.getParameterName()); - queryModel.setLbjmc(param.getPartsName()); - queryModels.add(queryModel); - }); - }); - - List queryTc = yourDataService.getBusinessDatabase() - .viewQueryMode(true) - .view("queryTc") - .setVar("queryModels", queryModels) - .doQuery(TcQueryView.class); - - return Response.ok().data(queryTc); - } catch (Exception e) { - log.error("查询TC失败", e); - return Response.error("查询TC失败:" + e.getMessage()); - } - } - - @Data - static class QueryModel implements Serializable { - private static final long serialVersionUID = 1L; - // 状态机 - private String ztj; - // 零件名 - private String lbjmc; - // 参数名 - private String idattrtbutehame; - } - - @PostMapping("/excel/import") - public String importExcel(@RequestParam("file") MultipartFile file) { - // 校验文件 - if (file.isEmpty()) { - return "上传的文件为空,请选择有效文件!"; - } - // 校验文件格式 - String fileName = file.getOriginalFilename(); - if (fileName == null || (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls"))) { - return "仅支持 .xlsx 和 .xls 格式的 Excel 文件!"; - } - - try (InputStream inputStream = file.getInputStream()) { - // 创建监听器(注入你的 Service) - ExcelImportListener listener = new ExcelImportListener(yourDataService); - // 执行 Excel 解析 - EasyExcel.read(inputStream, ExcelImportEntity.class, listener) - // 忽略表头(如果 Excel 第一行是表头,这里设置为 1,否则为 0) - .sheet().headRowNumber(1) - .doRead(); - return "Excel 导入成功!"; - } catch (IOException e) { - log.error("Excel 导入失败", e); - return "Excel 导入失败:" + e.getMessage(); - } catch (RuntimeException e) { - log.error("数据写入数据库失败", e); - return "数据写入失败:" + e.getMessage(); - } + @GetMapping("/testCalculate") + public Response testCalculate() { + MyResponse myResponse = parameterValueCalculationTimer.dailyCalculate(); + return Response.ok().data(myResponse); } } 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 a7e8d89..4f37cf8 100644 --- a/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java +++ b/src/main/java/com/xdap/self_development/controller/TemplateApprovalController.java @@ -27,6 +27,17 @@ public class TemplateApprovalController { @Resource private RuntimeDatasourceService runtimeDatasourceService; + // 修改后继续流程 + @GetMapping("/continueApproval") + public Response continueApproval( + @NotBlank @RequestParam String flowId, + @NotBlank @RequestParam String userId + ) { + templateApprovalService.continueApproval(flowId, userId); + return Response.ok(); + } + + // 获取可修改节点 @GetMapping("/getEditableNodes") public Response getEditableNodes( diff --git a/src/main/java/com/xdap/self_development/controller/TemplateController.java b/src/main/java/com/xdap/self_development/controller/TemplateController.java index 556c4a5..1d8a346 100644 --- a/src/main/java/com/xdap/self_development/controller/TemplateController.java +++ b/src/main/java/com/xdap/self_development/controller/TemplateController.java @@ -3,7 +3,6 @@ package com.xdap.self_development.controller; import com.definesys.mpaas.common.http.Response; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.self_development.common.MyResponse; -import com.xdap.self_development.config.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.Template; diff --git a/src/main/java/com/xdap/self_development/controller/request/ReportRequest.java b/src/main/java/com/xdap/self_development/controller/request/ReportRequest.java index f2edab1..0432005 100644 --- a/src/main/java/com/xdap/self_development/controller/request/ReportRequest.java +++ b/src/main/java/com/xdap/self_development/controller/request/ReportRequest.java @@ -13,7 +13,7 @@ public class ReportRequest { private String platform; private String series; private String projectName; - private String projectNumber; + private String productNumber; private String emission; private String burnType; private Double engineCapacityMin; diff --git a/src/main/java/com/xdap/self_development/pojo/AnalysisCommonParameters.java b/src/main/java/com/xdap/self_development/pojo/AnalysisCommonParameters.java index 3d78cec..32aad85 100644 --- a/src/main/java/com/xdap/self_development/pojo/AnalysisCommonParameters.java +++ b/src/main/java/com/xdap/self_development/pojo/AnalysisCommonParameters.java @@ -1,12 +1,14 @@ package com.xdap.self_development.pojo; -import com.definesys.mpaas.query.annotation.RowID; -import com.definesys.mpaas.query.annotation.RowIDType; -import com.definesys.mpaas.query.annotation.Table; +import com.definesys.mpaas.query.annotation.*; import com.definesys.mpaas.query.model.MpaasBasePojo; import lombok.Data; import lombok.EqualsAndHashCode; +@SQLQuery(value = { + @SQL(view = "queryCommon", + sql = "select cp.*, c.common_name from yfsjglpt_common_parameter c left join yfsjglpt_analysis_common_parameters cp on c.id = cp.common_id where c.common_type = 2 and c.create_by = #userId") +}) @EqualsAndHashCode(callSuper = true) @Data @Table("yfsjglpt_analysis_common_parameters") @@ -26,4 +28,7 @@ public class AnalysisCommonParameters extends MpaasBasePojo { private String combustionType; private String commonId; + + @Column(type = ColumnType.CALCULATE) + private String commonName; } diff --git a/src/main/java/com/xdap/self_development/pojo/Parameter.java b/src/main/java/com/xdap/self_development/pojo/Parameter.java index e65956c..05b949c 100644 --- a/src/main/java/com/xdap/self_development/pojo/Parameter.java +++ b/src/main/java/com/xdap/self_development/pojo/Parameter.java @@ -9,6 +9,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @SQLQuery(value = { + @SQL(view = "selectAllParameters", + sql = "SELECT p.* FROM yfsjglpt_model_template t LEFT JOIN yfsjglpt_model_parameter_and_template pat ON t.id = pat.template_id LEFT JOIN yfsjglpt_model_parameter p ON pat.parameter_id = p.id WHERE t.status = 'COMPLETE'"), @SQL(view = "selectTcParameter", sql = "SELECT p.* FROM yfsjglpt_model_template t LEFT JOIN yfsjglpt_model_parameter_and_template pat ON t.id = pat.template_id LEFT JOIN yfsjglpt_model_parameter p ON pat.parameter_id = p.id WHERE t.status = 'COMPLETE' AND p.parameter_source = '数据平台手工录入'"), @SQL(view = "selectParametersByTIdAndCreateBy", diff --git a/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java b/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java index 7d27ea8..92e192f 100644 --- a/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java +++ b/src/main/java/com/xdap/self_development/schedule/ParameterValueCalculationTimer.java @@ -1,7 +1,7 @@ package com.xdap.self_development.schedule; import com.xdap.self_development.common.MyResponse; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.ClassificationAttribute; import com.xdap.self_development.pojo.EnginePartsCollection; @@ -80,29 +80,30 @@ public class ParameterValueCalculationTimer { .eq("lbjmc", parameter.getPartsName()) .doQueryFirst(EnginePartsCollection.class); if (enginePartsCollection == null || enginePartsCollection.getLbjth() == null) { - log.warn("参数【{}】在TC分类表中未找到对应零部件,产品号:{},零部件名:{}", - parameter.getParameterName(), parameter.getProductNumber(), parameter.getPartsName()); - myResponse.getErrors().add("参数【"+parameter.getParameterName()+"】在TC分类表中未找到对应零部件"); + log.warn("机型【{}】的参数【{}】在TC分类表中未找到对应零部件,零部件名:{}", + parameter.getProductNumber(), parameter.getParameterName(), parameter.getPartsName()); + myResponse.getErrors().add("机型【"+parameter.getProductNumber()+"】的参数【"+parameter.getParameterName()+"】在TC分类表中未找到对应零部件"); failedToUpdateFromTC++; continue; } - ClassificationAttribute classificationAttribute = bd.getBusinessDatabase() + ClassificationAttribute classificationAttribute = bd.getBusinessDatabase() .eq("pitemId", enginePartsCollection.getLbjth()) .eq("idattrtbutehame", parameter.getParameterName()) .doQueryFirst(ClassificationAttribute.class); if (classificationAttribute != null && classificationAttribute.getFieldvalue() != null) { String originalValue = parameter.getParameterValue(); parameter.setParameterValue(classificationAttribute.getFieldvalue()); - log.debug("参数【{}】从中台更新值:{} -> {}", parameter.getParameterName(), originalValue, classificationAttribute.getFieldvalue()); + log.debug("机型【{}】的参数【{}】从中台更新值:{} -> {}",parameter.getProductNumber(), parameter.getParameterName(), originalValue, classificationAttribute.getFieldvalue()); + myResponse.getErrors().add("机型【"+parameter.getProductNumber()+"】的参数【"+parameter.getParameterName()+"】从中台更新值:"+ originalValue + " -> " + classificationAttribute.getFieldvalue()); updatedFromTC++; } else { - log.warn("参数【{}】在TC分类表中未找到对应值", parameter.getParameterName()); - myResponse.getErrors().add("参数【"+parameter.getParameterName()+"】在TC分类表中未找到对应值"); + log.warn("机型【{}】的参数【{}】在TC分类表中未找到对应值",parameter.getProductNumber(), parameter.getParameterName()); + myResponse.getErrors().add("机型【"+parameter.getProductNumber()+"】的参数【"+parameter.getParameterName()+"】在TC分类表中未找到对应值"); failedToUpdateFromTC++; } } catch (Exception e) { - log.error("参数【{}】从中台更新值失败:{}", parameter.getParameterName(), e.getMessage(), e); - myResponse.getErrors().add("参数【"+parameter.getParameterName()+"】从中台更新值失败:"+e.getMessage()); + log.error("机型【{}】的参数【{}】从中台更新值失败:{}",parameter.getProductNumber(), parameter.getParameterName(), e.getMessage(), e); + myResponse.getErrors().add("机型【"+parameter.getProductNumber()+"】的参数【"+parameter.getParameterName()+"】从中台更新值失败:"+e.getMessage()); failedToUpdateFromTC++; } } @@ -129,18 +130,18 @@ public class ParameterValueCalculationTimer { String modelId = parameterValue.getModelId(); try { String replacedFormula = replaceParametersInFormula(formula, parameterNames, originalValueMap, modelId); - log.debug("参数【{}】替换公式:{} -> {}", parameterValue.getParameterName(), formula, replacedFormula); + log.debug("机型【{}】的参数【{}】替换公式:{} -> {}",parameterValue.getProductNumber(), parameterValue.getParameterName(), formula, replacedFormula); Double result = calculateExpression(replacedFormula); String formattedResult = String.format("%.6f", result); parameterValue.setParameterValue(formattedResult); toUpdate.add(parameterValue); - log.info("参数【{}】计算结果:{}", parameterValue.getParameterName(), formattedResult); - myResponse.getErrors().add("参数【"+parameterValue.getParameterName()+"】计算结果:"+formattedResult); + log.info("机型【{}】的参数【{}】计算结果:{}",parameterValue.getProductNumber(), parameterValue.getParameterName(), formattedResult); + myResponse.getErrors().add("机型【"+parameterValue.getProductNumber()+"】的参数【"+parameterValue.getParameterName()+"】计算结果:"+formattedResult); successCount++; } catch (Exception e) { - log.error("参数【{}】计算失败:{},公式:{},模型ID:{}", + log.error("机型【{}】的参数【{}】计算失败:{},公式:{},模型ID:{}",parameterValue.getProductNumber(), parameterValue.getParameterName(), e.getMessage(), formula, modelId, e); - myResponse.getErrors().add("参数【"+parameterValue.getParameterName()+"】计算失败:"+e.getMessage()+",公式:"+formula+"模型ID:"+modelId); + myResponse.getErrors().add("机型【"+parameterValue.getProductNumber()+"】的参数【"+parameterValue.getParameterName()+"】计算失败:"+e.getMessage()+",公式:"+formula+"模型ID:"+modelId); parameterValue.setParameterValue(null); toUpdate.add(parameterValue); // 仍然添加到更新列表,用于更新null值 failureCount++; @@ -158,28 +159,27 @@ public class ParameterValueCalculationTimer { for (CalculationParameterView parameterValue : toUpdate) { try { if (parameterValue.getParameterValue() != null) { - bd.getBusinessDatabase() - .table("engine_param_detail") - .eq("id", parameterValue.getId()) - .update("parameter_value", parameterValue.getParameterValue()) - .doUpdate(); - updatedCount++; +// bd.getBusinessDatabase() +// .table("engine_param_detail") +// .eq("id", parameterValue.getId()) +// .update("parameter_value", parameterValue.getParameterValue()) +// .doUpdate(); } else { // 对于计算失败的参数,也更新为null值 - bd.getBusinessDatabase() - .table("engine_param_detail") - .eq("id", parameterValue.getId()) - .update("parameter_value", null) - .doUpdate(); - updatedCount++; +// bd.getBusinessDatabase() +// .table("engine_param_detail") +// .eq("id", parameterValue.getId()) +// .update("parameter_value", null) +// .doUpdate(); } + updatedCount++; } catch (Exception e) { log.error("参数【{}】更新数据库失败:{}", parameterValue.getParameterName(), e.getMessage(), e); myResponse.getErrors().add("参数【"+parameterValue.getParameterName()+"】更新数据库失败:"+e.getMessage()); dbUpdateFailures++; } } - log.info("{}参数计算完成,成功处理{}个参数,失败{}个参数,更新{}个参数,数据库更新失败{}个", + log.info("{}参数计算完成,成功处理{}个参数,失败{}个参数,更新{}个参数,数据库更新失败{}个", today, successCount, failureCount, updatedCount, dbUpdateFailures); myResponse.getErrors().add("数据库更新完成,成功更新"+updatedCount+"个参数,更新失败"+dbUpdateFailures+"个"); } else { @@ -189,11 +189,11 @@ public class ParameterValueCalculationTimer { // 添加汇总信息 myResponse.getErrors().add("任务汇总:共处理"+totalParameters+"个参数,其中TC参数"+tcParameters+"个(成功"+updatedFromTC+"个,失败"+failedToUpdateFromTC+"个),计算参数"+calculatedParameters+"个(成功"+successCount+"个,失败"+failureCount+"个)"); - - log.info("{}参数计算任务结束,总参数数{},TC参数{}(成功{},失败{}),计算参数{}(成功{},失败{}),数据库更新{}(失败{})", - today, totalParameters, tcParameters, updatedFromTC, failedToUpdateFromTC, + + log.info("{}参数计算任务结束,总参数数{},TC参数{}(成功{},失败{}),计算参数{}(成功{},失败{}),数据库更新{}(失败{})", + today, totalParameters, tcParameters, updatedFromTC, failedToUpdateFromTC, calculatedParameters, successCount, failureCount, updatedCount, dbUpdateFailures); - + return myResponse; } diff --git a/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java b/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java index 1034141..044f957 100644 --- a/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java +++ b/src/main/java/com/xdap/self_development/service/AnalysisCommonParametersService.java @@ -19,4 +19,6 @@ public interface AnalysisCommonParametersService { AnalysisModelParamterViewAndParam showReportParamList(ReportRequest analysisRequest); List selectModelByLike(ReportRequest request); + + List getAvailableParameters(); } diff --git a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java index 805170e..e7df944 100644 --- a/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java +++ b/src/main/java/com/xdap/self_development/service/TemplateApprovalService.java @@ -19,6 +19,8 @@ import java.util.List; public interface TemplateApprovalService { String startApproval(StartApprovalRequest request); + void continueApproval(@NotBlank String flowId, @NotBlank String userId); + void directSendingApproval(@NotBlank String templateId, @NotBlank String userId); PageQueryResult getApprovalList(ApprovalListForm form); 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 f68df74..a1ed048 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 @@ -2,7 +2,7 @@ package com.xdap.self_development.service.impl; import com.alibaba.fastjson2.JSON; import com.xdap.api.moudle.user.pojo.XdapUsers; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.ApprovalUserNodeDTO; import com.xdap.self_development.controller.form.HandleApprovalRequest; import com.xdap.self_development.controller.form.HandleReturnNodeForm; diff --git a/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java index 99fbffa..96e34f3 100644 --- a/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/AnalysisCommonParametersServiceImpl.java @@ -4,7 +4,7 @@ package com.xdap.self_development.service.impl; import java.util.regex.Pattern; import com.alibaba.nacos.client.naming.utils.CollectionUtils; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.request.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; @@ -82,7 +82,7 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame @Override public AnalysisModelParamterViewAndParam showReport(List models) { - return showReport3(models); + return showReport2(models); } @@ -98,7 +98,10 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame @Override public List selectModelByLike(ReportRequest request) { - if (request.getEngineCapacityMax() < request.getEngineCapacityMin()) { + if (request.getEngineCapacityMax() != null && + request.getEngineCapacityMin() != null && + request.getEngineCapacityMax() < request.getEngineCapacityMin() + ) { throw new CommonException("排量范围设置错误"); } return new ArrayList<>(businessDatabase.getBusinessDatabase() @@ -107,15 +110,23 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame .like("platform", request.getPlatform()) .like("series", request.getSeries()) .like("project_name", request.getProjectName()) - .like("project_number", request.getProjectNumber()) + .like("product_number", request.getProductNumber()) .like("emission", request.getEmission()) .like("burn_type", request.getBurnType()) .conjuctionOr() .lteq("engine_capacity", request.getEngineCapacityMax()) - .and() .gteq("engine_capacity", request.getEngineCapacityMin()) .doQuery(DataEntryEngineModelPojo.class)); } + + @Override + public List getAvailableParameters() { + List modelParams = businessDatabase.getBusinessDatabase() + .viewQueryMode(true) + .view("selectAllParameters") + .doQuery(Parameter.class); + return modelParams.stream().filter(x -> x.getUnit() != null && !x.getUnit().equals("/")).map(Parameter::getParameterName).distinct().collect(Collectors.toList()); + } /* public AnalysisModelParamterViewAndParam showReport1(List modelIds) { long startTime = System.currentTimeMillis(); @@ -177,9 +188,12 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame return andParam; } */ - public AnalysisModelParamterViewAndParam showReport2(ReportRequest request) { + public AnalysisModelParamterViewAndParam showReport2(List models) { // 查询所有符合条件的机型 - List engineModelPojos = selectModelByLike(request); +// List engineModelPojos = selectModelByLike(request); + List engineModelPojos = businessDatabase.getBusinessDatabase() + .in("id", models) + .doQuery(DataEntryEngineModelPojo.class); if (engineModelPojos.isEmpty()) { throw new CommonException("没有找到符合条件的机型"); @@ -259,81 +273,6 @@ public class AnalysisCommonParametersServiceImpl implements AnalysisCommonParame return ALL_NUMBER_PATTERN.matcher(str.trim()).matches(); } - public AnalysisModelParamterViewAndParam showReport3(List models) { - // 查询所有符合条件的机型 - List engineModelPojos = businessDatabase.getBusinessDatabase() - .in("id", models) - .doQuery(DataEntryEngineModelPojo.class); - - if (CollectionUtils.isEmpty(engineModelPojos)) { - throw new CommonException("没有找到符合条件的机型"); - } - - List> modelBatches = splitModelBatch(engineModelPojos, modelBatchSize); - - // 最终结果容器 - List allAnalysisViews = new ArrayList<>(); - Set allParamNames = new HashSet<>(); - - for (List batch : modelBatches) { - // 获取当前批次机型id列表 - Set batchModelIds = batch.stream() - .map(DataEntryEngineModelPojo::getId) - .collect(Collectors.toSet()); - - // 获取数据平台机型的参数 - List batchEngineParamDetails = businessDatabase.getBusinessDatabase() - .in("engine_model_id", batchModelIds) - .doQuery(EngineParamDetailPojo.class); - - // 按 modelId 分组 - Map> engineParamDetailMap = batchEngineParamDetails.stream() - .collect(Collectors.groupingBy(EngineParamDetailPojo::getEngineModelId)); - - // 批量查询 TC 数据(当前批次) - List batchTcData = tcDataQueryService.tcDataSelectAllByproductNumberBatch(batch); - - // 按 modelId 分组 - Map> tcDataMap = batchTcData.stream() - .collect(Collectors.groupingBy(EngineParamDetailPojo::getEngineModelId)); - - // 处理当前批次机型 - for (DataEntryEngineModelPojo engineModelPojo : batch) { - AnalysisModelParamterView analysisModelParamterView = new AnalysisModelParamterView(); - analysisModelParamterView.setModelID(engineModelPojo.getId()); - analysisModelParamterView.setModelName(engineModelPojo.getModelName()); - BeanUtils.copyProperties(engineModelPojo, analysisModelParamterView); - - // 获取 EngineParamDetailPojo 列表 - List pojoList = engineParamDetailMap.getOrDefault(engineModelPojo.getId(), Collections.emptyList()); - - Integer versionNumber = engineModelPojo.getVersionNumber(); - List tcData = tcDataMap.getOrDefault(engineModelPojo.getId(), Collections.emptyList()); - - pojoList = Stream.concat(pojoList.stream(), tcData.stream()) - .filter(x -> Objects.equals(x.getMajorVersion(), versionNumber)) // 过滤版本号 - .filter(x -> Objects.nonNull(x.getParameterValue()) && isNumber(x.getParameterValue())) // 过滤非数字 - .collect(Collectors.toList()); - - analysisModelParamterView.setPojos(pojoList); - allAnalysisViews.add(analysisModelParamterView); - - // 收集所有参数名 - pojoList.stream() - .map(EngineParamDetailPojo::getParameterName) - .forEach(allParamNames::add); - } - - batchEngineParamDetails.clear(); - batchTcData.clear(); - } - - AnalysisModelParamterViewAndParam andParam = new AnalysisModelParamterViewAndParam(); - andParam.setParamList(new ArrayList<>(allParamNames)); - andParam.setPojos(allAnalysisViews); - return andParam; - } - // 分批处理机型 private List> splitModelBatch( List source, 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 94f09d7..8822dd5 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 @@ -6,7 +6,7 @@ import com.alibaba.fastjson2.JSON; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.user.pojo.XdapUsers; import com.xdap.runtime.service.RuntimeAppContextService; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.feign.ApaasMyTokenFeign; diff --git a/src/main/java/com/xdap/self_development/service/impl/CommonParameterServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/CommonParameterServiceImpl.java index eaeeb45..9ca3548 100644 --- a/src/main/java/com/xdap/self_development/service/impl/CommonParameterServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/CommonParameterServiceImpl.java @@ -1,7 +1,6 @@ package com.xdap.self_development.service.impl; -import com.xdap.self_development.common.UserPermissionGetter; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; @@ -103,19 +102,11 @@ public class CommonParameterServiceImpl implements CommonParameterService { @Override public List getAnalysisCommonParameter(String userId) { - List commonParameters = bd.getBusinessDatabase() - .eq("create_by", userId) - .eq("common_type", 2) - .doQuery(CommonParameter.class); - List ids = commonParameters.stream().map(CommonParameter::getId).collect(Collectors.toList()); - if (ids.isEmpty()) { - return Collections.emptyList(); - } - - // 数据处理 - List modelCommonParameters = bd.getBusinessDatabase() - .in("common_id", ids).doQuery(AnalysisCommonParameters.class); - return modelCommonParameters; + return bd.getBusinessDatabase() + .viewQueryMode(true) + .view("queryCommon") + .setVar("user_id", userId) + .doQuery(AnalysisCommonParameters.class); } @Override 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 47c2b47..4fb5377 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 @@ -11,8 +11,6 @@ import com.alibaba.fastjson.JSON; import com.definesys.mpaas.query.MpaasQueryFactory; import com.xdap.api.moudle.user.pojo.XdapUsers; import com.xdap.runtime.service.RuntimeAppContextService; -import com.xdap.self_development.common.UserPermissionGetter; -import com.xdap.self_development.config.BusinessDatabase; import com.xdap.self_development.controller.request.EngineParamDetailExcel; import com.xdap.self_development.controller.request.EngineParamDetailRequest; import com.xdap.self_development.enums.CurrentNodeEnum; @@ -33,7 +31,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; @@ -66,10 +63,6 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { private XdapDeptUsersService xdapDeptUsersService; @Autowired private ResponsiblePerService responsiblePerService; - @Autowired - UserPermissionGetter userPermissionGetter; - @Autowired - private RuntimeAppContextService runtimeAppContextService; private Integer versionNumber = 0; private String createdBy = "Excel导入"; @@ -423,11 +416,26 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { engineParamDetailDTO.setApprovalId(detailPojo.getApprovalId()); engineParamDetailDTOS.add(engineParamDetailDTO); } +// Map> valueBySubSysName = +// engineParamDetailDTOS.stream() +// .sorted(Comparator.comparing(EngineParamDetailDTO::getParameterName)) +// .collect(Collectors.groupingBy( +// EngineParamDetailDTO::getSubsystemName, +// LinkedHashMap::new, +// Collectors.toList() +// )); - Map> valueBySubSysName = - engineParamDetailDTOS.stream().collect(Collectors.groupingBy(EngineParamDetailDTO::getSubsystemName)); - - return valueBySubSysName; + return engineParamDetailDTOS.stream() + .collect(Collectors.groupingBy( + EngineParamDetailDTO::getSubsystemName, + TreeMap::new, + Collectors.collectingAndThen( + Collectors.toList(), + list -> list.stream() + .sorted(Comparator.comparing(EngineParamDetailDTO::getParameterName)) + .collect(Collectors.toList()) + ) + )); } /** diff --git a/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java index 793e53a..e26ed1c 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java @@ -1,21 +1,16 @@ package com.xdap.self_development.service.impl; -import com.xdap.self_development.config.BusinessDatabase; -import com.xdap.self_development.controller.request.ModelRolesRequest; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.pojo.ModelMenuDictionaryPojo; -import com.xdap.self_development.pojo.ModelRolesPojo; import com.xdap.self_development.pojo.view.MenuListView; import com.xdap.self_development.service.ModelMenuPermissionService; -import com.xdap.self_development.service.ModelRoleService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; -import java.util.stream.Collectors; @Slf4j diff --git a/src/main/java/com/xdap/self_development/service/impl/ModelRoleServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ModelRoleServiceImpl.java index 7636fbf..2fdc098 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ModelRoleServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ModelRoleServiceImpl.java @@ -3,7 +3,7 @@ package com.xdap.self_development.service.impl; import com.xdap.api.moudle.department.pojo.entity.XdapDepartments; import com.xdap.api.moudle.user.pojo.XdapUsers; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.request.ModelRolesRequest; import com.xdap.self_development.controller.request.RolePerJoinRequest; import com.xdap.self_development.controller.request.UserRoleBindingRequest; @@ -11,7 +11,6 @@ import com.xdap.self_development.enums.ParamPermissionEnum; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; import com.xdap.self_development.pojo.dto.PageResultDTO; -import com.xdap.self_development.pojo.view.MenuListView; import com.xdap.self_development.pojo.view.MenuParamView; import com.xdap.self_development.service.ModelMenuPermissionService; import com.xdap.self_development.service.ModelRoleService; 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 939f0ab..ca42706 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 @@ -2,7 +2,7 @@ package com.xdap.self_development.service.impl; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.self_development.common.MyPageResult; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.ParameterForm; import com.xdap.self_development.controller.form.ParameterPageForm; import com.xdap.self_development.controller.form.UpdateParameterForm; 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 c50de23..d1f9b2c 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 @@ -7,7 +7,7 @@ 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.MyResponse; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.listener.PersonReadListener; @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; +import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -60,6 +61,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { responsiblePerson.setUserId(form.getUserId()); responsiblePerson.setSubsystem(form.getSubsystem()); responsiblePerson.setPersonLevel(1); + responsiblePerson.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); bd.getBusinessDatabase().doInsert(responsiblePerson); } @@ -92,6 +94,7 @@ public class ResponsiblePersonServiceImpl implements ResponsiblePersonService { .update("user_id", form.getUserId()) .update("department", form.getDepartment()) .update("subsystem", form.getSubsystem()) + .update("creation_date", Timestamp.valueOf(LocalDateTime.now())) .doUpdate(ResponsiblePerson.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 9b64103..826be70 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 @@ -7,7 +7,7 @@ import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.definesys.mpaas.query.MpaasQueryFactory; import com.fasterxml.jackson.databind.ObjectMapper; import com.xdap.motor.utils.StringUtils; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.request.AnalysisRequest; import com.xdap.self_development.controller.request.AnalysisVerRequest; import com.xdap.self_development.controller.request.ModelComparisonExportRequest; @@ -760,175 +760,39 @@ public class TcDataQueryServiceImpl implements TcDataQueryService { return valueBySubSysName; } -// @Override -// public List tcDataSelectAllByproductNumberBatch(List engineModelPojos) { -// // 收集所有 productNumber -// Set productNumbers = engineModelPojos.stream() -// .map(DataEntryEngineModelPojo::getProductNumber) -// .filter(ObjectUtils::isNotEmpty) -// .collect(Collectors.toSet()); -// -// if (productNumbers.isEmpty()) { -// return Collections.emptyList(); -// } -// -// // 一次性查询所有参数模板 TC 参数数据 -// List parameters = engineParamDetailService.selectAllAndTcByNewVersion(); -// List collect = parameters.stream() -// .filter(x -> "TC分类表".equals(x.getParameterSource())) -// .collect(Collectors.toList()); -// -// if (collect.isEmpty()) { -// return Collections.emptyList(); -// } -// -// // 按 partsName 分组 -// Map> stringListMap = collect.stream() -// .collect(Collectors.groupingBy(Parameter::getPartsName)); -// -// Set partsNames = stringListMap.keySet(); -// -// // 一次性查询所有 EnginePartsCollection -// List allPartsCollections = bd.getTCDatabase() -// .in("ztj", productNumbers) -// .in("lbjmc", partsNames) -// .doQuery(EnginePartsCollection.class); -// -// // 按 productNumber 和 partsName 分组 -// Map>> partsCollectionsMap = allPartsCollections.stream() -// .collect(Collectors.groupingBy( -// EnginePartsCollection::getZtj, -// Collectors.groupingBy(EnginePartsCollection::getLbjmc) -// )); -// -// // 收集所有图号 -// Set allLbjths = allPartsCollections.stream() -// .map(EnginePartsCollection::getLbjth) -// .filter(ObjectUtils::isNotEmpty) -// .collect(Collectors.toSet()); -// -// if (allLbjths.isEmpty()) { -// return Collections.emptyList(); -// } -// -// // 一次性查询所有 ClassificationAttribute -// List allClassifications = bd.getTCDatabase() -// .in("pitemId", allLbjths) -// .doQuery(ClassificationAttribute.class); -// -// // 按 pitemId 分组 -// Map> classificationMap = allClassifications.stream() -// .collect(Collectors.groupingBy(ClassificationAttribute::getPitemId)); -// -// // 构建结果 -// List result = new ArrayList<>(); -// -// for (DataEntryEngineModelPojo engineModelPojo : engineModelPojos) { -// String productNumber = engineModelPojo.getProductNumber(); -// if (ObjectUtils.isEmpty(productNumber)) { -// continue; -// } -// -// Map> partsMap = partsCollectionsMap.get(productNumber); -// if (partsMap == null) { -// continue; -// } -// -// for (String partsName : partsNames) { -// List parameterList = stringListMap.get(partsName); -// if (parameterList == null) { -// continue; -// } -// -// Set parameterNameSet = parameterList.stream() -// .map(Parameter::getParameterName).collect(Collectors.toSet()); -// -// List partsCollections = partsMap.get(partsName); -// if (partsCollections == null) { -// continue; -// } -// -// List lbjths = partsCollections.stream() -// .map(EnginePartsCollection::getLbjth) -// .filter(ObjectUtils::isNotEmpty) -// .collect(Collectors.toList()); -// -// for (String lbjth : lbjths) { -// List classifications = classificationMap.get(lbjth); -// if (classifications == null) { -// continue; -// } -// -// for (ClassificationAttribute classificationAttribute : classifications) { -// if (parameterNameSet.contains(classificationAttribute.getIdattrtbutehame())) { -// EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo(); -// engineParamDetailPojo.setEngineModelId(engineModelPojo.getId()); -// engineParamDetailPojo.setPartsName(partsName); -// engineParamDetailPojo.setParameterName(classificationAttribute.getIdattrtbutehame()); -// engineParamDetailPojo.setParameterValue(classificationAttribute.getFieldvalue()); -// result.add(engineParamDetailPojo); -// } -// } -// } -// } -// } -// -// return result; -// } + @Override public List tcDataSelectAllByproductNumberBatch(List engineModelPojos) { - if (CollectionUtils.isEmpty(engineModelPojos)) { - return Collections.emptyList(); - } - // 收集所有 productNumber Set productNumbers = engineModelPojos.stream() .map(DataEntryEngineModelPojo::getProductNumber) - .filter(Objects::nonNull) - .filter(s -> !s.isEmpty()) + .filter(ObjectUtils::isNotEmpty) .collect(Collectors.toSet()); if (productNumbers.isEmpty()) { return Collections.emptyList(); } - List tcParameters = bd.getBusinessDatabase() - .viewQueryMode(true) - .view("selectTcParameter") - .doQuery(Parameter.class); - if (CollectionUtils.isEmpty(tcParameters)) { + // 一次性查询所有参数模板 TC 参数数据 + List parameters = engineParamDetailService.selectAllAndTcByNewVersion(); + List collect = parameters.stream() + .filter(x -> "TC分类表".equals(x.getParameterSource())) + .collect(Collectors.toList()); + + if (collect.isEmpty()) { return Collections.emptyList(); } - Set allValidParamNames = tcParameters.stream() - .map(Parameter::getParameterName) - .collect(Collectors.toSet()); + // 按 partsName 分组 + Map> stringListMap = collect.stream() + .collect(Collectors.groupingBy(Parameter::getPartsName)); - Map> partsName2ParamNameSet = tcParameters.stream() - .collect(Collectors.groupingBy( - Parameter::getPartsName, - Collectors.mapping(Parameter::getParameterName, Collectors.toSet()) - )); + Set partsNames = stringListMap.keySet(); - Set partsNames = partsName2ParamNameSet.keySet(); - - CompletableFuture> partsCollectionFuture = - CompletableFuture.supplyAsync(() -> bd.getTCDatabase() - .in("ztj", productNumbers) - .in("lbjmc", partsNames) - .doQuery(EnginePartsCollection.class)); - - List allPartsCollections; - try { - allPartsCollections = partsCollectionFuture.get(); - } catch (InterruptedException | ExecutionException e) { - // 补充异常处理,避免线程中断导致请求失败 - Thread.currentThread().interrupt(); - return Collections.emptyList(); - } - - if (CollectionUtils.isEmpty(allPartsCollections)) { - return Collections.emptyList(); - } + // 一次性查询所有 EnginePartsCollection + List allPartsCollections = bd.getTCDatabase() + .in("ztj", productNumbers) + .in("lbjmc", partsNames) + .doQuery(EnginePartsCollection.class); // 按 productNumber 和 partsName 分组 Map>> partsCollectionsMap = allPartsCollections.stream() @@ -940,26 +804,20 @@ public class TcDataQueryServiceImpl implements TcDataQueryService { // 收集所有图号 Set allLbjths = allPartsCollections.stream() .map(EnginePartsCollection::getLbjth) - .filter(Objects::nonNull) - .filter(s -> !s.isEmpty()) + .filter(ObjectUtils::isNotEmpty) .collect(Collectors.toSet()); if (allLbjths.isEmpty()) { return Collections.emptyList(); } - List> lbjthBatches = splitBatch(allLbjths, lbjthBatchSize); - List allClassifications = new ArrayList<>(); - for (List batch : lbjthBatches) { - allClassifications.addAll( - bd.getTCDatabase() - .in("pitemId", batch) - .doQuery(ClassificationAttribute.class) - ); - } + // 一次性查询所有 ClassificationAttribute + List allClassifications = bd.getTCDatabase() + .in("pitemId", allLbjths) + .doQuery(ClassificationAttribute.class); + // 按 pitemId 分组 Map> classificationMap = allClassifications.stream() - .filter(attr -> allValidParamNames.contains(attr.getIdattrtbutehame())) .collect(Collectors.groupingBy(ClassificationAttribute::getPitemId)); // 构建结果 @@ -967,40 +825,40 @@ public class TcDataQueryServiceImpl implements TcDataQueryService { for (DataEntryEngineModelPojo engineModelPojo : engineModelPojos) { String productNumber = engineModelPojo.getProductNumber(); - if (Objects.isNull(productNumber) || productNumber.isEmpty()) { + if (ObjectUtils.isEmpty(productNumber)) { continue; } Map> partsMap = partsCollectionsMap.get(productNumber); - if (CollectionUtils.isEmpty((Collection) partsMap)) { + if (partsMap == null) { continue; } - for (String partsName : partsMap.keySet()) { - Set parameterNameSet = partsName2ParamNameSet.get(partsName); - if (CollectionUtils.isEmpty(parameterNameSet)) { + for (String partsName : partsNames) { + List parameterList = stringListMap.get(partsName); + if (parameterList == null) { continue; } + Set parameterNameSet = parameterList.stream() + .map(Parameter::getParameterName).collect(Collectors.toSet()); + List partsCollections = partsMap.get(partsName); - if (CollectionUtils.isEmpty(partsCollections)) { + if (partsCollections == null) { continue; } - // 合并Stream操作,减少中间对象创建 List lbjths = partsCollections.stream() .map(EnginePartsCollection::getLbjth) - .filter(Objects::nonNull) - .filter(s -> !s.isEmpty()) + .filter(ObjectUtils::isNotEmpty) .collect(Collectors.toList()); for (String lbjth : lbjths) { List classifications = classificationMap.get(lbjth); - if (CollectionUtils.isEmpty(classifications)) { + if (classifications == null) { continue; } - // 内层循环:利用HashSet的O(1) contains for (ClassificationAttribute classificationAttribute : classifications) { if (parameterNameSet.contains(classificationAttribute.getIdattrtbutehame())) { EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo(); 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 a7ac491..4f50e13 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 @@ -3,7 +3,7 @@ package com.xdap.self_development.service.impl; import com.alibaba.fastjson2.JSON; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.user.pojo.XdapUsers; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; @@ -193,6 +193,75 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { return flow.getId(); } + @Override + @Transactional(rollbackFor = Exception.class) + public void continueApproval(String flowId, String userId) { + ApprovalFlow flow = bd.getBusinessDatabase() + .eq("id", flowId) + .doQueryFirst(ApprovalFlow.class); + if (flow == null) { + throw new CommonException("流程不存在"); + } + + // 清除原流程节点的所有待办 + bd.getBusinessDatabase() + .eq("document_no", flow.getId()) + .update("is_delete", 1) + .update("last_update_date", Timestamp.valueOf(LocalDateTime.now())) + .doUpdate(TodoTaskPojo.class); + + // 修改非进行中的流程为进行中 + if (!Objects.equals(flow.getFlowStatus(), "APPROVING")) { + ApprovalConfigPojo firstNode = bd.getBusinessDatabase() + .eq("approval_id", flow.getId()) + .orderBy("node_order", "asc") + .doQueryFirst(ApprovalConfigPojo.class); + flow.setPreNode(-1); + flow.setFlowStatus("APPROVING"); + flow.setCurrentNode(firstNode.getNodeOrder()); + + bd.getBusinessDatabase() + .eq("id", flow.getId()) + .update("flow_status", "APPROVING") + .update("current_node", firstNode.getNodeOrder()) + .update("pre_node", -1) + .doUpdate(ApprovalFlow.class); + } + + // 获取当前节点和模板 + Template template = bd.getBusinessDatabase() + .eq("id", flow.getTemplateId()) + .doQueryFirst(Template.class); + ApprovalConfigPojo currentNode = bd.getBusinessDatabase() + .eq("approval_id", flow.getId()) + .eq("node_order", flow.getCurrentNode()) + .doQueryFirst(ApprovalConfigPojo.class); + + // 添加新待办 + List list = new ArrayList<>(); + for (String person : JSON.parseArray(currentNode.getAssignees()).toJavaList(String.class)) { + TodoTaskPojo todoTask = new TodoTaskPojo(); + todoTask.setCreatedById(userId); + todoTask.setCreatedBy(xdapDeptUsersService.selectUserByID(userId).getUsername()); + todoTask.setCurrentNode(currentNode.getNodeName()); + todoTask.setDataType("模板审核"); + todoTask.setDocumentNo(flow.getId()); + todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setIsDelete(0); + todoTask.setModelId(template.getId()); + todoTask.setModelName(template.getTemplateName()); + todoTask.setProcessTitle(flow.getProcessTitle()); + todoTask.setStatusCode(flow.getFlowStatus()); + todoTask.setVersionNumber(template.getVersion()); + todoTask.setOwnerId(person); + todoTask.setCurrentProcessor(JSON.toJSONString(currentNode.getAssignees())); + list.add(todoTask); + } + bd.getBusinessDatabase().doBatchInsert(list); + + myself.updateTasks(flow, currentNode.getNodeName(), 0, currentNode); + } + @Override @Transactional(rollbackFor = Exception.class) public void directSendingApproval(String templateId, String userId) { @@ -530,7 +599,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { .update("published_time", Timestamp.valueOf(LocalDateTime.now())) .doUpdate(Template.class); // 待办环节修改 - myself.updateTasks(flow, "已完成", 0, nextNode); + myself.updateTasks(flow, "已完成", 0, null); // 更新机型版本 // dataEntryEngineModelService.updateModelForNewVersion(); } else { 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 4acdccf..78f6156 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,7 +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.self_development.common.MyResponse; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.listener.SheetDataListener; 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 ca9def0..60b7c61 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 @@ -4,13 +4,12 @@ import com.alibaba.fastjson2.JSON; import com.definesys.mpaas.query.MpaasQueryFactory; import com.definesys.mpaas.query.db.PageQueryResult; import com.xdap.api.moudle.user.pojo.XdapUsers; -import com.xdap.self_development.config.BusinessDatabase; +import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.request.TodoReturnRequest; import com.xdap.self_development.controller.request.TodoTaskRequest; import com.xdap.self_development.controller.request.YcGetTodoTaskRequest; import com.xdap.self_development.enums.CurrentNodeEnum; import com.xdap.self_development.enums.DistributeStatusEnum; -import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.pojo.*; import com.xdap.self_development.pojo.dto.*; import com.xdap.self_development.service.DataEntryEngineModelService; diff --git a/src/main/resources/sql.sql b/src/main/resources/sql.sql index 2235215..be80aba 100644 --- a/src/main/resources/sql.sql +++ b/src/main/resources/sql.sql @@ -382,9 +382,120 @@ create table ads_prd_f_tc_flsxb( FIELDVALUE VARCHAR(100) comment '零部件属性值' ) comment 'tc分类属性表'; --- 插入数据到ads_prd_f_yfsjglpt_fdjlbjcjb表 +-- test.data_entry_engine_model definition +drop table if exists data_entry_engine_model; +CREATE TABLE `data_entry_engine_model` ( + `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'ID', + `yc_or_oth` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '本品或竞品', + `model_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '产品型号(全称)', + `model_name_simple` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '产品型号简称', + `product_number` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '产品编号', + `plate` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '板块', + `platform` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '平台', + `series` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '系列', + `market_segment` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '细分市场', + `project_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '项目名称', + `project_number` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '项目编号', + `brand` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '品牌', + `production_date` date DEFAULT NULL COMMENT '生产日期', + `parameter_num` int(11) DEFAULT NULL COMMENT '标准参数数量', + `maintained_parameter_num` int(11) DEFAULT NULL COMMENT '已维护参数数量', + `responsible_person_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '责任人表ID', + `distribute_status` tinyint(4) DEFAULT NULL COMMENT '分发状态', + `version_number` int(11) DEFAULT NULL COMMENT '版本', + `is_delete` tinyint(4) DEFAULT NULL COMMENT '是否删除', + `created_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人', + `creation_date` datetime DEFAULT NULL COMMENT '创建时间', + `last_updated_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '最后更新人', + `last_update_date` datetime DEFAULT NULL COMMENT '最后更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='发动机型号数据表'; +-- test.engine_param_detail definition +drop table if exists engine_param_detail; +CREATE TABLE `engine_param_detail` ( + `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'ID', + `parameter_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '参数模板表id', + `engine_model_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '发动机型号表id', + `subsystem_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '子系统', + `parameter_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '类型', + `parameter_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '参数名称', + `parameter_value` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '参数值', + `responsible_person_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '责任人', + `department` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '填写部门', + `filled_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '填写人', + `major_version` int(11) DEFAULT NULL COMMENT '大版本(审核通过后变更的)', + `minor_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '小版本(控制是否可以审核)', + `version_status` int(11) DEFAULT NULL COMMENT '版本状态(0已通过,1草稿,审核中,3已撤回,4拒绝)', + `approval_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '关联的审批流程', + `before_param_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '上个版本参数ID', + `is_delete` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '是否删除', + `operation` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '参数的操作(新增,修改,删除)', + `created_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人', + `created_date` datetime DEFAULT NULL COMMENT '创建时间', + `last_updated_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '最后更新人', + `last_updated_date` datetime DEFAULT NULL COMMENT '最后更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='参数详情'; + +drop table if exists data_change_comment; +CREATE TABLE data_change_comment ( + id VARCHAR(255) PRIMARY KEY COMMENT 'ID', + param_detail_id VARCHAR(255) COMMENT '', + engine_model_id VARCHAR(255) COMMENT '', + subsystem_name VARCHAR(255) COMMENT '', + parameter_type VARCHAR(255) COMMENT '', + parts_name VARCHAR(255) COMMENT '零部件', + parameter_name VARCHAR(255) COMMENT '', + parameter_value VARCHAR(255) COMMENT '审批中的值', + change_comment VARCHAR(255) COMMENT '变动说明', + unit VARCHAR(255) COMMENT '变动说明', + created_by VARCHAR(255) COMMENT '创建人', + creation_date DATETIME COMMENT '创建时间', + last_updated_by VARCHAR(255) COMMENT '最后更新人', + last_update_date DATETIME COMMENT '最后更新时间' +) COMMENT '数据变更评论表'; + +drop table if exists engine_review_list; +CREATE TABLE engine_review_list ( + id VARCHAR(255) PRIMARY KEY COMMENT 'ID', + process_topic VARCHAR(255) COMMENT '流程主题', + yc_or_oth VARCHAR(255) COMMENT '本品或竞品', + model_id VARCHAR(255) COMMENT '机型ID', + model_name VARCHAR(255) COMMENT '产品型号', + status_code INT COMMENT '状态代号', + subsystem_name VARCHAR(255) COMMENT '子系统', + applicant VARCHAR(255) COMMENT '申请人ID', + status_description VARCHAR(255) COMMENT '当前状态', + approver_persons VARCHAR(255) COMMENT '当前审批人', + node_name VARCHAR(255) COMMENT '当前节点', + review_comment TEXT COMMENT '提交说明', + created_by VARCHAR(255) COMMENT '创建人', + creation_date DATETIME COMMENT '创建时间', + last_updated_by VARCHAR(255) COMMENT '最后更新人', + last_update_date DATETIME COMMENT '最后更新时间', + return_num INT COMMENT '退回标记', + pre_node INT COMMENT '前一个节点' +) COMMENT '发动机评审列表表'; + +drop table if exists param_approval_record; +CREATE TABLE param_approval_record ( + id VARCHAR(255) PRIMARY KEY COMMENT 'ID', + approval_id VARCHAR(255) COMMENT '流程ID', + node_name VARCHAR(255) COMMENT '环节名称', + assignee VARCHAR(255) COMMENT '处理人', + operator VARCHAR(255) COMMENT '操作', + operate_time DATETIME COMMENT '操作时间', + approval_comment TEXT COMMENT '审批说明', + node_order INT COMMENT '环节顺序', + created_by VARCHAR(255) COMMENT '创建人', + creation_date DATETIME COMMENT '创建时间', + last_updated_by VARCHAR(255) COMMENT '最后更新人', + last_update_date DATETIME COMMENT '最后更新时间', + approval_level INT COMMENT '' +) COMMENT '参数审批记录表'; + DELETE FROM yfsjglpt_model_template; DELETE