代码优化 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 08:03:24 浏览: 27
这段代码可以进行以下优化:
1. 对于成功的情况没有返回值,建议增加一个返回值,以便更好地区分成功与失败。
2. 将一些常量值(如 "被处置消息无效!","消息已处置,重复处置无效!","非法处置:当前消息可选择的处置方式")提取为常量,方便维护和修改。
3. msg.getMsgId() 获取了两次,可以考虑将其存储在临时变量中,避免重复调用。
4. 对于多层嵌套的 if 语句,可以使用早期返回的方式来减少代码的嵌套深度,增加代码的可读性。
5. 将一些注释转换成函数名或者变量名,可以更加清晰地表达代码意图。
以下是优化后的代码:
```
private static final String MSG_INVALID = "被处置消息无效!";
private static final String MSG_DUPLICATE = "消息已处置,重复处置无效!";
private static final String MSG_ILLEGAL = "非法处置:当前消息可选择的处置方式";
public Result<?> operate(Operation operation) {
HlwExmMessage msg = messageService.queryMsgById(operation.getMsgId());
if (msg == null) {
return new Result<>(Status.ERROR, MSG_INVALID);
}
Integer msgId = msg.getMsgId();
if (msg.getOperateMsgId() != null) {
return new Result<>(Status.UN_ACCESS_OPERATION, MSG_DUPLICATE);
}
HlwExmMessage<DocOperateMsg> msg2 = messageService.queryDocToPhmMsg(msg.getTaskId());
Integer msgId2 = msg2 == null ? null : msg2.getMsgId();
if (!Objects.equals(msgId, 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, MSG_INVALID);
}
List<String> operations = msg.getOperations();
PhmOperation opCode = operation.getOperation();
if (!operations.contains(opCode.name())) {
return new Result<>(Status.ERROR, MSG_ILLEGAL + operations.toString());
}
return operate(operation, msg, opCode) ?
Result.SUCCESS :
new Result<>(Status.UN_ACCESS_OPERATION, "当次就诊已作废,处置失败!");
}
private boolean operate(Operation operation, HlwExmMessage msg, PhmOperation opCode) {
// 执行处置操作
return true;
}
```