代码优化 public Result phmOperate(Operation<PhmOperation,PhmCause> operation) { HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId()); if (msg!=null){ if (msg.getOperateMsgId()!=null){ return new Result<>(Status.UN_ACCESS_OPERATION,"消息已处置,重复处置无效!"); } HlwExmMessage<DocOperateMsg> msg2 = messageService.queryDocToPhmMsg(msg.getTaskId()); Integer msgId2 = msg2==null?null:msg2.getMsgId(); if (!Objects.equals(msg.getMsgId(),msgId2)){ //当前被处置消息与任务最后一条消息不是同一条消息, //原因:第一次审查通过后,药师正准备提交审方结果时,医生重新修改医嘱提交,造成药师审核的医嘱信息已过期。 // 最终会形成一个审方任务干预记录中有两个及以上药师审核通过,也有可能药师不通过,造成审方流程错乱 return new Result(Status.UN_ACCESS_OPERATION,"被处置消息已过期,处置无效,医生已修改医嘱,请刷新任务!"); } Integer forward = msg.getForward(); if (HlwExmMessage.FORWARD_DOC_TO_PHM.equals(forward)){ List<String> operations = msg.getOperations(); //处置代码 PhmOperation opCode = operation.getOperation(); if (operations.contains(opCode.name())){//校验操作是否合法。每个消息可处置方式不同: return operate(operation, msg, opCode)? Result.SUCCESS: new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!"); }else { return new Result<>(Status.ERROR,"非法处置:当前消息可选择的处置方式"+operations.toString()); } } } return new Result<>(Status.ERROR,"被处置消息无效!"); }
时间: 2023-12-10 16:03:24 浏览: 29
可以考虑对代码进行以下优化:
1. 使用早期返回,避免嵌套过深
将代码中的嵌套if语句改为使用早期返回,可以减少代码的嵌套深度,提高代码可读性。
```java
public Result phmOperate(Operation<PhmOperation,PhmCause> operation) {
HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId());
if (msg == null) {
return new Result<>(Status.ERROR, "被处置消息无效!");
}
if (msg.getOperateMsgId() != null) {
return new Result<>(Status.UN_ACCESS_OPERATION, "消息已处置,重复处置无效!");
}
HlwExmMessage<DocOperateMsg> msg2 = messageService.queryDocToPhmMsg(msg.getTaskId());
Integer msgId2 = msg2 == null ? null : msg2.getMsgId();
if (!Objects.equals(msg.getMsgId(), msgId2)) {
return new Result(Status.UN_ACCESS_OPERATION, "被处置消息已过期,处置无效,医生已修改医嘱,请刷新任务!");
}
Integer forward = msg.getForward();
if (!HlwExmMessage.FORWARD_DOC_TO_PHM.equals(forward)) {
return new Result<>(Status.ERROR, "被处置消息无效!");
}
List<String> operations = msg.getOperations();
PhmOperation opCode = operation.getOperation();
if (!operations.contains(opCode.name())) {
return new Result<>(Status.ERROR, "非法处置:当前消息可选择的处置方式" + operations.toString());
}
return operate(operation, msg, opCode) ? Result.SUCCESS : new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!");
}
```
2. 封装判断逻辑
将判断消息是否有效、是否已被处理、是否过期等逻辑封装为一个方法,提高代码可读性。
```java
private boolean isValidMsg(HlwExmMessage msg) {
if (msg == null) {
return false;
}
if (msg.getOperateMsgId() != null) {
return false;
}
HlwExmMessage<DocOperateMsg> msg2 = messageService.queryDocToPhmMsg(msg.getTaskId());
Integer msgId2 = msg2 == null ? null : msg2.getMsgId();
if (!Objects.equals(msg.getMsgId(), msgId2)) {
return false;
}
Integer forward = msg.getForward();
if (!HlwExmMessage.FORWARD_DOC_TO_PHM.equals(forward)) {
return false;
}
return true;
}
public Result phmOperate(Operation<PhmOperation,PhmCause> operation) {
HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId());
if (!isValidMsg(msg)) {
return new Result<>(Status.ERROR, "被处置消息无效!");
}
List<String> operations = msg.getOperations();
PhmOperation opCode = operation.getOperation();
if (!operations.contains(opCode.name())) {
return new Result<>(Status.ERROR, "非法处置:当前消息可选择的处置方式" + operations.toString());
}
return operate(operation, msg, opCode) ? Result.SUCCESS : new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!");
}
```
3. 方法命名规范化
为了代码的可维护性,建议将方法命名规范化,比如将phmOperate改为operatePhm。
```java
private boolean isValidMsg(HlwExmMessage msg) {
...
}
public Result operatePhm(Operation<PhmOperation,PhmCause> operation) {
HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId());
if (!isValidMsg(msg)) {
return new Result<>(Status.ERROR, "被处置消息无效!");
}
List<String> operations = msg.getOperations();
PhmOperation opCode = operation.getOperation();
if (!operations.contains(opCode.name())) {
return new Result<>(Status.ERROR, "非法处置:当前消息可选择的处置方式" + operations.toString());
}
return operate(operation, msg, opCode) ? Result.SUCCESS : new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!");
}
```