From 58a3f0b6e2cd9d26e35387404d18d3457dc5e3f8 Mon Sep 17 00:00:00 2001 From: zjh <15615273395@163.com> Date: Mon, 26 Jan 2026 17:39:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9v1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../self_development/config/CorsConfig.java | 16 - .../controller/ActivitiProcessController.java | 10 +- .../controller/CommonParameterController.java | 3 +- .../EngineParamDetailController.java | 15 +- .../controller/TodoTaskController.java | 16 +- .../AnalysisCommonParameterInsertForm.java | 18 +- .../AnalysisCommonParameterUpdateForm.java | 17 +- .../DataEntryEngineModelPageRequest.java | 2 + .../controller/request/DistributeRequest.java | 20 + .../request/EngineParamDetailRequest.java | 3 + .../controller/request/RejectTodoRequest.java | 10 + .../domain/dto/ActivitiDataAndRecordDTO.java | 3 +- .../domain/dto/EngineParamDetailDTO.java | 10 +- .../pojo/AnalysisCommonParametersPojo.java | 2 +- .../domain/pojo/DataEntryEngineModelPojo.java | 10 + .../domain/pojo/EngineParamDetailPojo.java | 10 + .../domain/pojo/ParameterPojo.java | 2 +- .../domain/pojo/TemplatePojo.java | 2 +- .../listener/EngineModelListener.java | 21 +- .../service/ActivitiProcessService.java | 3 +- .../service/CommonParameterService.java | 3 +- .../service/TodoTaskService.java | 4 +- .../impl/ActivitiProcessServiceImpl.java | 255 +++++++++---- .../impl/BenchmarkingReportServiceImpl.java | 16 +- .../impl/CommonParameterServiceImpl.java | 50 ++- .../impl/EngineParamDetailServiceImpl.java | 342 +++++++----------- .../impl/EngineReviewListServiceImpl.java | 2 +- .../impl/TemplateApprovalServiceImpl.java | 14 +- .../service/impl/TemplateServiceImpl.java | 18 +- .../service/impl/TodoTaskServiceImpl.java | 211 ++++++----- 30 files changed, 623 insertions(+), 485 deletions(-) delete mode 100644 src/main/java/com/xdap/self_development/config/CorsConfig.java create mode 100644 src/main/java/com/xdap/self_development/controller/request/DistributeRequest.java create mode 100644 src/main/java/com/xdap/self_development/controller/request/RejectTodoRequest.java diff --git a/src/main/java/com/xdap/self_development/config/CorsConfig.java b/src/main/java/com/xdap/self_development/config/CorsConfig.java deleted file mode 100644 index f075dfe..0000000 --- a/src/main/java/com/xdap/self_development/config/CorsConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.xdap.self_development.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class CorsConfig implements WebMvcConfigurer { - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") - .allowedOrigins("*") - .allowedMethods("GET", "POST", "PUT", "DELETE") - .allowedHeaders("*"); - } -} diff --git a/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java b/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java index 84d451a..bda3edd 100644 --- a/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java +++ b/src/main/java/com/xdap/self_development/controller/ActivitiProcessController.java @@ -7,9 +7,9 @@ import com.xdap.self_development.controller.form.HandleReturnNodeForm; import com.xdap.self_development.controller.form.UpdateNodeForm; import com.xdap.self_development.controller.request.ApprovalNodeRequest; import com.xdap.self_development.controller.request.EngineReviewListRequest; -import com.xdap.self_development.exception.CommonException; -import com.xdap.self_development.domain.pojo.EngineReviewListPojo; import com.xdap.self_development.domain.dto.*; +import com.xdap.self_development.domain.pojo.EngineReviewListPojo; +import com.xdap.self_development.exception.CommonException; import com.xdap.self_development.service.ActivitiProcessService; import com.xdap.self_development.service.EngineReviewListService; import org.springframework.validation.BindingResult; @@ -86,7 +86,7 @@ public class ActivitiProcessController { * @param title 新标题 * @return 操作结果响应 */ - @PostMapping(value = "/updateFlowTitle") + @GetMapping(value = "/updateFlowTitle") public Response updateFlowTitle( @NotBlank @RequestParam String flowId, @NotBlank @RequestParam String title @@ -115,7 +115,9 @@ public class ActivitiProcessController { * @return 操作结果响应 */ @PostMapping(value = "/startActiviti") - public Response startActiviti(@RequestBody ApprovalNodeRequest approvalNodeRequest) { + public Response startActiviti( + @NotBlank(message = "审批节点请求对象不能为空") @RequestBody ApprovalNodeRequest approvalNodeRequest + ) { activitiProcessService.startActiviti(approvalNodeRequest); return Response.ok(); } 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 091c9bc..4b0e298 100644 --- a/src/main/java/com/xdap/self_development/controller/CommonParameterController.java +++ b/src/main/java/com/xdap/self_development/controller/CommonParameterController.java @@ -3,7 +3,6 @@ package com.xdap.self_development.controller; import com.definesys.mpaas.common.http.Response; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.exception.CommonException; -import com.xdap.self_development.domain.pojo.AnalysisCommonParametersPojo; import com.xdap.self_development.service.CommonParameterService; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -101,7 +100,7 @@ public class CommonParameterController { public Response getAnalysisCommonParameter( @NotBlank @RequestParam String userId ) { - List list = commonParameterService.getAnalysisCommonParameter(userId); + List list = commonParameterService.getAnalysisCommonParameter(userId); return Response.ok().data(list); } diff --git a/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java b/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java index 4e85038..43fd1dd 100644 --- a/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java +++ b/src/main/java/com/xdap/self_development/controller/EngineParamDetailController.java @@ -4,14 +4,16 @@ 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.controller.request.EngineParamDetailRequest; -import com.xdap.self_development.domain.pojo.EngineParamDetailPojo; import com.xdap.self_development.domain.dto.EngineParamDetailDTO; +import com.xdap.self_development.domain.pojo.EngineParamDetailPojo; import com.xdap.self_development.service.EngineParamDetailService; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -137,7 +139,10 @@ public class EngineParamDetailController { * @return 操作结果响应 */ @PostMapping(value = "/updateParamValue") - public Response updateParamValue(@RequestBody List engineParamDetailPojos,@RequestParam("userID") String currentUserId) { + public Response updateParamValue( + @NotEmpty(message = "参数详情列表不能为空") @RequestBody List engineParamDetailPojos, + @NotBlank(message = "用户ID不能为空") @RequestParam("userID") String currentUserId + ) { engineParamDetailService.updateParamValue(engineParamDetailPojos, currentUserId); return Response.ok().data("修改成功,保存草稿,准备进入审批"); } @@ -150,8 +155,10 @@ public class EngineParamDetailController { * @return 操作结果响应 */ @PostMapping(value = "/updateToInsertFiledBy") - public Response updateToInsertFiledBy(@RequestBody List engineParamDetailPojos, - @RequestParam(value = "userID") String userID) { + public Response updateToInsertFiledBy( + @NotEmpty(message = "参数详情列表不能为空") @RequestBody List engineParamDetailPojos, + @NotBlank(message = "用户ID不能为空") @RequestParam(value = "userID") String userID + ) { engineParamDetailService.updateToInsertFiledBy(engineParamDetailPojos, userID); return Response.ok().data("修改成功"); } diff --git a/src/main/java/com/xdap/self_development/controller/TodoTaskController.java b/src/main/java/com/xdap/self_development/controller/TodoTaskController.java index dc675f3..fda80cf 100644 --- a/src/main/java/com/xdap/self_development/controller/TodoTaskController.java +++ b/src/main/java/com/xdap/self_development/controller/TodoTaskController.java @@ -2,7 +2,7 @@ package com.xdap.self_development.controller; import com.definesys.mpaas.common.http.Response; -import com.xdap.self_development.controller.request.TodoReturnRequest; +import com.xdap.self_development.controller.request.RejectTodoRequest; import com.xdap.self_development.controller.request.TodoTaskRequest; import com.xdap.self_development.domain.dto.EngineParamDetailDTO; import com.xdap.self_development.domain.dto.PageResultDTO; @@ -68,8 +68,10 @@ public class TodoTaskController { * @return 操作结果响应 */ @PostMapping("/createResPerson") - public Response createResPerson(@RequestBody List paramDetailPojos - , @RequestParam String userID){ + public Response createResPerson( + @RequestBody List paramDetailPojos, + @RequestParam String userID + ) { todoTaskService.createResPerson(paramDetailPojos,userID); return Response.ok(); @@ -77,12 +79,12 @@ public class TodoTaskController { /** * 退回单据 * - * @param todoReturnRequest 待办退回请求 + * @param request 待办退回请求 * @return 操作结果响应 */ - @PostMapping("/todoReturn") - public Response todoReturn( @RequestBody TodoReturnRequest todoReturnRequest){ - todoTaskService.todoReturn(todoReturnRequest); + @PostMapping("/rejectTodo") + public Response todoReturn(@RequestBody RejectTodoRequest request) { + todoTaskService.rejectTodo(request); return Response.ok(); } diff --git a/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterInsertForm.java b/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterInsertForm.java index a256e82..d3519f6 100644 --- a/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterInsertForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterInsertForm.java @@ -3,19 +3,21 @@ package com.xdap.self_development.controller.form; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data public class AnalysisCommonParameterInsertForm { - private String modelName; - private String plate; - private String platform; - private String series; - private String projectName; - private String projectNumber; - private Long emission; + private List modelName; + private List plate; + private List platform; + private List series; + private List projectName; + private List projectNumber; + private List emission; private Long displacementMin; private Long displacementMax; - private String combustionType; + private List combustionType; + private String commonId; @NotBlank(message = "创建者不能为空") private String userId; diff --git a/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterUpdateForm.java b/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterUpdateForm.java index d5846fb..6e85c41 100644 --- a/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterUpdateForm.java +++ b/src/main/java/com/xdap/self_development/controller/form/AnalysisCommonParameterUpdateForm.java @@ -3,19 +3,20 @@ package com.xdap.self_development.controller.form; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data public class AnalysisCommonParameterUpdateForm { - private String modelName; - private String plate; - private String platform; - private String series; - private String projectName; - private String projectNumber; - private Long emission; + private List modelName; + private List plate; + private List platform; + private List series; + private List projectName; + private List projectNumber; + private List emission; private Long displacementMin; private Long displacementMax; - private String combustionType; + private List combustionType; @NotBlank(message = "创建者不能为空") private String userId; diff --git a/src/main/java/com/xdap/self_development/controller/request/DataEntryEngineModelPageRequest.java b/src/main/java/com/xdap/self_development/controller/request/DataEntryEngineModelPageRequest.java index ddd3d53..3d08522 100644 --- a/src/main/java/com/xdap/self_development/controller/request/DataEntryEngineModelPageRequest.java +++ b/src/main/java/com/xdap/self_development/controller/request/DataEntryEngineModelPageRequest.java @@ -26,6 +26,8 @@ public class DataEntryEngineModelPageRequest { private String distributeStatus; private String ycOrOth; private String modelNameSimple; + private String manufacturerName; + private String manufacturerAbbreviation; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date productionDate; /** diff --git a/src/main/java/com/xdap/self_development/controller/request/DistributeRequest.java b/src/main/java/com/xdap/self_development/controller/request/DistributeRequest.java new file mode 100644 index 0000000..ddaa35c --- /dev/null +++ b/src/main/java/com/xdap/self_development/controller/request/DistributeRequest.java @@ -0,0 +1,20 @@ +package com.xdap.self_development.controller.request; + +import com.xdap.self_development.domain.dto.EngineParamDetailDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +@Data +public class DistributeRequest { + @NotBlank(message = "模型ID不能为空") + private String modelId; + + @NotEmpty(message = "参数详情列表不能为空") + private List paramDetailPojosAll; + + @NotBlank(message = "用户ID不能为空") + private String userID; +} diff --git a/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java b/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java index ec774e0..9882cd6 100644 --- a/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java +++ b/src/main/java/com/xdap/self_development/controller/request/EngineParamDetailRequest.java @@ -2,6 +2,7 @@ package com.xdap.self_development.controller.request; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.util.List; /** @@ -24,6 +25,7 @@ public class EngineParamDetailRequest { /** * 发动机型号ID */ + @NotBlank(message = "发动机型号ID不能为空") private String engineModelID; /** * 发动机型号+产品编号 @@ -36,6 +38,7 @@ public class EngineParamDetailRequest { /** * 子系统+零部件名称路径 */ + @NotBlank(message = "子系统+零部件名称路径不能为空") private List subsystemParts; /** * 子系统多选 diff --git a/src/main/java/com/xdap/self_development/controller/request/RejectTodoRequest.java b/src/main/java/com/xdap/self_development/controller/request/RejectTodoRequest.java new file mode 100644 index 0000000..04e38d3 --- /dev/null +++ b/src/main/java/com/xdap/self_development/controller/request/RejectTodoRequest.java @@ -0,0 +1,10 @@ +package com.xdap.self_development.controller.request; + +import lombok.Data; + +@Data +public class RejectTodoRequest { + private String todoId; + private String fillerId; + private String responsiblePersonId; +} diff --git a/src/main/java/com/xdap/self_development/domain/dto/ActivitiDataAndRecordDTO.java b/src/main/java/com/xdap/self_development/domain/dto/ActivitiDataAndRecordDTO.java index 650caf5..8b1e7c5 100644 --- a/src/main/java/com/xdap/self_development/domain/dto/ActivitiDataAndRecordDTO.java +++ b/src/main/java/com/xdap/self_development/domain/dto/ActivitiDataAndRecordDTO.java @@ -11,7 +11,6 @@ import com.xdap.self_development.domain.pojo.DataEntryEngineModelPojo; import com.xdap.self_development.domain.view.FlowNode; import lombok.Data; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -49,7 +48,7 @@ public class ActivitiDataAndRecordDTO { /** * 流程数据传输对象列表 */ - private ArrayList activitiDataDTOS; + private List activitiDataDTOS; /** * 流程节点列表 */ diff --git a/src/main/java/com/xdap/self_development/domain/dto/EngineParamDetailDTO.java b/src/main/java/com/xdap/self_development/domain/dto/EngineParamDetailDTO.java index 58321d9..af2477b 100644 --- a/src/main/java/com/xdap/self_development/domain/dto/EngineParamDetailDTO.java +++ b/src/main/java/com/xdap/self_development/domain/dto/EngineParamDetailDTO.java @@ -13,6 +13,7 @@ public class EngineParamDetailDTO { * 责任人ID */ private String resPersonId; + private XdapUsers resPerson; /** * 参数模板表id */ @@ -77,6 +78,13 @@ public class EngineParamDetailDTO { */ private String approvalId; - + /** + * 是否分发填写人(0:否,1:是) + */ + private Integer isDistributedFilled; + /** + * 是否分发责任人(0:否,1:是) + */ + private Integer isDistributedRes; } diff --git a/src/main/java/com/xdap/self_development/domain/pojo/AnalysisCommonParametersPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/AnalysisCommonParametersPojo.java index 4af62e5..91e8fd6 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/AnalysisCommonParametersPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/AnalysisCommonParametersPojo.java @@ -53,7 +53,7 @@ public class AnalysisCommonParametersPojo extends MpaasBasePojo { /** * 排放 */ - private Long emission; + private String emission; /** * 最小排量 */ diff --git a/src/main/java/com/xdap/self_development/domain/pojo/DataEntryEngineModelPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/DataEntryEngineModelPojo.java index cdaf57b..5f089d5 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/DataEntryEngineModelPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/DataEntryEngineModelPojo.java @@ -28,6 +28,16 @@ public class DataEntryEngineModelPojo extends MpaasBasePojo { @RowID(sequence = "data_entry_engine_model_s", type = RowIDType.UUID) private String id; + /** + * 厂家名称 + */ + private String manufacturerName; + + /** + * 厂家简称 + */ + private String manufacturerAbbreviation; + /** * 产品型号(全称) */ diff --git a/src/main/java/com/xdap/self_development/domain/pojo/EngineParamDetailPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/EngineParamDetailPojo.java index 915d26c..2828853 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/EngineParamDetailPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/EngineParamDetailPojo.java @@ -65,6 +65,11 @@ public class EngineParamDetailPojo { */ private String responsiblePersonId; + /** + * 是否分发责任人(0:否,1:是,2:不需要分发) + */ + private Integer isDistributedRes; + /** * 填写部门 */ @@ -75,6 +80,11 @@ public class EngineParamDetailPojo { */ private String filledBy; + /** + * 是否分发填写人(0:否,1:是,2:不需要分发) + */ + private Integer isDistributedFilled; + /** * 创建人 */ diff --git a/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java b/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java index 9cf2cf0..7c5e093 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/ParameterPojo.java @@ -145,7 +145,7 @@ public class ParameterPojo extends MpaasBasePojo { "必填", "非必填", "必填,并且为下列之一:数据平台手工录入、TC分类表、公式计算", - "非必填,如果参数来源为'公式计算'则必填;公式示例:Π*(直径(内径)/2)*(直径(内径)/2)", + "非必填,如果参数来源为'公式计算'则必填。填写规范:参数名可以是中文、数字、大小写字母、中文括号 `()`必须以中文开头,不能包含运算符和英文括号;参数名也可以是数字;支持圆周率,必须是小写的`π`,不支持`Π`;负号 `-` 可作为操作数前缀。公式示例:π*(直径(内径)/2)*(直径(内径)/2)", "非必填,如果参数来源为'数据平台手工录入'则必填;部门必须为研发总院的子部门,如‘研发部’", "非必填"}; } diff --git a/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java b/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java index 8f28060..27a6352 100644 --- a/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java +++ b/src/main/java/com/xdap/self_development/domain/pojo/TemplatePojo.java @@ -17,7 +17,7 @@ import java.sql.Timestamp; @SQLQuery(value = { @SQL(view = "getLatestTemplateOrder", - sql = "SELECT ranked.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 ( SELECT DISTINCT id, template_name, version, status, created_time , published_time, order_num, create_by FROM yfsjglpt_model_template WHERE status IN ('COMPLETE', 'DRAFT', 'APPROVING') ) t ) ranked LEFT JOIN xdap_users xu ON xu.id = ranked.create_by WHERE rn = 1 ORDER BY CASE 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"), + 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"), // 查找每个模板的最新版本并且优先级按照已发布、审核中、草稿状态转变(只有这三种状态) // 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", diff --git a/src/main/java/com/xdap/self_development/listener/EngineModelListener.java b/src/main/java/com/xdap/self_development/listener/EngineModelListener.java index c30a818..cbd8d71 100644 --- a/src/main/java/com/xdap/self_development/listener/EngineModelListener.java +++ b/src/main/java/com/xdap/self_development/listener/EngineModelListener.java @@ -12,7 +12,6 @@ import com.xdap.self_development.domain.enums.ParamValueVersionEnum; import com.xdap.self_development.domain.pojo.DataEntryEngineModelPojo; import com.xdap.self_development.domain.pojo.EngineParamDetailPojo; import com.xdap.self_development.domain.pojo.ParameterPojo; -import com.xdap.self_development.domain.pojo.TodoTaskPojo; import com.xdap.self_development.exception.ExcelImportException; import com.xdap.self_development.service.EngineParamDetailService; import com.xdap.self_development.service.ResponsiblePerService; @@ -25,6 +24,7 @@ import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.UUID; @@ -126,7 +126,7 @@ public class EngineModelListener implements ReadListener todoTaskPojos) { - sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(todoTaskPojos); - } - - public void batchInsertParamDetail(List engineParamDetailPojos) { sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(engineParamDetailPojos); } - - public void batchInsert(List modelPojos) { - sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(modelPojos); - - } - } diff --git a/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java b/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java index 0df0fb9..c2e38c8 100644 --- a/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java +++ b/src/main/java/com/xdap/self_development/service/ActivitiProcessService.java @@ -14,7 +14,6 @@ import com.xdap.self_development.domain.pojo.ParamApprovalRecordPojo; import javax.validation.Valid; import javax.validation.constraints.NotBlank; -import java.util.ArrayList; import java.util.List; public interface ActivitiProcessService { @@ -43,7 +42,7 @@ public interface ActivitiProcessService { HandleApprovalDTO request, ApprovalConfigPojo currentNode, ParamApprovalRecordPojo lastedRecord, - ArrayList list + List list ); void cancelProcess( EngineReviewListPojo flow, diff --git a/src/main/java/com/xdap/self_development/service/CommonParameterService.java b/src/main/java/com/xdap/self_development/service/CommonParameterService.java index b447cd8..74002ca 100644 --- a/src/main/java/com/xdap/self_development/service/CommonParameterService.java +++ b/src/main/java/com/xdap/self_development/service/CommonParameterService.java @@ -1,7 +1,6 @@ package com.xdap.self_development.service; import com.xdap.self_development.controller.form.*; -import com.xdap.self_development.domain.pojo.AnalysisCommonParametersPojo; import javax.validation.Valid; import javax.validation.constraints.NotBlank; @@ -16,7 +15,7 @@ public interface CommonParameterService { void updateModelCommonParameter(@Valid ModelCommonParameterUpdateForm form); - List getAnalysisCommonParameter(@NotBlank String userId); + List getAnalysisCommonParameter(@NotBlank String userId); void insertAnalysisCommonParameter(@Valid AnalysisCommonParameterInsertForm form); diff --git a/src/main/java/com/xdap/self_development/service/TodoTaskService.java b/src/main/java/com/xdap/self_development/service/TodoTaskService.java index c09b9a4..41c71ec 100644 --- a/src/main/java/com/xdap/self_development/service/TodoTaskService.java +++ b/src/main/java/com/xdap/self_development/service/TodoTaskService.java @@ -1,6 +1,6 @@ package com.xdap.self_development.service; -import com.xdap.self_development.controller.request.TodoReturnRequest; +import com.xdap.self_development.controller.request.RejectTodoRequest; import com.xdap.self_development.controller.request.TodoTaskRequest; import com.xdap.self_development.controller.request.YcGetTodoTaskRequest; import com.xdap.self_development.domain.dto.EngineParamDetailDTO; @@ -32,7 +32,7 @@ public interface TodoTaskService { void createResPerson(List paramDetailPojos, String userID); - void todoReturn(TodoReturnRequest todoReturnRequest); + void rejectTodo(RejectTodoRequest request); //---------------------------------玉柴调用接口-------------------------------- List returnTodoTask(YcGetTodoTaskRequest ycGetTodoTaskRequest); 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 6c8f680..cf09a56 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 @@ -9,10 +9,7 @@ import com.xdap.self_development.controller.form.HandleReturnNodeForm; import com.xdap.self_development.controller.form.UpdateNodeForm; import com.xdap.self_development.controller.request.ApprovalNodeRequest; import com.xdap.self_development.domain.dto.*; -import com.xdap.self_development.domain.enums.ApprovalOrderEnum; -import com.xdap.self_development.domain.enums.CurrentNodeEnum; -import com.xdap.self_development.domain.enums.ParamOperationEnum; -import com.xdap.self_development.domain.enums.ParamValueVersionEnum; +import com.xdap.self_development.domain.enums.*; import com.xdap.self_development.domain.pojo.*; import com.xdap.self_development.domain.view.FlowNode; import com.xdap.self_development.exception.CommonException; @@ -27,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.sql.Timestamp; +import java.text.Collator; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; @@ -94,7 +92,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { } catch (Exception e) { throw new CommonException("找不到机型ID对应的参数或机型参数里最新版本没有UPDATE的数据"); } - ArrayList activitiDataDTOS = new ArrayList<>(); + List activitiDataDTOS = new ArrayList<>(); ArrayList das = new ArrayList<>(); for (EngineParamDetailPojo engineParamDetailPojo : engineParamDetailPojos) { String parameterId = engineParamDetailPojo.getParameterId(); @@ -147,7 +145,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { das.add(dataChangeCommentPojo); } bd.getBusinessDatabase().doBatchInsert(das); - return activitiDataDTOS; + return sortValueChange(activitiDataDTOS); } /** @@ -158,33 +156,38 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { */ @Override public void startActiviti(ApprovalNodeRequest approvalNodeRequest) { - //新增审批数据 - if (ObjectUtils.isEmpty(approvalNodeRequest)) { - throw new CommonException("请先填写参数"); - } String processTitle = approvalNodeRequest.getProcessTitle(); String userId = approvalNodeRequest.getUserId(); // 1. 获取第一个审批环节(按nodeOrder排序取最小) ApprovalNodeDTO firstNode = approvalNodeRequest.getNodeList().stream() .min(Comparator.comparingInt(ApprovalNodeDTO::getNodeOrder)) .orElseThrow(() -> new RuntimeException("审批环节配置不能为空")); - List paramList; - String modelId = approvalNodeRequest.getModelId(); - // 查询机型最新版本的参数,过滤出操作为更新且由当前用户更新的参数 - try { - paramList = engineParamDetailService.selectByModelNewVersion(modelId) - .stream() - .filter(x -> ParamOperationEnum.UPDATE.toString() - .equals(x.getOperation()) && userId.equals(x.getLastUpdatedBy() == null ? "" : x.getLastUpdatedBy())).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(paramList)) { - throw new CommonException(""); - } - } catch (Exception e) { - throw new CommonException("找不到机型ID对应的参数或机型参数里最新版本没有UPDATE的数据"); + + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", approvalNodeRequest.getModelId()) + .doQueryFirst(DataEntryEngineModelPojo.class); + if (ObjectUtils.isEmpty(model)) { + throw new CommonException("机型不存在,请检查"); } - String engineModelId = approvalNodeRequest.getModelId(); - // 查询旧的发动机型号信息 - DataEntryEngineModelPojo modelPojoOld = dataEntryEngineModelService.selectBymodelId(engineModelId); + // TODO 检查是否填写完参数并发起审批 + + // 检查当前参数是否全部填写完成 + List toBeFilledParams = bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", userId) + .isNull("minor_version") + .doQuery(EngineParamDetailPojo.class); + if (!ObjectUtils.isEmpty(toBeFilledParams)) + throw new CommonException("您在当前机型的参数未全部填写完成,请检查"); + + // 查询机型最新版本的参数,过滤出操作为更新且由当前用户更新的参数 + List paramList = bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", userId) + .doQuery(EngineParamDetailPojo.class); + //获取提交人 XdapUsers xdapUsers = xdapDeptUsersService.selectUserByID(userId); String createBy = ObjectUtils.isNotEmpty(xdapUsers) ? xdapUsers.getUsername() : null; @@ -202,9 +205,9 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { // 创建发动机审核列表POJO对象 EngineReviewListPojo engineReviewListPojo = new EngineReviewListPojo(); engineReviewListPojo.setId(approvalId); - engineReviewListPojo.setModelId(engineModelId); - engineReviewListPojo.setModelName(modelPojoOld.getModelName()); - engineReviewListPojo.setYcOrOth(modelPojoOld.getYcOrOth()); + engineReviewListPojo.setModelId(model.getId()); + engineReviewListPojo.setModelName(model.getModelName()); + engineReviewListPojo.setYcOrOth(model.getYcOrOth()); engineReviewListPojo.setProcessTopic(processTitle); engineReviewListPojo.setStatusCode(ParamValueVersionEnum.UNDER.getCode()); engineReviewListPojo.setApplicant(userId); @@ -227,14 +230,14 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { todoTaskPojo.setProcessTitle(processTitle); todoTaskPojo.setCurrentNode(ApprovalOrderEnum.PROOFREAD.getDesc()); todoTaskPojo.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); - todoTaskPojo.setModelId(engineModelId); - todoTaskPojo.setVersionNumber(modelPojoOld.getVersionNumber()); + todoTaskPojo.setModelId(model.getId()); + todoTaskPojo.setVersionNumber(model.getVersionNumber()); todoTaskPojo.setOwnerId(assigneeId); todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - todoTaskPojo.setModelName(modelPojoOld.getModelName()); + todoTaskPojo.setModelName(model.getModelName()); todoTaskPojo.setCreatedById(userId); todoTaskPojo.setCreatedBy(createBy); - todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate()); todoTaskPojo.setIsDelete(0); list.add(todoTaskPojo); } @@ -249,8 +252,8 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { initiatedTaskPojo.setCreatedById(userId); initiatedTaskPojo.setCreatedBy(createBy); initiatedTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - initiatedTaskPojo.setModelName(modelPojoOld.getModelName()); - initiatedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTaskPojo.setModelName(model.getModelName()); + initiatedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate()); initiatedTaskPojo.setIsDelete(0); initiatedTaskPojo.setEnableReturn(1); bd.getBusinessDatabase().doInsert(initiatedTaskPojo); @@ -302,6 +305,34 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { 1 ) ); + + // 参数发起审批后,删除填写人的待办 + TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase() + .eq("owner_id", userId) + .eq("model_id", model.getId()) + .eq("data_type", "数据维护") + .doQueryFirst(TodoTaskPojo.class); + // 修改待办和发起的任务状态 + bd.getBusinessDatabase() + .update("is_delete", 1) + .update("current_node", "已维护") + .update("last_update_date", new Date()) + .eq("document_no", todoTaskPojo.getDocumentNo()) + .doUpdate(TodoTaskPojo.class); + bd.getBusinessDatabase() + .update("current_node", "已维护") + .update("last_update_date", new Date()) + .eq("document_no", todoTaskPojo.getDocumentNo()) + .doUpdate(InitiatedTaskPojo.class); + //新增这个人的已办 + CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); + BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo); + completedTaskPojo.setId(UUID.randomUUID().toString().replaceAll("-", "")); + completedTaskPojo.setDocumentNo(todoTaskPojo.getDocumentNo()); + completedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate()); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setCurrentNode("已维护"); + bd.getBusinessDatabase().doInsert(completedTaskPojo); } /** @@ -316,7 +347,6 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { public String handleApproval(HandleApprovalDTO handleApprovalDTO) { String approvalId = handleApprovalDTO.getApprovalId(); String approver = handleApprovalDTO.getUserId(); - ArrayList list = new ArrayList<>(); // 验证流程状态和用户权限 EngineReviewListPojo reviewListPojo = bd.getBusinessDatabase() @@ -326,6 +356,15 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { if (!assigneeList.contains(approver)) { throw new CommonException("当前用户无权限处理此审批环节"); } + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", reviewListPojo.getModelId()) + .doQueryFirst(DataEntryEngineModelPojo.class); + // 获取当前流程填写人的填写参数 + List list = bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", reviewListPojo.getCreatedBy()) + .doQuery(EngineParamDetailPojo.class); ParamApprovalRecordPojo lastedRecord = bd.getBusinessDatabase() .eq("approval_id", approvalId) @@ -362,11 +401,6 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { else { myself.processApproval(reviewListPojo, handleApprovalDTO, approvalConfigPojo, lastedRecord, list); } - - // 如果有待插入的参数明细数据,则执行批量插入 - if (ObjectUtils.isNotEmpty(list)) { - bd.getBusinessDatabase().doBatchInsert(list); - } return "已审批"; } @@ -376,7 +410,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { HandleApprovalDTO request, ApprovalConfigPojo currentNode, ParamApprovalRecordPojo lastedRecord, - ArrayList list + List list ) { // 新增当前审批结果 bd.getBusinessDatabase().doInsert(new ParamApprovalRecordPojo( @@ -420,7 +454,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { completedTaskPojo.setDataType("数据审批"); completedTaskPojo.setOwnerId(request.getUserId()); completedTaskPojo.setProcessTitle(flow.getProcessTopic()); - completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setCreationDate(flow.getCreationDate()); completedTaskPojo.setIsDelete(0); completedTaskPojo.setModelId(flow.getModelId()); bd.getBusinessDatabase().doInsert(completedTaskPojo); @@ -504,7 +538,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { todoTask.setCurrentNode("编制"); todoTask.setDataType("数据拒绝"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreationDate()); todoTask.setIsDelete(0); todoTask.setModelId(flow.getModelId()); todoTask.setModelName(flow.getModelName()); @@ -566,55 +600,76 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { userId, 0 ); - } - else { + } else { // 待办环节修改 myself.updateTasks(flow, ParamValueVersionEnum.PASSED.getDesc(), 0, null); - // 所有环节完成 - DataEntryEngineModelPojo modelPojos = bd.getBusinessDatabase() + + // TODO 审批通过的版本变化 + DataEntryEngineModelPojo model = bd.getBusinessDatabase() .eq("id", flow.getModelId()) .doQueryFirst(DataEntryEngineModelPojo.class); - Integer versionNumber = modelPojos.getVersionNumber(); + + // 检查当前参数是否为一版本,是则更新参数,否则新建版本。 // 这个机型下所有参数都全部写入一版且版本加一 没有参与审批的参数时原来的值,参与审批的参数值要取小版本值作为大版本 + // 现版本全部参数 List oldDetails = bd.getBusinessDatabase() .eq("engine_model_id", flow.getModelId()) - .eq("major_version", versionNumber) + .eq("major_version", model.getVersionNumber()) .doQuery(EngineParamDetailPojo.class); - List passDetail = bd.getBusinessDatabase() - .eq("approval_id", flow.getId()) - .eq("operation", ParamOperationEnum.UPDATE) - .doQuery(EngineParamDetailPojo.class); - List ids = passDetail.stream() + // 本次审核通过审核的参数id + List ids = list.stream() .map(EngineParamDetailPojo::getId) .collect(Collectors.toList()); - for (EngineParamDetailPojo oldDetail : oldDetails) { - EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo(); - BeanUtils.copyProperties(oldDetail, engineParamDetailPojo - , "id" - , "majorVersion" - , "minorVersion" - , "versionStatus" - , "approvalId" - , "isDelete" - , "operation"); - if (ids.contains(oldDetail.getId())) { - engineParamDetailPojo.setParameterValue(oldDetail.getMinorVersion()); + // 现版本未填写的参数 + List emptyParameters = bd.getBusinessDatabase() + .eq("engine_model_id", flow.getModelId()) + .eq("major_version", model.getVersionNumber()) + .isNull("parameter_value") + .doQuery(EngineParamDetailPojo.class); + + if (emptyParameters.size() == oldDetails.size()) { + for (EngineParamDetailPojo item : list) { + bd.getBusinessDatabase() + .eq("id", item.getId()) + .update("parameter_value", item.getMinorVersion()) + .update("minor_version", null) + .doUpdate(EngineParamDetailPojo.class); } - engineParamDetailPojo.setMajorVersion(versionNumber + 1); - // 添加到待插入列表 - list.add(engineParamDetailPojo); + } else { + List toInsert = new ArrayList<>(); + for (EngineParamDetailPojo oldDetail : oldDetails) { + EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo(); + BeanUtils.copyProperties(oldDetail, engineParamDetailPojo + , "id" + , "majorVersion" + , "minorVersion" + , "versionStatus" + , "approvalId" + , "isDelete" + , "operation"); + if (ids.contains(oldDetail.getId())) { + engineParamDetailPojo.setParameterValue(oldDetail.getMinorVersion()); + } + engineParamDetailPojo.setMajorVersion(model.getVersionNumber() + 1); + // 添加到待插入列表 + toInsert.add(engineParamDetailPojo); + } + // 新增新版本参数 + bd.getBusinessDatabase().doBatchInsert(toInsert); + + // 这个机型版本加一, + bd.getBusinessDatabase() + .update("version_number", (model.getVersionNumber() + 1)) + .eq("id", flow.getModelId()) + .doUpdate(DataEntryEngineModelPojo.class); } + // 这一批数据改成审核通过, bd.getBusinessDatabase() .update("version_status", ParamValueVersionEnum.PASSED.getCode()) .update("last_update_date", new Date()) .eq("approval_id", flow.getId()) .doUpdate(EngineParamDetailPojo.class); - // 这个机型版本加一, - bd.getBusinessDatabase() - .update("version_number", (versionNumber + 1)) - .eq("id", flow.getModelId()) - .doUpdate(DataEntryEngineModelPojo.class); // 审批流改为已通过 bd.getBusinessDatabase() .update("status_code", ParamValueVersionEnum.PASSED.getCode()) @@ -624,6 +679,41 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("pre_node", -1) .eq("id", flow.getId()) .doUpdate(EngineReviewListPojo.class); + + // 判断当前是否完成全部审批任务 + DataEntryEngineModelPojo hasDistributed = bd.getBusinessDatabase() + .eq("id", model.getId()) + .eq("distribute_status", 1) + .doQueryFirst(DataEntryEngineModelPojo.class); + List allDetails = bd.getBusinessDatabase() + .eq("engine_model_id", flow.getModelId()) + .eq("major_version", model.getVersionNumber()) + .ne("is_distributed_res", 2) + .doQuery(EngineParamDetailPojo.class); + List finishDetails = bd.getBusinessDatabase() + .eq("engine_model_id", flow.getModelId()) + .eq("major_version", model.getVersionNumber() + 1) + .eq("status_code", ParamValueVersionEnum.PASSED.getCode()) + .doQuery(EngineParamDetailPojo.class); + // 机型已完成分发并且全部分发参数已完成填写并审核通过 + if (hasDistributed != null && allDetails.size() == finishDetails.size()) { + // 修改机型状态为待分发 + bd.getBusinessDatabase() + .eq("id", model.getId()) + .update("distribute_status", DistributeStatusEnum.UNDISTRIBUTED.getCode()) + .doUpdate(DataEntryEngineModelPojo.class); + // 修改参数状态为草稿并清除所有责任人和填写人 + List collected = allDetails.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList()); + bd.getBusinessDatabase() + .update("is_distributed_res", 0) + .update("is_distributed_filled", 0) + .update("responsible_person_id", null) + .update("filled_by", null) + .update("minor_version", null) + .update("version_status", ParamValueVersionEnum.DRAFT.getCode()) + .in("id", collected) + .doUpdate(EngineParamDetailPojo.class); + } } } } @@ -658,7 +748,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { todoTaskPojo.setModelName(modelPojo.getModelName()); todoTaskPojo.setCreatedById(createBy); todoTaskPojo.setCreatedBy(xdapDeptUsersService.selectUserByID(createBy).getUsername()); - todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTaskPojo.setCreationDate(flow.getCreationDate()); todoTaskPojo.setIsDelete(0); bd.getBusinessDatabase().doInsert(todoTaskPojo); } @@ -1182,7 +1272,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .doQueryFirst(DataEntryEngineModelPojo.class); activitiDataAndRecordDTO.setModel(model); //查找审批数据 - ArrayList activitiDataDTOS = new ArrayList<>(); + List activitiDataDTOS = new ArrayList<>(); //通过审批ID找到审批中的参数 通过参数ID匹配参数变动说明 List detailPojos = bd.getBusinessDatabase() @@ -1206,7 +1296,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { activitiDataDTO.setChangeComment(dataChangeCommentPojo.getChangeComment()); activitiDataDTOS.add(activitiDataDTO); } - activitiDataAndRecordDTO.setActivitiDataDTOS(activitiDataDTOS); + activitiDataAndRecordDTO.setActivitiDataDTOS(sortValueChange(activitiDataDTOS)); List flowNodes = new ArrayList<>(); EngineReviewListPojo flow = bd.getBusinessDatabase() .eq("id", approvalId) @@ -1392,4 +1482,13 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { } return joiner.toString(); } + + private List sortValueChange(List changeList) { + return changeList.stream() + .sorted(Comparator + .comparing(ActivitiDataDTO::getSubsystemName, Collator.getInstance(Locale.CHINA)) + .thenComparing(ActivitiDataDTO::getParameterName, Collator.getInstance(Locale.CHINA)) + ) + .collect(Collectors.toList()); + } } \ No newline at end of file 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 f47a28d..17fe113 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 @@ -275,7 +275,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService todoTask.setCurrentNode(firstNode.getNodeName()); todoTask.setDataType("对标报告审核"); todoTask.setDocumentNo(approvalFlow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(approvalFlow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(report.getId()); todoTask.setModelName(report.getProjectName() + "对标报告"); @@ -297,7 +297,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService initiatedTask.setCurrentProcessor(firstNode.getAssignees()); initiatedTask.setDataType("对标报告审核"); initiatedTask.setProcessTitle(approvalFlow.getProcessTitle()); - initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTask.setCreationDate(approvalFlow.getCreatedTime()); initiatedTask.setIsDelete(0); initiatedTask.setModelId(approvalFlow.getTemplateId()); initiatedTask.setEnableReturn(1); @@ -499,7 +499,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService todoTask.setCurrentNode(firstNode.getNodeName()); todoTask.setDataType("对标报告审核"); todoTask.setDocumentNo(newForm.getFlowId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(report.getId()); todoTask.setModelName(report.getProjectName() + "对标报告"); @@ -521,7 +521,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService initiatedTask.setCurrentProcessor(firstNode.getAssignees()); initiatedTask.setDataType("对标报告审核"); initiatedTask.setProcessTitle(flow.getProcessTitle()); - initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTask.setCreationDate(flow.getCreatedTime()); initiatedTask.setIsDelete(0); initiatedTask.setModelId(flow.getTemplateId()); initiatedTask.setEnableReturn(1); @@ -1004,7 +1004,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService completedTaskPojo.setDataType("对标报告审核"); completedTaskPojo.setOwnerId(request.getUserId()); completedTaskPojo.setProcessTitle(flow.getProcessTitle()); - completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setCreationDate(flow.getCreatedTime()); completedTaskPojo.setIsDelete(0); completedTaskPojo.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(completedTaskPojo); @@ -1090,7 +1090,7 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService todoTask.setCurrentNode(node.getNodeName()); todoTask.setDataType("对标报告审核"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(report.getId()); todoTask.setModelName(report.getProjectName() + "对标报告"); @@ -1159,11 +1159,11 @@ public class BenchmarkingReportServiceImpl implements BenchmarkingReportService todoTask.setCurrentNode("编制"); todoTask.setDataType("对标报告拒绝"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(report.getId()); todoTask.setModelName(report.getTitle()); - todoTask.setProcessTitle("拒绝提醒-"+flow.getProcessTitle()); + todoTask.setProcessTitle(flow.getProcessTitle()); todoTask.setStatusCode(flow.getFlowStatus()); todoTask.setVersionNumber(0); todoTask.setOwnerId(flow.getCreateBy()); 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 ca8a8e0..4d2fe27 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,5 +1,6 @@ package com.xdap.self_development.service.impl; +import com.alibaba.fastjson2.JSON; import com.xdap.self_development.common.BusinessDatabase; import com.xdap.self_development.controller.form.*; import com.xdap.self_development.domain.pojo.*; @@ -141,12 +142,31 @@ public class CommonParameterServiceImpl implements CommonParameterService { * @return 分析常用参数POJO列表 */ @Override - public List getAnalysisCommonParameter(String userId) { - return bd.getBusinessDatabase() + public List getAnalysisCommonParameter(String userId) { + List list = bd.getBusinessDatabase() .viewQueryMode(true) .view("queryCommon") .setVar("user_id", userId) .doQuery(AnalysisCommonParametersPojo.class); + + List res = new ArrayList<>(); + for (AnalysisCommonParametersPojo commonParameter : list) { + AnalysisCommonParameterInsertForm analysisCommonParameter = new AnalysisCommonParameterInsertForm(); + analysisCommonParameter.setModelName(JSON.parseArray(commonParameter.getModelName()).toJavaList(String.class)); + analysisCommonParameter.setPlate(JSON.parseArray(commonParameter.getPlate()).toJavaList(String.class)); + analysisCommonParameter.setPlatform(JSON.parseArray(commonParameter.getPlatform()).toJavaList(String.class)); + analysisCommonParameter.setSeries(JSON.parseArray(commonParameter.getSeries()).toJavaList(String.class)); + analysisCommonParameter.setProjectName(JSON.parseArray(commonParameter.getProjectName()).toJavaList(String.class)); + analysisCommonParameter.setProjectNumber(JSON.parseArray(commonParameter.getProjectNumber()).toJavaList(String.class)); + analysisCommonParameter.setEmission(JSON.parseArray(commonParameter.getEmission()).toJavaList(String.class)); + analysisCommonParameter.setDisplacementMax(commonParameter.getDisplacementMax()); + analysisCommonParameter.setDisplacementMin(commonParameter.getDisplacementMin()); + analysisCommonParameter.setCombustionType(JSON.parseArray(commonParameter.getCombustionType()).toJavaList(String.class)); + analysisCommonParameter.setCommonName(commonParameter.getCommonName()); + analysisCommonParameter.setCommonId(commonParameter.getCommonId()); + res.add(analysisCommonParameter); + } + return res; } /** @@ -174,7 +194,17 @@ public class CommonParameterServiceImpl implements CommonParameterService { // 关联常用参数 AnalysisCommonParametersPojo analysisCommonParameter = new AnalysisCommonParametersPojo(); - BeanUtils.copyProperties(form, analysisCommonParameter); + analysisCommonParameter.setModelName(JSON.toJSONString(form.getModelName())); + analysisCommonParameter.setPlate(JSON.toJSONString(form.getPlate())); + analysisCommonParameter.setPlatform(JSON.toJSONString(form.getPlatform())); + analysisCommonParameter.setSeries(JSON.toJSONString(form.getSeries())); + analysisCommonParameter.setProjectName(JSON.toJSONString(form.getProjectName())); + analysisCommonParameter.setProjectNumber(JSON.toJSONString(form.getProjectNumber())); + analysisCommonParameter.setEmission(JSON.toJSONString(form.getEmission())); + analysisCommonParameter.setDisplacementMax(form.getDisplacementMax()); + analysisCommonParameter.setDisplacementMin(form.getDisplacementMin()); + analysisCommonParameter.setCombustionType(JSON.toJSONString(form.getCombustionType())); + analysisCommonParameter.setCommonId(commonParameter.getId()); bd.getBusinessDatabase().doInsert(analysisCommonParameter); } @@ -190,14 +220,24 @@ public class CommonParameterServiceImpl implements CommonParameterService { @Transactional public void updateAnalysisCommonParameter(AnalysisCommonParameterUpdateForm form) { CommonParameterPojo commonParameter = bd.getBusinessDatabase() - .eq("id", form.getCommonId()).doQueryFirst(CommonParameterPojo.class); + .eq("id", form.getCommonId()) + .doQueryFirst(CommonParameterPojo.class); if (commonParameter == null) { throw new CommonException("无该常用"); } AnalysisCommonParametersPojo commonParameters = bd.getBusinessDatabase() .eq("common_id", form.getCommonId()) .doQueryFirst(AnalysisCommonParametersPojo.class); - BeanUtils.copyProperties(form, commonParameters); + commonParameters.setModelName(JSON.toJSONString(form.getModelName())); + commonParameters.setPlate(JSON.toJSONString(form.getPlate())); + commonParameters.setPlatform(JSON.toJSONString(form.getPlatform())); + commonParameters.setSeries(JSON.toJSONString(form.getSeries())); + commonParameters.setProjectName(JSON.toJSONString(form.getProjectName())); + commonParameters.setProjectNumber(JSON.toJSONString(form.getProjectNumber())); + commonParameters.setEmission(JSON.toJSONString(form.getEmission())); + commonParameters.setDisplacementMax(form.getDisplacementMax()); + commonParameters.setDisplacementMin(form.getDisplacementMin()); + commonParameters.setCombustionType(JSON.toJSONString(form.getCombustionType())); bd.getBusinessDatabase().rowid("id", commonParameter.getRowId()).doUpdate(commonParameter); } 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 a7bc75e..ab17113 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 @@ -33,14 +33,13 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; -import java.sql.Timestamp; +import java.text.Collator; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 发动机参数详情服务实现类 @@ -67,6 +66,8 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final Collator CHINESE_COLLATOR = Collator.getInstance(Locale.CHINA); + /** * 返回参数列表 @@ -324,120 +325,112 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { * 根据多个参数查询值 * 根据参数详情请求查询多个参数的值 * - * @param engineParamDetailRequest 发动机参数详情请求 + * @param request 发动机参数详情请求 * @return 参数详情DTO映射 */ @Override - public Map> selectValueByMoreParam(EngineParamDetailRequest engineParamDetailRequest) { + public Map> selectValueByMoreParam(EngineParamDetailRequest request) { + List engineParamDetailDTOS = new ArrayList<>(); + List paramDetails = new ArrayList<>(); - String engineModelID = engineParamDetailRequest.getEngineModelID(); - - List subsystemTypes = engineParamDetailRequest.getSubsystemParts(); - if (ObjectUtils.isEmpty(engineModelID) || ObjectUtils.isEmpty(subsystemTypes)) { - throw new CommonException("传入参数为空,请检查"); + // 获取当前机型 + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", request.getEngineModelID()) + .doQueryFirst(DataEntryEngineModelPojo.class); + if (ObjectUtils.isEmpty(model)) { + throw new CommonException("机型不存在,请检查"); } - List detailPojos = new ArrayList<>(); - ArrayList engineParamDetailDTOS = new ArrayList<>(); - String filledById = engineParamDetailRequest.getFilledById(); - String resId = engineParamDetailRequest.getResponsiblePersonId(); - - //若查看草稿版本需要把版本加上 - String versionStatus = engineParamDetailRequest.getVersionStatus(); - Integer code = null; - if (ObjectUtils.isNotEmpty(versionStatus)) { - code = ParamValueVersionEnum.getByDesc(versionStatus).getCode(); - } - for (String subsystemType : subsystemTypes) { + // 根据条件过滤查询 + for (String subsystemType : request.getSubsystemParts()) { if (subsystemType.split("-").length != 2) { throw new CommonException("查询条件异常,需子系统-零部件名称,若零部件为空则传入“/”"); } + //TODO 机型返回参数详情 String subsystem = subsystemType.split("-")[0]; String type = subsystemType.split("-")[1]; //若传入填写人则查询填写人需要填写的参数 - if (ObjectUtils.isNotEmpty(filledById)) { - detailPojos.addAll(bd.getBusinessDatabase() - .eq("filled_by", filledById) - .eq("engine_model_id", engineModelID) - .eq("version_status", code) + if (ObjectUtils.isNotEmpty(request.getFilledById())) { + paramDetails.addAll(bd.getBusinessDatabase() + .eq("filled_by", request.getFilledById()) + .eq("engine_model_id", model.getId()) .eq("subsystem_name", subsystem) .eq("parts_name", type) + .eq("major_version", model.getVersionNumber()) .eq("parameter_source", "数据平台手工录入") .doQuery(EngineParamDetailPojo.class)); - } else if (ObjectUtils.isNotEmpty(resId)) { + } else if (ObjectUtils.isNotEmpty(request.getResponsiblePersonId())) { //若传入责任人则查询责任人需要分发的参数 - detailPojos.addAll(bd.getBusinessDatabase() - .eq("engine_model_id", engineModelID) - .eq("responsible_person_id", resId) - .eq("version_status", code) + paramDetails.addAll(bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("responsible_person_id", request.getResponsiblePersonId()) .eq("subsystem_name", subsystem) .eq("parts_name", type) + .eq("major_version", model.getVersionNumber()) .eq("parameter_source", "数据平台手工录入") .doQuery(EngineParamDetailPojo.class)); } else { - detailPojos.addAll(bd.getBusinessDatabase() - .eq("engine_model_id", engineModelID) - .eq("version_status", code) + paramDetails.addAll(bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) .eq("subsystem_name", subsystem) .eq("parts_name", type) + .eq("major_version", model.getVersionNumber()) .eq("parameter_source", "数据平台手工录入") .doQuery(EngineParamDetailPojo.class)); } - - } - if (ObjectUtils.isEmpty(detailPojos)) { - throw new CommonException("没有可查看参数,可能是因为您没有权限"); - } - if (ObjectUtils.isNotEmpty(engineParamDetailRequest.getMajorVersion()) && engineParamDetailRequest.getMajorVersion() != 0) { - detailPojos = detailPojos.stream() - .filter(x -> engineParamDetailRequest.getMajorVersion() - .equals(x.getMajorVersion())).collect(Collectors.toList()); - } else { - EngineParamDetailPojo engineParamDetailPojo = detailPojos.stream().max(Comparator.comparingInt(EngineParamDetailPojo::getMajorVersion)).get(); - detailPojos = detailPojos.stream() - .filter(x -> engineParamDetailPojo.getMajorVersion() - .equals(x.getMajorVersion())).collect(Collectors.toList()); } - //pojo转换dto填写人Id转换为名称 - log.info("找到数据{}条", detailPojos.size()); - for (EngineParamDetailPojo detailPojo : detailPojos) { - String filledBy = null; - XdapUsers filler = null; - if (ObjectUtils.isNotEmpty(detailPojo.getFilledBy())) { - filler = xdapDeptUsersService.selectUserByID(detailPojo.getFilledBy()); - filledBy = ObjectUtils.isEmpty(filler) ? "" : filler.getUsername(); - - } + // 构建返回 + for (EngineParamDetailPojo detail : paramDetails) { EngineParamDetailDTO engineParamDetailDTO = new EngineParamDetailDTO(); - BeanUtils.copyProperties(detailPojo, engineParamDetailDTO); - String unit = ""; - if (ObjectUtils.isNotEmpty(detailPojo.getParameterId())) { - List parameters = bd.getBusinessDatabase() - .eq("id", detailPojo.getParameterId()) - .doQuery(ParameterPojo.class); - unit = parameters.get(0).getUnit(); + BeanUtils.copyProperties(detail, engineParamDetailDTO); + + engineParamDetailDTO.setFilledBy(null); + engineParamDetailDTO.setFiller(null); + engineParamDetailDTO.setResPerson(null); + engineParamDetailDTO.setResPersonId(null); + engineParamDetailDTO.setIsDistributedFilled(0); + engineParamDetailDTO.setIsDistributedRes(0); + + if (ObjectUtils.isNotEmpty(detail.getFilledBy())) { + XdapUsers filler = xdapDeptUsersService.selectUserByID(detail.getFilledBy()); + engineParamDetailDTO.setFiller(filler); + engineParamDetailDTO.setFilledBy(ObjectUtils.isEmpty(filler) ? "" : filler.getUsername()); + engineParamDetailDTO.setIsDistributedFilled(1); } - engineParamDetailDTO.setId(detailPojo.getId()); - engineParamDetailDTO.setResPersonId(detailPojo.getResponsiblePersonId()); - engineParamDetailDTO.setUnit(unit); - engineParamDetailDTO.setFilledBy(filledBy); - engineParamDetailDTO.setFiller(filler); - engineParamDetailDTO.setApprovalId(detailPojo.getApprovalId()); + if (ObjectUtils.isNotEmpty(detail.getResponsiblePersonId())) { + XdapUsers responsiblePerson = xdapDeptUsersService.selectUserByID(detail.getResponsiblePersonId()); + engineParamDetailDTO.setResPerson(responsiblePerson); + engineParamDetailDTO.setResPersonId(ObjectUtils.isEmpty(responsiblePerson) ? "" : responsiblePerson.getUsername()); + engineParamDetailDTO.setIsDistributedRes(1); + } + + engineParamDetailDTO.setUnit(null); + if (ObjectUtils.isNotEmpty(detail.getParameterId())) { + ParameterPojo parameter = bd.getBusinessDatabase() + .eq("id", detail.getParameterId()) + .doQueryFirst(ParameterPojo.class); + engineParamDetailDTO.setUnit(parameter.getUnit()); + } + + engineParamDetailDTO.setId(detail.getId()); + engineParamDetailDTO.setApprovalId(detail.getApprovalId()); engineParamDetailDTOS.add(engineParamDetailDTO); } + // 排序返回 + List detailDTOList = engineParamDetailDTOS.stream() + .sorted(Comparator + .comparing(EngineParamDetailDTO::getSubsystemName, Collator.getInstance(Locale.CHINA)) + .thenComparing(EngineParamDetailDTO::getParameterName, Collator.getInstance(Locale.CHINA)) + ) + .collect(Collectors.toList()); - return engineParamDetailDTOS.stream() + return detailDTOList.stream() .collect(Collectors.groupingBy( EngineParamDetailDTO::getSubsystemName, - TreeMap::new, - Collectors.collectingAndThen( - Collectors.toList(), - list -> list.stream() - .sorted(Comparator.comparing(EngineParamDetailDTO::getParameterName)) - .collect(Collectors.toList()) - ) + LinkedHashMap::new, + Collectors.toList() )); } @@ -451,79 +444,51 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { */ @Override public void updateParamValue(List engineParamDetailPojos, String currentUserId) { + // 获取欲更新参数列表 + List detailIds = engineParamDetailPojos.stream() + .map(EngineParamDetailPojo::getId) + .collect(Collectors.toList()); + List details = bd.getBusinessDatabase() + .in("id", detailIds) + .doQuery(EngineParamDetailPojo.class); + + // 转换参数详情为map + Map detailMap = details.stream() + .collect(Collectors.toMap(EngineParamDetailPojo::getId, pojo -> pojo)); + + // 遍历更新参数值 + for (EngineParamDetailPojo requestDetail : engineParamDetailPojos) { + EngineParamDetailPojo detail = detailMap.get(requestDetail.getId()); - if (ObjectUtils.isEmpty(engineParamDetailPojos)) { - throw new CommonException("集合为空,请检查"); - } - for (EngineParamDetailPojo engineParamDetailPojo : engineParamDetailPojos) { - EngineParamDetailPojo engineParamDetailPojo1 = selectById(engineParamDetailPojo.getId()); //查找参数是否已经在审批中 - if (ObjectUtils.isNotEmpty(engineParamDetailPojo1) && Objects.equals(ParamValueVersionEnum.UNDER.getCode(), engineParamDetailPojo1.getVersionStatus())) { - throw new CommonException("您修改参数中有正在审批中的,请查看审批流审批后再修改,零部件+参数名称:" + engineParamDetailPojo.getPartsName() + "-" + engineParamDetailPojo.getParameterName()); + if (ObjectUtils.isNotEmpty(detail) + && Objects.equals(ParamValueVersionEnum.UNDER.getCode(), detail.getVersionStatus()) + ) { + throw new CommonException("您修改参数中有正在审批中的,请查看审批流审批后再修改,零部件+参数名称:" + + requestDetail.getPartsName() + "-" + requestDetail.getParameterName()); } //通过操作状态对应不同操作新增和更新都新增数据为小版本且为草稿状态 - if (engineParamDetailPojo.getOperation().equals(String.valueOf(ParamOperationEnum.UPDATE))) { - String id = engineParamDetailPojo.getId(); - EngineParamDetailPojo engineParamDetailPojoById = selectById(id); + if (requestDetail.getOperation().equals(String.valueOf(ParamOperationEnum.UPDATE))) { bd.getBusinessDatabase() - .update("minor_version", engineParamDetailPojo.getParameterValue()) + .update("minor_version", requestDetail.getParameterValue()) .update("version_status", ParamValueVersionEnum.DRAFT.getCode()) .update("operation", String.valueOf(ParamOperationEnum.UPDATE)) .update("last_updated_by", currentUserId) .update("last_update_date", new Date()) - .rowid("id", engineParamDetailPojoById.getId()) + .eq("id", detail.getId()) .doUpdate(EngineParamDetailPojo.class); - } else if (engineParamDetailPojo.getOperation().equals(String.valueOf(ParamOperationEnum.DELETE))) { - String id = engineParamDetailPojo.getId(); + } else if (requestDetail.getOperation().equals(String.valueOf(ParamOperationEnum.DELETE))) { bd.getBusinessDatabase() .update("is_delete", "1") .update("version_status", ParamValueVersionEnum.DRAFT.getCode()) .update("operation", String.valueOf(ParamOperationEnum.DELETE)) .update("last_updated_by", currentUserId) .update("last_update_date", new Date()) - .rowid("id", id) + .eq("id", requestDetail.getId()) .doUpdate(EngineParamDetailPojo.class); - } } - EngineParamDetailPojo engineParamDetailPojo = engineParamDetailPojos.get(0); - List pojoList = selectByModelNewVersion(engineParamDetailPojo.getEngineModelId()); - Stream paramDetailPojoStream = pojoList.stream().filter(x -> { - if (ObjectUtils.isEmpty(x.getFilledBy())) { - return false; - } - return x.getFilledBy().equals(currentUserId) && ObjectUtils.isEmpty(x.getMinorVersion()); - }); - //填写后检查是否完全填写完成用来消除待办 - if (ObjectUtils.isNotEmpty(paramDetailPojoStream)) { - TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase() - .eq("owner_id", currentUserId) - .eq("model_id", engineParamDetailPojo.getEngineModelId()) - .eq("data_type", "数据维护") - .doQueryFirst(TodoTaskPojo.class); - //修改待办和发起的任务状态 - bd.getBusinessDatabase() - .update("is_delete", 1) - .update("current_node", "已维护") - .update("last_update_date", new Date()) - .eq("document_no", todoTaskPojo.getDocumentNo()) - .doUpdate(TodoTaskPojo.class); - bd.getBusinessDatabase() - .update("current_node", "已维护") - .update("last_update_date", new Date()) - .eq("document_no", todoTaskPojo.getDocumentNo()) - .doUpdate(InitiatedTaskPojo.class); - //新增这个人的已办 - CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); - BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo); - completedTaskPojo.setId(UUID.randomUUID().toString().replaceAll("-", "")); - completedTaskPojo.setDocumentNo(todoTaskPojo.getDocumentNo()); - completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); - completedTaskPojo.setIsDelete(0); - completedTaskPojo.setCurrentNode("已维护"); - bd.getBusinessDatabase().doInsert(completedTaskPojo); - } } /** @@ -537,45 +502,38 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { //分解任务 @Override public void updateToInsertFiledBy(List engineParamDetailPojos, String userID) { - if (ObjectUtils.isEmpty(engineParamDetailPojos)) { - log.info("分解时没有传入数据"); - return; - } String engineModelId = engineParamDetailPojos.get(0).getEngineModelId(); + //TODO 分发填写人 + + // 检查是否有当前任务待办 TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase() .eq("owner_id", userID) .eq("model_id", engineModelId) .eq("data_type", "任务分解") .eq("is_delete", 0) .doQueryFirst(TodoTaskPojo.class); - if (todoTaskPojo == null) { throw new CommonException("没有分解任务,请刷新重试"); } DataEntryEngineModelPojo modelPojo = dataEntryEngineModelService.selectBymodelId(engineModelId); - XdapUsers xdapUsers = xdapDeptUsersService.selectUserByID(userID); - - ArrayList todoTaskPojos = new ArrayList<>(); ArrayList taskPojos = new ArrayList<>(); + //分解任务更新填写人 for (EngineParamDetailPojo engineParamDetailPojo : engineParamDetailPojos) { bd.getBusinessDatabase() + .update("is_distributed_filled", 1) .update("filled_by", engineParamDetailPojo.getFilledBy()) - .rowid("id", engineParamDetailPojo.getId()) - .doUpdate(engineParamDetailPojo); + .eq("id", engineParamDetailPojo.getId()) + .doUpdate(EngineParamDetailPojo.class); } - // 清除待办 - bd.getBusinessDatabase() - .eq("model_id", modelPojo.getId()) - .eq("data_type", CurrentNodeEnum.REPAIR.getDesc()) - .update("is_delete", 1) - .doUpdate(TodoTaskPojo.class); //为每个填写人分配任务 - Set filledBys = engineParamDetailPojos.stream().map(EngineParamDetailPojo::getFilledBy).collect(Collectors.toSet()); + Set filledBys = engineParamDetailPojos.stream() + .map(EngineParamDetailPojo::getFilledBy) + .collect(Collectors.toSet()); for (String filledBy : filledBys) { TodoTaskPojo todoTask = new TodoTaskPojo(); todoTask.setCreatedById(userID); @@ -585,7 +543,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { todoTask.setStatusCode(null); todoTask.setModelName(modelPojo.getModelName()); todoTask.setModelId(modelPojo.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(todoTaskPojo.getCreationDate()); todoTask.setDataType(CurrentNodeEnum.REPAIR.getDesc()); todoTask.setVersionNumber(modelPojo.getVersionNumber()); todoTask.setOwnerId(filledBy); @@ -601,16 +559,18 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { bd.getBusinessDatabase().doBatchInsert(todoTaskPojos); bd.getBusinessDatabase().doBatchInsert(taskPojos); - //每次分发填写人时进行检测 - //这个责任人相关的填写人是否都已经填写完成如果没有则待办不动 如果填写完了待办完成 - List detailPojos = selectByResId(userID); - List paramDetailPojos = detailPojos.stream() - .filter(x -> x.getEngineModelId().equals(engineModelId) - && ObjectUtils.isEmpty(x.getFilledBy()) - && Objects.equals(x.getParameterSource(), "数据平台手工录入")) - .collect(Collectors.toList()); - if (ObjectUtils.isEmpty(paramDetailPojos)) { - //软删除这个代办人的任务 + // 每次分发填写人时进行检测 + // 这个责任人相关的填写人是否都已经填写完成,如果没有则待办不动,如果填写完了,则待办完成 + List toBeDistributedParams = bd.getBusinessDatabase() + .eq("engine_model_id", engineModelId) + .eq("major_version", modelPojo.getVersionNumber()) + .eq("responsible_person_id", userID) + .eq("is_distributed_filled", 0) + .doQuery(EngineParamDetailPojo.class); + + if (ObjectUtils.isEmpty(toBeDistributedParams)) { + // 填写人是否都已经填写完成 + // 清除责任人待办 bd.getBusinessDatabase() .eq("model_id", modelPojo.getId()) .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) @@ -619,22 +579,18 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { .doUpdate(TodoTaskPojo.class); //更新待办和发起的任务状态 bd.getBusinessDatabase() - .update("is_delete", 1) .update("current_node", "已分解") .update("last_update_date", new Date()) - .eq("document_no", todoTaskPojo.getId()) - .doUpdate(TodoTaskPojo.class); - bd.getBusinessDatabase() - .update("current_node", "已分解") - .update("last_update_date", new Date()) - .eq("document_no", todoTaskPojo.getId()) + .eq("model_id", modelPojo.getId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("created_by_id", userID) .doUpdate(InitiatedTaskPojo.class); //新增这个人的已办 CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo); completedTaskPojo.setId(UUID.randomUUID().toString().replaceAll("-", "")); completedTaskPojo.setDocumentNo(todoTaskPojo.getDocumentNo()); - completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setCreationDate(todoTaskPojo.getCreationDate()); completedTaskPojo.setIsDelete(0); completedTaskPojo.setCurrentNode("已分解"); bd.getBusinessDatabase().doInsert(completedTaskPojo); @@ -649,49 +605,29 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService { */ @Override public List selectAllByNewVersion() { - //读取已通过审核的版本 DRAFT(草稿)、APPROVING(审批中)、COMPLETE(已完成)、RETURNED(已撤回)、REJECTED(已拒绝) - List templates = - bd.getBusinessDatabase() + //读取已通过审核的版本COMPLETE(已完成) + List templates = bd.getBusinessDatabase() .eq("status", "COMPLETE") .doQuery(TemplatePojo.class); if (ObjectUtils.isEmpty(templates)) { throw new CommonException("未找到未找到已发布的参数模板"); } - //查找每个模板最新版本 - Map latestTemplateMap = templates.stream() - // 按模板ID分组 - .collect(Collectors.groupingBy( - TemplatePojo::getTemplateName, - // 每组内按版本号降序,取第一个(最新版本) - Collectors.collectingAndThen( - Collectors.maxBy(Comparator.comparingInt(TemplatePojo::getVersion)), - Optional::get - ) - )); - ArrayList templatesMax = new ArrayList<>(latestTemplateMap.values()); - List strings = templatesMax.stream().map(TemplatePojo::getId).collect(Collectors.toList()); - //查找最新模板关联的参数 - List templateAndParameters = - bd.getBusinessDatabase() - .in("template_id", strings) - .doQuery(TemplateAndParameterPojo.class); - List pIds = templateAndParameters.stream().map(TemplateAndParameterPojo::getParameterId).collect(Collectors.toList()); - List parameterList = bd.getBusinessDatabase() + //查找最新模板关联的参数 + List templateIds = templates.stream() + .map(TemplatePojo::getId) + .collect(Collectors.toList()); + List templateAndParameters = bd.getBusinessDatabase() + .in("template_id", templateIds) + .doQuery(TemplateAndParameterPojo.class); + List pIds = templateAndParameters.stream() + .map(TemplateAndParameterPojo::getParameterId) + .collect(Collectors.toList()); + + // 返回参数列表 + return bd.getBusinessDatabase() .in("id", pIds) .doQuery(ParameterPojo.class); - //不需要TC数据来源的参数 - parameterList = parameterList.stream().filter(x -> { - if (ObjectUtils.isEmpty(x.getParameterSource())) { - return false; - } - return true; - }).collect(Collectors.toList()); - if (ObjectUtils.isEmpty(parameterList)) { - return new ArrayList<>(); - } else { - return parameterList; - } } diff --git a/src/main/java/com/xdap/self_development/service/impl/EngineReviewListServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/EngineReviewListServiceImpl.java index 1d3c29f..71cc905 100644 --- a/src/main/java/com/xdap/self_development/service/impl/EngineReviewListServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/EngineReviewListServiceImpl.java @@ -57,7 +57,7 @@ public class EngineReviewListServiceImpl implements EngineReviewListService { .eq("status_description", engineReviewListRequest.getStatusDescription()) .eq("applicant", engineReviewListRequest.getApplicant()) .eq("yc_or_oth", engineReviewListRequest.getYcOrOth()) - .orderBy("creation_date", "asc") + .orderBy("creation_date", "desc") .doPageQuery(page, size, EngineReviewListPojo.class); 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 b48ad28..275fe23 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 @@ -154,7 +154,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { todoTask.setCurrentNode(firstNode.getNodeName()); todoTask.setDataType("模板审核"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(template.getId()); todoTask.setModelName(template.getTemplateName()); @@ -176,7 +176,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { initiatedTask.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); initiatedTask.setDataType("模板审核"); initiatedTask.setProcessTitle(request.getProcessTitle()); - initiatedTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTask.setCreationDate(flow.getCreatedTime()); initiatedTask.setIsDelete(0); initiatedTask.setModelId(flow.getTemplateId()); initiatedTask.setEnableReturn(1); @@ -260,7 +260,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { todoTask.setCurrentNode(firstNode.getNodeName()); todoTask.setDataType("模板审核"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(template.getId()); todoTask.setModelName(template.getTemplateName()); @@ -541,7 +541,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { completedTaskPojo.setDataType("模板审核"); completedTaskPojo.setOwnerId(request.getUserId()); completedTaskPojo.setProcessTitle(flow.getProcessTitle()); - completedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + completedTaskPojo.setCreationDate(flow.getCreatedTime()); completedTaskPojo.setIsDelete(0); completedTaskPojo.setModelId(flow.getTemplateId()); bd.getBusinessDatabase().doInsert(completedTaskPojo); @@ -597,11 +597,11 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { todoTask.setCurrentNode("编制"); todoTask.setDataType("模板拒绝"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(template.getId()); todoTask.setModelName(template.getTemplateName()); - todoTask.setProcessTitle("拒绝提醒-"+flow.getProcessTitle()); + todoTask.setProcessTitle(flow.getProcessTitle()); todoTask.setStatusCode(flow.getFlowStatus()); todoTask.setVersionNumber(template.getVersion()); todoTask.setOwnerId(flow.getCreateBy()); @@ -704,7 +704,7 @@ public class TemplateApprovalServiceImpl implements TemplateApprovalService { todoTask.setCurrentNode(node.getNodeName()); todoTask.setDataType("模板审核"); todoTask.setDocumentNo(flow.getId()); - todoTask.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTask.setCreationDate(flow.getCreatedTime()); todoTask.setIsDelete(0); todoTask.setModelId(template.getId()); todoTask.setModelName(template.getTemplateName()); 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 11e1d86..623eea8 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 @@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter; 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.self_development.common.BusinessDatabase; import com.xdap.self_development.common.MyResponse; import com.xdap.self_development.controller.form.*; @@ -179,15 +180,14 @@ public class TemplateServiceImpl implements TemplateService { MyResponse problems = new MyResponse(false, new ArrayList<>(), new StringBuilder("已完成导入:无")); -// String targetDepartmentIds = bd.getBusinessDatabase() -// .eq("name", "研发总院") -// .doQueryFirst(XdapDepartments.class).getId(); -// -// List subDepartments = bd.getBusinessDatabase() -// .in("parent_id", targetDepartmentIds) -// .doQuery(XdapDepartments.class).stream().map(XdapDepartments::getName) -// .collect(Collectors.toList()); - List subDepartments = new ArrayList<>(); + String targetDepartmentIds = bd.getBusinessDatabase() + .eq("name", "研发总院") + .doQueryFirst(XdapDepartments.class).getId(); + + List subDepartments = bd.getBusinessDatabase() + .in("parent_id", targetDepartmentIds) + .doQuery(XdapDepartments.class).stream().map(XdapDepartments::getName) + .collect(Collectors.toList()); try (InputStream inputStream = file.getInputStream()){ EasyExcel.read( 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 2a00db3..3e68208 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,7 +4,7 @@ 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.common.BusinessDatabase; -import com.xdap.self_development.controller.request.TodoReturnRequest; +import com.xdap.self_development.controller.request.RejectTodoRequest; import com.xdap.self_development.controller.request.TodoTaskRequest; import com.xdap.self_development.controller.request.YcGetTodoTaskRequest; import com.xdap.self_development.domain.dto.EngineParamDetailDTO; @@ -15,14 +15,13 @@ import com.xdap.self_development.domain.enums.CurrentNodeEnum; import com.xdap.self_development.domain.enums.DistributeStatusEnum; import com.xdap.self_development.domain.pojo.*; import com.xdap.self_development.exception.CommonException; +import com.xdap.self_development.service.ActivitiProcessService; import com.xdap.self_development.service.DataEntryEngineModelService; -import com.xdap.self_development.service.EngineParamDetailService; import com.xdap.self_development.service.TodoTaskService; import com.xdap.self_development.service.XdapDeptUsersService; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.sql.Timestamp; @@ -44,7 +43,7 @@ import java.util.stream.Collectors; public class TodoTaskServiceImpl implements TodoTaskService { @Resource - private EngineParamDetailService engineParamDetailService; + private ActivitiProcessService activitiProcessService; @Resource private XdapDeptUsersService xdapDeptUsersService; @Resource @@ -229,71 +228,71 @@ public class TodoTaskServiceImpl implements TodoTaskService { */ @Override public void createResPerson(List paramDetailPojosAll, String userID) { - - if (ObjectUtils.isEmpty(paramDetailPojosAll)) { - throw new CommonException("未传入要变更的数据数据"); - } String modelId = paramDetailPojosAll.get(0).getEngineModelId(); + //TODO 分发责任人 //为参数更新责任人 for (EngineParamDetailDTO engineParamDetailDTO : paramDetailPojosAll) { bd.getBusinessDatabase() + .update("is_distributed_res", 1) .update("responsible_person_id", engineParamDetailDTO.getResPersonId()) - .rowid("id", engineParamDetailDTO.getId()) + .eq("id", engineParamDetailDTO.getId()) .doUpdate(EngineParamDetailPojo.class); } - //生成分解任务给责任人 参数根据机型+责任人分组 生成数据 - List dtoList = new ArrayList<>(paramDetailPojosAll.stream() - // 以responsiblePersonId组合作为key,元素本身作为value - .collect(Collectors.toMap(EngineParamDetailDTO::getResPersonId, - pojo -> pojo, - (existing, replacement) -> existing - )) - // 提取去重后的value集合 - .values()); + ArrayList todoTaskPojos = new ArrayList<>(); ArrayList taskPojos = new ArrayList<>(); + XdapUsers createdUser = xdapDeptUsersService.selectUserByID(userID); + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", modelId) + .doQueryFirst(DataEntryEngineModelPojo.class); - // 清除待办 - bd.getBusinessDatabase() - .eq("model_id", modelId) - .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) - .update("is_delete", 1) - .doUpdate(TodoTaskPojo.class); - - XdapUsers xdapUsersPojo = xdapDeptUsersService.selectUserByID(userID); - DataEntryEngineModelPojo modelPojo = dataEntryEngineModelService.selectBymodelId(modelId); - for (EngineParamDetailDTO engineParamDetailDTO : dtoList) { - //组装待办 + // 获取所有责任人ID组装待办 + Set resIds = paramDetailPojosAll.stream() + .map(EngineParamDetailDTO::getResPersonId) + .collect(Collectors.toSet()); + for (String resId : resIds) { + // 检查是否有当前责任人的待办,有就不增加代办 + List resTodos = bd.getBusinessDatabase() + .eq("model_id", modelId) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("is_delete", 0) + .eq("owner_id", resId) + .doQuery(TodoTaskPojo.class); + if (!resTodos.isEmpty()) continue; + // 没有就新增待办 TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); todoTaskPojo.setCreatedById(userID); todoTaskPojo.setDocumentNo(UUID.randomUUID().toString()); - todoTaskPojo.setProcessTitle(modelPojo.getModelName()+"-"+"分发参数填写人任务"); + todoTaskPojo.setProcessTitle(model.getModelName() + "-" + "分发参数填写人任务"); todoTaskPojo.setCurrentNode("待分解"); - todoTaskPojo.setCurrentProcessor(JSON.toJSONString(Collections.singletonList(engineParamDetailDTO.getResPersonId()))); + todoTaskPojo.setCurrentProcessor(JSON.toJSONString(Collections.singletonList(resId))); todoTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/); - todoTaskPojo.setModelName(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getModelName() : ""); + todoTaskPojo.setModelName(ObjectUtils.isNotEmpty(model) ? model.getModelName() : ""); todoTaskPojo.setModelId(modelId); todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); todoTaskPojo.setDataType(CurrentNodeEnum.JOBSPLIT.getDesc()); - todoTaskPojo.setVersionNumber(ObjectUtils.isNotEmpty(modelPojo) ? modelPojo.getVersionNumber() : 0); + todoTaskPojo.setVersionNumber(ObjectUtils.isNotEmpty(model) ? model.getVersionNumber() : 0); todoTaskPojo.setIsDelete(0); - todoTaskPojo.setOwnerId(engineParamDetailDTO.getResPersonId()); - todoTaskPojo.setCreatedBy(ObjectUtils.isNotEmpty(xdapUsersPojo) ? xdapUsersPojo.getUsername() : ""); + todoTaskPojo.setOwnerId(resId); + todoTaskPojo.setCreatedBy(ObjectUtils.isNotEmpty(createdUser) ? createdUser.getUsername() : ""); todoTaskPojos.add(todoTaskPojo); InitiatedTaskPojo initiatedTaskPojo = new InitiatedTaskPojo(); BeanUtils.copyProperties(todoTaskPojo, initiatedTaskPojo); - initiatedTaskPojo.setLastUpdatedBy(engineParamDetailDTO.getResPersonId()); + initiatedTaskPojo.setLastUpdatedBy(resId); taskPojos.add(initiatedTaskPojo); } bd.getBusinessDatabase().doBatchInsert(todoTaskPojos); bd.getBusinessDatabase().doBatchInsert(taskPojos); - List detailPojos = engineParamDetailService.selectByModelNewVersion(modelId); - List paramDetailPojos = detailPojos.stream() - .filter(x -> ObjectUtils.isEmpty(x.getResponsiblePersonId()) - && Objects.equals(x.getParameterSource(), "数据平台手工录入")) - .collect(Collectors.toList()); -// 机型的分发状态改为已分发 - if (ObjectUtils.isEmpty(paramDetailPojos)) { + + // 检查分发状态 + List toBeDistributedParams = bd.getBusinessDatabase() + .eq("engine_model_id", modelId) + .eq("major_version", model.getVersionNumber()) + .eq("is_distributed_res", 0) + .doQuery(EngineParamDetailPojo.class); + + // 机型的分发状态改为已分发 + if (ObjectUtils.isEmpty(toBeDistributedParams)) { DistributeStatusEnum byDesc = DistributeStatusEnum.getByDesc("已分发"); Integer status = byDesc != null ? byDesc.getCode() : null; bd.getBusinessDatabase() @@ -310,67 +309,87 @@ public class TodoTaskServiceImpl implements TodoTaskService { } } - /** - * 待办任务退回 - * - * @param todoReturnRequest 待办退回请求对象 - */ @Override - @Transactional - public void todoReturn(TodoReturnRequest todoReturnRequest) { - String todoTaskId = todoReturnRequest.getTodoTaskId(); - if (ObjectUtils.isEmpty(todoTaskId)) { - throw new CommonException("未传入单据"); + public void rejectTodo(RejectTodoRequest request) { + // TODO拒绝分发 + TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase() + .eq("id", request.getTodoId()) + .doQueryFirst(TodoTaskPojo.class); + if (ObjectUtils.isEmpty(todoTaskPojo)) { + throw new CommonException("待办任务不存在"); } - - List todoTaskPojos = bd.getBusinessDatabase() - .eq("id", todoTaskId) - .doQuery(TodoTaskPojo.class); - if (ObjectUtils.isEmpty(todoTaskPojos)) { - throw new CommonException("传入的单据查不到"); + DataEntryEngineModelPojo model = bd.getBusinessDatabase() + .eq("id", todoTaskPojo.getModelId()) + .doQueryFirst(DataEntryEngineModelPojo.class); + if (ObjectUtils.isEmpty(model)) { + throw new CommonException("机型不存在,请检查"); } - TodoTaskPojo todoTaskPojo1 = todoTaskPojos.get(0); - String modelID = todoReturnRequest.getModelID(); - //如果是填写人退回 把填写人的待办删除 则为该条责任人添加待办 并且待办创建人改为退回人 - if ("填写人退回".equals(todoReturnRequest.getSteps())) { + // 填写人拒绝 + if ((ObjectUtils.isNotEmpty(request.getFillerId())) + && (request.getResponsiblePersonId() == null || ObjectUtils.isEmpty(request.getResponsiblePersonId()))) { + // 填写人拒绝待办 bd.getBusinessDatabase() - .update("is_delete", 1) - .update("last_update_date", new Date()) - .eq("id", todoTaskId).doUpdate(TodoTaskPojo.class); - - XdapUsers xdapUsersPojo = xdapDeptUsersService.selectUserByID(todoReturnRequest.getUserID()); - - //组装待办 - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); - todoTaskPojo.setCreatedById(todoReturnRequest.getUserID()); - todoTaskPojo.setDocumentNo(UUID.randomUUID().toString()); - todoTaskPojo.setProcessTitle("分发责任人(填写人退回)"); - todoTaskPojo.setCurrentNode("待分解"); - todoTaskPojo.setStatusCode(null/*String.valueOf(ParamValueVersionEnum.DRAFT.getCode())*/); - todoTaskPojo.setModelName(todoTaskPojo1.getModelName()); - todoTaskPojo.setModelId(todoTaskPojo1.getModelId()); - todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); - todoTaskPojo.setDataType(CurrentNodeEnum.JOBSPLIT.getDesc()); - todoTaskPojo.setVersionNumber(todoTaskPojo1.getVersionNumber()); - todoTaskPojo.setIsDelete(0); - todoTaskPojo.setCurrentProcessor(JSON.toJSONString(Collections.singletonList(todoTaskPojo1.getCreatedById()))); - todoTaskPojo.setOwnerId(todoTaskPojo1.getCreatedById()); - todoTaskPojo.setCreatedBy(ObjectUtils.isNotEmpty(xdapUsersPojo) ? xdapUsersPojo.getUsername() : ""); - bd.getBusinessDatabase().doInsert(todoTaskPojo); - //把相关参数中的填写人退回 - List pojoList = engineParamDetailService.selectByModelNewVersion(modelID); - List pojos = pojoList.stream().filter(x -> x.getFilledBy().equals(todoReturnRequest.getUserID())) - .collect(Collectors.toList()); - - for (EngineParamDetailPojo pojo : pojos) { + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("filled_by", request.getFillerId()) + .update("is_distributed_filled", 0) + .update("filled_by", null) + .doUpdate(EngineParamDetailPojo.class); + // 检查责任人是否有责任人待办 + TodoTaskPojo resTodo = bd.getBusinessDatabase() + .eq("model_id", todoTaskPojo.getModelId()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .eq("owner_id", todoTaskPojo.getCreatedById()) + .doQueryFirst(TodoTaskPojo.class); + if (resTodo != null && resTodo.getIsDelete() == 1) { bd.getBusinessDatabase() - .update("filled_by", null) - .eq("id",pojo.getId()) - .doUpdate(pojo); + .eq("id", resTodo.getId()) + .update("is_delete", 0) + .doUpdate(TodoTaskPojo.class); + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("owner_id", todoTaskPojo.getOwnerId()) + .eq("document_no", todoTaskPojo.getDocumentNo()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .update("current_node", "待分解") + .update("last_update_date", new Date()) + .doUpdate(InitiatedTaskPojo.class); + bd.getBusinessDatabase() + .eq("model_id", model.getId()) + .eq("owner_id", todoTaskPojo.getOwnerId()) + .eq("document_no", todoTaskPojo.getDocumentNo()) + .eq("data_type", CurrentNodeEnum.JOBSPLIT.getDesc()) + .update("is_delete", 1) + .doUpdate(CompletedTaskPojo.class); } - } + // 责任人拒绝 + else if ((request.getFillerId() == null || ObjectUtils.isEmpty(request.getFillerId())) + && ObjectUtils.isNotEmpty(request.getResponsiblePersonId())) { + bd.getBusinessDatabase() + .eq("engine_model_id", model.getId()) + .eq("major_version", model.getVersionNumber()) + .eq("responsible_person_id", request.getResponsiblePersonId()) + .update("is_distributed_res", 0) + .update("responsible_person_id", null) + .update("is_distributed_filled", 0) + .update("filled_by", null) + .doUpdate(EngineParamDetailPojo.class); + DistributeStatusEnum byDesc = DistributeStatusEnum.getByDesc("部分分发"); + Integer status = byDesc != null ? byDesc.getCode() : null; + bd.getBusinessDatabase() + .eq("id", model.getId()) + .update("distribute_status", status) + .doUpdate(DataEntryEngineModelPojo.class); + } else { + throw new CommonException("参数错误"); + } + // 删除待办 + bd.getBusinessDatabase() + .eq("id", todoTaskPojo.getId()) + .update("is_delete", 1) + .doUpdate(TodoTaskPojo.class); } /**