feat: 佛山三院科室和用户推送信息处理同步
parent
a3358a509a
commit
a3f4dd0da3
@ -0,0 +1,159 @@
|
||||
package com.docus.server.archive.controller;
|
||||
|
||||
import com.docus.infrastructure.core.exception.BaseException;
|
||||
import com.docus.infrastructure.web.api.ResultCode;
|
||||
import com.docus.server.archive.dto.Message;
|
||||
import com.docus.server.archive.dto.MessageResponse;
|
||||
import com.docus.server.archive.service.FoShanThreeHospDeptInfoSyncService;
|
||||
import com.docus.server.archive.service.FoShanThreeHospUserInfoSyncService;
|
||||
import com.docus.server.archive.utils.XmlUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
/**
|
||||
* @author YongBin Wen
|
||||
* @date 2024/7/10 9:35
|
||||
*/
|
||||
@Slf4j
|
||||
@RequestMapping("/fssy-basic-receive")
|
||||
@Api(tags = "佛山三院基础信息统一消息转发接收接口")
|
||||
@RestController
|
||||
public class FoShanThreeHospUnifyMessageReceiveController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FoShanThreeHospUserInfoSyncService userInfoSyncService;
|
||||
|
||||
@Autowired
|
||||
private FoShanThreeHospDeptInfoSyncService deptInfoSyncService;
|
||||
|
||||
|
||||
@PostMapping("/user/do")
|
||||
@ApiOperation("佛山三院用户信息推送接收")
|
||||
public MessageResponse userSyncByUnifyMessageReceive(@RequestBody Message message) {
|
||||
log.info("佛山三院用户信息推送接收:{}", message);
|
||||
String source = "unknown";
|
||||
String msgId = "unknown";
|
||||
try {
|
||||
XmlUtil xmlUtil = XmlUtil.of(message.getMessage());
|
||||
Node sourceNode = xmlUtil.getNode("/Request/Header/SourceSystem");
|
||||
Node msgIdNode = xmlUtil.getNode("/Request/Header/MessageID");
|
||||
if (sourceNode != null) {
|
||||
source = sourceNode.getTextContent();
|
||||
}
|
||||
if (msgIdNode != null) {
|
||||
msgId = msgIdNode.getTextContent();
|
||||
}
|
||||
userInfoSyncService.syncByUnifyMessageReceive(message.getMessage());
|
||||
return new MessageResponse(ResultCode.SUCCESS.getCode(), userSuccess(source, msgId));
|
||||
} catch (BaseException baseException) {
|
||||
log.error(baseException.getMessage(), baseException);
|
||||
// 业务异常,不希望重试,直接消息返回错误
|
||||
MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), userFail(source, msgId, baseException.getMessage()));
|
||||
response.setRetry(0);
|
||||
return response;
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage(), ex);
|
||||
// 不可知的错误,希望重试
|
||||
MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), userFail(source, msgId, "系统错误"));
|
||||
response.setRetry(1);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/dept/do")
|
||||
@ApiOperation("佛山三院科室信息推送接收")
|
||||
public MessageResponse deptSyncByUnifyMessageReceive(@RequestBody Message message) {
|
||||
log.info("佛山三院科室信息推送接收:{}", message);
|
||||
String source = "unknown";
|
||||
String msgId = "unknown";
|
||||
try {
|
||||
XmlUtil xmlUtil = XmlUtil.of(message.getMessage());
|
||||
Node sourceNode = xmlUtil.getNode("/Request/Header/SourceSystem");
|
||||
Node msgIdNode = xmlUtil.getNode("/Request/Header/MessageID");
|
||||
if (sourceNode != null) {
|
||||
source = sourceNode.getTextContent();
|
||||
}
|
||||
if (msgIdNode != null) {
|
||||
msgId = msgIdNode.getTextContent();
|
||||
}
|
||||
deptInfoSyncService.syncByUnifyMessageReceive(message.getMessage());
|
||||
return new MessageResponse(ResultCode.SUCCESS.getCode(), deptSuccess(source, msgId));
|
||||
} catch (BaseException baseException) {
|
||||
log.error(baseException.getMessage(), baseException);
|
||||
// 业务异常,不希望重试,直接消息返回错误
|
||||
MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), deptFail(source, msgId, baseException.getMessage()));
|
||||
response.setRetry(0);
|
||||
return response;
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage(), ex);
|
||||
// 不可知的错误,希望重试
|
||||
MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), deptFail(source, msgId, "系统错误"));
|
||||
response.setRetry(1);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String userSuccess(String source, String msgId) {
|
||||
return "<Response>\n" +
|
||||
" <Header>\n" +
|
||||
" <SourceSystem>" + source + "</SourceSystem>\n" +
|
||||
" <MessageID>" + msgId + "</MessageID>\n" +
|
||||
" </Header>\n" +
|
||||
" <Body>\n" +
|
||||
" <ResultCode>AA</ResultCode>\n" +
|
||||
" <ResultContent>成功</ResultContent>\n" +
|
||||
" </Body>\n" +
|
||||
"</Response>";
|
||||
|
||||
}
|
||||
|
||||
private String userFail(String source, String msgId, String message) {
|
||||
return "<Response>\n" +
|
||||
" <Header>\n" +
|
||||
" <SourceSystem>" + source + "</SourceSystem>\n" +
|
||||
" <MessageID>" + msgId + "</MessageID>\n" +
|
||||
" </Header>\n" +
|
||||
" <Body>\n" +
|
||||
" <ResultCode>AE</ResultCode>\n" +
|
||||
" <ResultContent>" + message + "</ResultContent>\n" +
|
||||
" </Body>\n" +
|
||||
"</Response>";
|
||||
}
|
||||
|
||||
private String deptSuccess(String source, String msgId) {
|
||||
return "<Response>\n" +
|
||||
" <Header>\n" +
|
||||
" <SourceSystem>" + source + "</SourceSystem>\n" +
|
||||
" <MessageID>" + msgId + "</MessageID>\n" +
|
||||
" </Header>\n" +
|
||||
" <Body>\n" +
|
||||
" <ResultCode>AA</ResultCode>\n" +
|
||||
" <ResultContent>成功</ResultContent>\n" +
|
||||
" </Body>\n" +
|
||||
"</Response>";
|
||||
}
|
||||
|
||||
private String deptFail(String source, String msgId, String message) {
|
||||
return "<Response>\n" +
|
||||
" <Header>\n" +
|
||||
" <SourceSystem>" + source + "</SourceSystem>\n" +
|
||||
" <MessageID>" + msgId + "</MessageID>\n" +
|
||||
" </Header>\n" +
|
||||
" <Body>\n" +
|
||||
" <ResultCode>AE</ResultCode>\n" +
|
||||
" <ResultContent>" + message + "</ResultContent>\n" +
|
||||
" </Body>\n" +
|
||||
"</Response>";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.docus.server.archive.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author wyb
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class Message {
|
||||
private String method;
|
||||
private String message;
|
||||
|
||||
public Message() {
|
||||
}
|
||||
|
||||
public Message(String method, String message) {
|
||||
this.method = method;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Message{" +
|
||||
"method='" + method + '\'' +
|
||||
", message='" + message + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.docus.server.archive.service;
|
||||
|
||||
/**
|
||||
* 科室同步服务
|
||||
*
|
||||
* @author YongBin Wen
|
||||
* @date 2024/3/27 16:25
|
||||
*/
|
||||
public interface FoShanThreeHospDeptInfoSyncService {
|
||||
|
||||
void syncByUnifyMessageReceive(String message);
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.docus.server.archive.service;
|
||||
|
||||
/**
|
||||
* 用户同步服务
|
||||
*
|
||||
* @author YongBin Wen
|
||||
* @date 2024/3/27 16:25
|
||||
*/
|
||||
public interface FoShanThreeHospUserInfoSyncService {
|
||||
|
||||
void syncByUnifyMessageReceive(String message);
|
||||
}
|
Loading…
Reference in New Issue