问题修改v1.0

This commit is contained in:
zjh 2026-01-26 17:39:48 +08:00
parent dec6fdb710
commit 58a3f0b6e2
30 changed files with 623 additions and 485 deletions

View File

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

View File

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

View File

@ -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<AnalysisCommonParametersPojo> list = commonParameterService.getAnalysisCommonParameter(userId);
List<AnalysisCommonParameterInsertForm> list = commonParameterService.getAnalysisCommonParameter(userId);
return Response.ok().data(list);
}

View File

@ -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<EngineParamDetailPojo> engineParamDetailPojos,@RequestParam("userID") String currentUserId) {
public Response updateParamValue(
@NotEmpty(message = "参数详情列表不能为空") @RequestBody List<EngineParamDetailPojo> 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<EngineParamDetailPojo> engineParamDetailPojos,
@RequestParam(value = "userID") String userID) {
public Response updateToInsertFiledBy(
@NotEmpty(message = "参数详情列表不能为空") @RequestBody List<EngineParamDetailPojo> engineParamDetailPojos,
@NotBlank(message = "用户ID不能为空") @RequestParam(value = "userID") String userID
) {
engineParamDetailService.updateToInsertFiledBy(engineParamDetailPojos, userID);
return Response.ok().data("修改成功");
}

View File

@ -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<EngineParamDetailDTO> paramDetailPojos
, @RequestParam String userID){
public Response createResPerson(
@RequestBody List<EngineParamDetailDTO> 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();
}

View File

@ -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<String> modelName;
private List<String> plate;
private List<String> platform;
private List<String> series;
private List<String> projectName;
private List<String> projectNumber;
private List<String> emission;
private Long displacementMin;
private Long displacementMax;
private String combustionType;
private List<String> combustionType;
private String commonId;
@NotBlank(message = "创建者不能为空")
private String userId;

View File

@ -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<String> modelName;
private List<String> plate;
private List<String> platform;
private List<String> series;
private List<String> projectName;
private List<String> projectNumber;
private List<String> emission;
private Long displacementMin;
private Long displacementMax;
private String combustionType;
private List<String> combustionType;
@NotBlank(message = "创建者不能为空")
private String userId;

View File

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

View File

@ -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<EngineParamDetailDTO> paramDetailPojosAll;
@NotBlank(message = "用户ID不能为空")
private String userID;
}

View File

@ -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<String> subsystemParts;
/**
* 子系统多选

View File

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

View File

@ -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<ActivitiDataDTO> activitiDataDTOS;
private List<ActivitiDataDTO> activitiDataDTOS;
/**
* 流程节点列表
*/

View File

@ -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;
/**
* 是否分发填写人(01)
*/
private Integer isDistributedFilled;
/**
* 是否分发责任人(01)
*/
private Integer isDistributedRes;
}

View File

@ -53,7 +53,7 @@ public class AnalysisCommonParametersPojo extends MpaasBasePojo {
/**
* 排放
*/
private Long emission;
private String emission;
/**
* 最小排量
*/

View File

@ -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;
/**
* 产品型号全称
*/

View File

@ -65,6 +65,11 @@ public class EngineParamDetailPojo {
*/
private String responsiblePersonId;
/**
* 是否分发责任人(012不需要分发)
*/
private Integer isDistributedRes;
/**
* 填写部门
*/
@ -75,6 +80,11 @@ public class EngineParamDetailPojo {
*/
private String filledBy;
/**
* 是否分发填写人(012不需要分发)
*/
private Integer isDistributedFilled;
/**
* 创建人
*/

View File

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

View File

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

View File

@ -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<DataEntryEngineModelExc
}
batchInsert(modelPojos);
sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(modelPojos);
saveDataParamDetail(modelPojos, parameters);
}
@ -152,25 +152,12 @@ public class EngineModelListener implements ReadListener<DataEntryEngineModelExc
engineParamDetailPojo.setLastUpdatedBy("");
engineParamDetailPojo.setLastUpdateDate(Timestamp.valueOf(LocalDateTime.now()));
engineParamDetailPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
engineParamDetailPojo.setIsDistributedRes(Objects.equals(parameter.getParameterSource(), "数据平台手工录入") ? 0 : 2);
engineParamDetailPojo.setIsDistributedFilled(Objects.equals(parameter.getParameterSource(), "数据平台手工录入") ? 0 : 2);
engineParamDetailPojos.add(engineParamDetailPojo);
}
}
batchInsertParamDetail(engineParamDetailPojos);
}
public void batchInsertTodoTask(List<TodoTaskPojo> todoTaskPojos) {
sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(todoTaskPojos);
}
public void batchInsertParamDetail(List<EngineParamDetailPojo> engineParamDetailPojos) {
sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(engineParamDetailPojos);
}
public void batchInsert(List<DataEntryEngineModelPojo> modelPojos) {
sw.buildFromDatasource("xdap_app_223770822127386625").doBatchInsert(modelPojos);
}
}

View File

@ -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<EngineParamDetailPojo> list
List<EngineParamDetailPojo> list
);
void cancelProcess(
EngineReviewListPojo flow,

View File

@ -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<AnalysisCommonParametersPojo> getAnalysisCommonParameter(@NotBlank String userId);
List<AnalysisCommonParameterInsertForm> getAnalysisCommonParameter(@NotBlank String userId);
void insertAnalysisCommonParameter(@Valid AnalysisCommonParameterInsertForm form);

View File

@ -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<EngineParamDetailDTO> paramDetailPojos, String userID);
void todoReturn(TodoReturnRequest todoReturnRequest);
void rejectTodo(RejectTodoRequest request);
//---------------------------------玉柴调用接口--------------------------------
List<YcTodoTaskResultDTO> returnTodoTask(YcGetTodoTaskRequest ycGetTodoTaskRequest);

View File

@ -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<ActivitiDataDTO> activitiDataDTOS = new ArrayList<>();
List<ActivitiDataDTO> activitiDataDTOS = new ArrayList<>();
ArrayList<DataChangeCommentPojo> 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<EngineParamDetailPojo> paramList;
String modelId = approvalNodeRequest.getModelId();
DataEntryEngineModelPojo model = bd.getBusinessDatabase()
.eq("id", approvalNodeRequest.getModelId())
.doQueryFirst(DataEntryEngineModelPojo.class);
if (ObjectUtils.isEmpty(model)) {
throw new CommonException("机型不存在,请检查");
}
// TODO 检查是否填写完参数并发起审批
// 检查当前参数是否全部填写完成
List<EngineParamDetailPojo> 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("您在当前机型的参数未全部填写完成,请检查");
// 查询机型最新版本的参数过滤出操作为更新且由当前用户更新的参数
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的数据");
}
String engineModelId = approvalNodeRequest.getModelId();
// 查询旧的发动机型号信息
DataEntryEngineModelPojo modelPojoOld = dataEntryEngineModelService.selectBymodelId(engineModelId);
List<EngineParamDetailPojo> 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<EngineParamDetailPojo> 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<EngineParamDetailPojo> 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<EngineParamDetailPojo> list
List<EngineParamDetailPojo> 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,27 +600,43 @@ 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<EngineParamDetailPojo> oldDetails = bd.getBusinessDatabase()
.eq("engine_model_id", flow.getModelId())
.eq("major_version", versionNumber)
.eq("major_version", model.getVersionNumber())
.doQuery(EngineParamDetailPojo.class);
List<EngineParamDetailPojo> passDetail = bd.getBusinessDatabase()
.eq("approval_id", flow.getId())
.eq("operation", ParamOperationEnum.UPDATE)
.doQuery(EngineParamDetailPojo.class);
List<String> ids = passDetail.stream()
// 本次审核通过审核的参数id
List<String> ids = list.stream()
.map(EngineParamDetailPojo::getId)
.collect(Collectors.toList());
// 现版本未填写的参数
List<EngineParamDetailPojo> 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);
}
} else {
List<EngineParamDetailPojo> toInsert = new ArrayList<>();
for (EngineParamDetailPojo oldDetail : oldDetails) {
EngineParamDetailPojo engineParamDetailPojo = new EngineParamDetailPojo();
BeanUtils.copyProperties(oldDetail, engineParamDetailPojo
@ -600,21 +650,26 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
if (ids.contains(oldDetail.getId())) {
engineParamDetailPojo.setParameterValue(oldDetail.getMinorVersion());
}
engineParamDetailPojo.setMajorVersion(versionNumber + 1);
engineParamDetailPojo.setMajorVersion(model.getVersionNumber() + 1);
// 添加到待插入列表
list.add(engineParamDetailPojo);
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<EngineParamDetailPojo> allDetails = bd.getBusinessDatabase()
.eq("engine_model_id", flow.getModelId())
.eq("major_version", model.getVersionNumber())
.ne("is_distributed_res", 2)
.doQuery(EngineParamDetailPojo.class);
List<EngineParamDetailPojo> 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<String> 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<ActivitiDataDTO> activitiDataDTOS = new ArrayList<>();
List<ActivitiDataDTO> activitiDataDTOS = new ArrayList<>();
//通过审批ID找到审批中的参数 通过参数ID匹配参数变动说明
List<EngineParamDetailPojo> 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<FlowNode> flowNodes = new ArrayList<>();
EngineReviewListPojo flow = bd.getBusinessDatabase()
.eq("id", approvalId)
@ -1392,4 +1482,13 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
}
return joiner.toString();
}
private List<ActivitiDataDTO> sortValueChange(List<ActivitiDataDTO> changeList) {
return changeList.stream()
.sorted(Comparator
.comparing(ActivitiDataDTO::getSubsystemName, Collator.getInstance(Locale.CHINA))
.thenComparing(ActivitiDataDTO::getParameterName, Collator.getInstance(Locale.CHINA))
)
.collect(Collectors.toList());
}
}

View File

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

View File

@ -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<AnalysisCommonParametersPojo> getAnalysisCommonParameter(String userId) {
return bd.getBusinessDatabase()
public List<AnalysisCommonParameterInsertForm> getAnalysisCommonParameter(String userId) {
List<AnalysisCommonParametersPojo> list = bd.getBusinessDatabase()
.viewQueryMode(true)
.view("queryCommon")
.setVar("user_id", userId)
.doQuery(AnalysisCommonParametersPojo.class);
List<AnalysisCommonParameterInsertForm> 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);
}

View File

@ -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<String, List<EngineParamDetailDTO>> selectValueByMoreParam(EngineParamDetailRequest engineParamDetailRequest) {
public Map<String, List<EngineParamDetailDTO>> selectValueByMoreParam(EngineParamDetailRequest request) {
List<EngineParamDetailDTO> engineParamDetailDTOS = new ArrayList<>();
List<EngineParamDetailPojo> paramDetails = new ArrayList<>();
String engineModelID = engineParamDetailRequest.getEngineModelID();
List<String> 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<EngineParamDetailPojo> detailPojos = new ArrayList<>();
ArrayList<EngineParamDetailDTO> 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<ParameterPojo> parameters = bd.getBusinessDatabase()
.eq("id", detailPojo.getParameterId())
.doQuery(ParameterPojo.class);
unit = parameters.get(0).getUnit();
}
engineParamDetailDTO.setId(detailPojo.getId());
engineParamDetailDTO.setResPersonId(detailPojo.getResponsiblePersonId());
engineParamDetailDTO.setUnit(unit);
engineParamDetailDTO.setFilledBy(filledBy);
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.setApprovalId(detailPojo.getApprovalId());
engineParamDetailDTO.setFilledBy(ObjectUtils.isEmpty(filler) ? "" : filler.getUsername());
engineParamDetailDTO.setIsDistributedFilled(1);
}
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<EngineParamDetailDTO> 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<EngineParamDetailPojo> engineParamDetailPojos, String currentUserId) {
// 获取欲更新参数列表
List<String> detailIds = engineParamDetailPojos.stream()
.map(EngineParamDetailPojo::getId)
.collect(Collectors.toList());
List<EngineParamDetailPojo> details = bd.getBusinessDatabase()
.in("id", detailIds)
.doQuery(EngineParamDetailPojo.class);
// 转换参数详情为map
Map<String, EngineParamDetailPojo> 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<EngineParamDetailPojo> pojoList = selectByModelNewVersion(engineParamDetailPojo.getEngineModelId());
Stream<EngineParamDetailPojo> 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<EngineParamDetailPojo> 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<TodoTaskPojo> todoTaskPojos = new ArrayList<>();
ArrayList<InitiatedTaskPojo> 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<String> filledBys = engineParamDetailPojos.stream().map(EngineParamDetailPojo::getFilledBy).collect(Collectors.toSet());
Set<String> 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<EngineParamDetailPojo> detailPojos = selectByResId(userID);
List<EngineParamDetailPojo> 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<EngineParamDetailPojo> 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<ParameterPojo> selectAllByNewVersion() {
//读取已通过审核的版本 DRAFT(草稿)APPROVING审批中COMPLETE(已完成)RETURNED(已撤回)REJECTED(已拒绝)
List<TemplatePojo> templates =
bd.getBusinessDatabase()
//读取已通过审核的版本COMPLETE(已完成)
List<TemplatePojo> templates = bd.getBusinessDatabase()
.eq("status", "COMPLETE")
.doQuery(TemplatePojo.class);
if (ObjectUtils.isEmpty(templates)) {
throw new CommonException("未找到未找到已发布的参数模板");
}
//查找每个模板最新版本
Map<String, TemplatePojo> latestTemplateMap = templates.stream()
// 按模板ID分组
.collect(Collectors.groupingBy(
TemplatePojo::getTemplateName,
// 每组内按版本号降序取第一个最新版本
Collectors.collectingAndThen(
Collectors.maxBy(Comparator.comparingInt(TemplatePojo::getVersion)),
Optional::get
)
));
ArrayList<TemplatePojo> templatesMax = new ArrayList<>(latestTemplateMap.values());
List<String> strings = templatesMax.stream().map(TemplatePojo::getId).collect(Collectors.toList());
//查找最新模板关联的参数
List<TemplateAndParameterPojo> templateAndParameters =
bd.getBusinessDatabase()
.in("template_id", strings)
.doQuery(TemplateAndParameterPojo.class);
List<String> pIds = templateAndParameters.stream().map(TemplateAndParameterPojo::getParameterId).collect(Collectors.toList());
List<ParameterPojo> parameterList = bd.getBusinessDatabase()
//查找最新模板关联的参数
List<String> templateIds = templates.stream()
.map(TemplatePojo::getId)
.collect(Collectors.toList());
List<TemplateAndParameterPojo> templateAndParameters = bd.getBusinessDatabase()
.in("template_id", templateIds)
.doQuery(TemplateAndParameterPojo.class);
List<String> 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;
}
}

View File

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

View File

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

View File

@ -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<String> subDepartments = bd.getBusinessDatabase()
// .in("parent_id", targetDepartmentIds)
// .doQuery(XdapDepartments.class).stream().map(XdapDepartments::getName)
// .collect(Collectors.toList());
List<String> subDepartments = new ArrayList<>();
String targetDepartmentIds = bd.getBusinessDatabase()
.eq("name", "研发总院")
.doQueryFirst(XdapDepartments.class).getId();
List<String> subDepartments = bd.getBusinessDatabase()
.in("parent_id", targetDepartmentIds)
.doQuery(XdapDepartments.class).stream().map(XdapDepartments::getName)
.collect(Collectors.toList());
try (InputStream inputStream = file.getInputStream()){
EasyExcel.read(

View File

@ -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<EngineParamDetailDTO> 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<EngineParamDetailDTO> dtoList = new ArrayList<>(paramDetailPojosAll.stream()
// 以responsiblePersonId组合作为key元素本身作为value
.collect(Collectors.toMap(EngineParamDetailDTO::getResPersonId,
pojo -> pojo,
(existing, replacement) -> existing
))
// 提取去重后的value集合
.values());
ArrayList<TodoTaskPojo> todoTaskPojos = new ArrayList<>();
ArrayList<InitiatedTaskPojo> taskPojos = new ArrayList<>();
XdapUsers createdUser = xdapDeptUsersService.selectUserByID(userID);
DataEntryEngineModelPojo model = bd.getBusinessDatabase()
.eq("id", modelId)
.doQueryFirst(DataEntryEngineModelPojo.class);
// 清除待办
bd.getBusinessDatabase()
// 获取所有责任人ID组装待办
Set<String> resIds = paramDetailPojosAll.stream()
.map(EngineParamDetailDTO::getResPersonId)
.collect(Collectors.toSet());
for (String resId : resIds) {
// 检查是否有当前责任人的待办有就不增加代办
List<TodoTaskPojo> resTodos = 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) {
//组装待办
.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<EngineParamDetailPojo> detailPojos = engineParamDetailService.selectByModelNewVersion(modelId);
List<EngineParamDetailPojo> paramDetailPojos = detailPojos.stream()
.filter(x -> ObjectUtils.isEmpty(x.getResponsiblePersonId())
&& Objects.equals(x.getParameterSource(), "数据平台手工录入"))
.collect(Collectors.toList());
// 机型的分发状态改为已分发
if (ObjectUtils.isEmpty(paramDetailPojos)) {
// 检查分发状态
List<EngineParamDetailPojo> 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<TodoTaskPojo> 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())) {
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<EngineParamDetailPojo> pojoList = engineParamDetailService.selectByModelNewVersion(modelID);
List<EngineParamDetailPojo> pojos = pojoList.stream().filter(x -> x.getFilledBy().equals(todoReturnRequest.getUserID()))
.collect(Collectors.toList());
for (EngineParamDetailPojo pojo : pojos) {
// 填写人拒绝
if ((ObjectUtils.isNotEmpty(request.getFillerId()))
&& (request.getResponsiblePersonId() == null || ObjectUtils.isEmpty(request.getResponsiblePersonId()))) {
// 填写人拒绝待办
bd.getBusinessDatabase()
.eq("engine_model_id", model.getId())
.eq("major_version", model.getVersionNumber())
.eq("filled_by", request.getFillerId())
.update("is_distributed_filled", 0)
.update("filled_by", null)
.eq("id",pojo.getId())
.doUpdate(pojo);
.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()
.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);
}
/**