顺德人医用户接收,webservice
parent
d32750ed77
commit
2e846b93a2
@ -0,0 +1,16 @@
|
||||
package com.docus.server.collection.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 用户同步配置
|
||||
* @author wyb
|
||||
*/
|
||||
@Data
|
||||
@Component
|
||||
public class UserSyncConfig {
|
||||
@Value("${docus.user.defpwd:}")
|
||||
private String password;
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package com.docus.server.collection.entity;
|
||||
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="PowerUser对象", description="用户表")
|
||||
public class PowerUser implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty(value = "登陆名")
|
||||
private String userName;
|
||||
|
||||
@ApiModelProperty(value = "用户密码")
|
||||
private String userPwd;
|
||||
|
||||
@ApiModelProperty(value = "性别 0 男 1 女")
|
||||
private Integer userSex;
|
||||
|
||||
@ApiModelProperty(value = "年龄")
|
||||
private Integer userAge;
|
||||
|
||||
@ApiModelProperty(value = "电话")
|
||||
private String userTel;
|
||||
|
||||
@ApiModelProperty(value = "邮箱")
|
||||
private String userEmail;
|
||||
|
||||
@ApiModelProperty(value = "微信信息")
|
||||
private String wxBank;
|
||||
|
||||
@ApiModelProperty(value = "职位")
|
||||
private String userPosition;
|
||||
|
||||
@ApiModelProperty(value = "角色")
|
||||
private Long roleId;
|
||||
|
||||
@ApiModelProperty(value = "部门id")
|
||||
private String deptId;
|
||||
|
||||
@ApiModelProperty(value = "是否有效")
|
||||
private Integer effective;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createDate;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String creater;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateDate;
|
||||
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updater;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "登录标志 默认为0为未登录 1登录")
|
||||
private Integer loginFlag;
|
||||
|
||||
@ApiModelProperty(value = "用户名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "所属科室代码 多个以,分隔")
|
||||
private String deptCode;
|
||||
|
||||
@ApiModelProperty(value = "权限科室 拥有对科室查阅权限")
|
||||
private String powerDept;
|
||||
|
||||
@ApiModelProperty(value = "权限 拥有对主管医生查阅权限")
|
||||
private String powerAttending;
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package com.docus.server.collection.mapper;
|
||||
|
||||
import com.docus.server.collection.dto.UserModifyParam;
|
||||
import com.docus.server.collection.entity.PowerUser;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户表 mapper
|
||||
* </p>
|
||||
*
|
||||
* @author wen yongbin
|
||||
* @since 2023年2月25日22:28:58
|
||||
*/
|
||||
public interface PowerUserMapper {
|
||||
|
||||
/**
|
||||
* 根据用户工号查询用户信息
|
||||
* @param userName 用户工号
|
||||
* @return 用户信息
|
||||
*/
|
||||
PowerUser getUserByUserName(@Param("userName") String userName);
|
||||
|
||||
/**
|
||||
* 更新用户信息
|
||||
* @param userModifyParam 用户操作参数
|
||||
* @return 数据库更新信息
|
||||
*/
|
||||
int updateUser(@Param("user") UserModifyParam userModifyParam);
|
||||
|
||||
/**
|
||||
* 添加新用户
|
||||
* @param userModifyParam 用户操作参数
|
||||
* @return 数据库添加信息
|
||||
*/
|
||||
int addUser(@Param("user") UserModifyParam userModifyParam);
|
||||
|
||||
/**
|
||||
* 根据用户工号删除用户信息
|
||||
* @param userName 用户工号
|
||||
* @return 数据库删除信息
|
||||
*/
|
||||
int delUserByUserName(@Param("userName") String userName);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.docus.server.collection.service;
|
||||
|
||||
import com.docus.server.collection.dto.UserDto;
|
||||
|
||||
/**
|
||||
* 用户服务
|
||||
*/
|
||||
public interface IPowerUserService {
|
||||
/**
|
||||
* 用户注册
|
||||
*
|
||||
* @param userDto 用户注册参数
|
||||
* @return 处理结果
|
||||
*/
|
||||
boolean register(UserDto userDto);
|
||||
|
||||
/**
|
||||
* 根据用户工号删除用户
|
||||
*
|
||||
* @param userName 用户工号
|
||||
* @return 删除结果
|
||||
*/
|
||||
boolean delUserByUserName(String userName);
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.docus.server.collection.service.impl;
|
||||
|
||||
import com.docus.core.util.Func;
|
||||
import com.docus.infrastructure.redis.service.IdService;
|
||||
import com.docus.server.collection.config.UserSyncConfig;
|
||||
import com.docus.server.collection.dto.UserDto;
|
||||
import com.docus.server.collection.dto.UserModifyParam;
|
||||
import com.docus.server.collection.entity.PowerUser;
|
||||
import com.docus.server.collection.mapper.PowerUserMapper;
|
||||
import com.docus.server.collection.service.IPowerUserService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 用户服务实现
|
||||
*
|
||||
* @author wyb
|
||||
*/
|
||||
@Service
|
||||
public class PowerUserServiceImpl implements IPowerUserService {
|
||||
@Resource
|
||||
private PowerUserMapper powerUserMapper;
|
||||
@Resource
|
||||
private IdService idService;
|
||||
@Resource
|
||||
private UserSyncConfig syncConfig;
|
||||
|
||||
@Override
|
||||
public boolean register(UserDto userDto) {
|
||||
PowerUser powerUser = powerUserMapper.getUserByUserName(userDto.getUserName());
|
||||
UserModifyParam userModifyParam = userDto.transUserAddParam();
|
||||
if (Func.isEmpty(powerUser)) {
|
||||
long userId = idService.getDateSeq();
|
||||
userModifyParam.setUserId(userId);
|
||||
userModifyParam.setUserPwd(syncConfig.getPassword());
|
||||
powerUserMapper.addUser(userModifyParam);
|
||||
return true;
|
||||
}
|
||||
userModifyParam.setUserId(powerUser.getUserId());
|
||||
powerUserMapper.updateUser(userModifyParam);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean delUserByUserName(String userName) {
|
||||
PowerUser powerUser = powerUserMapper.getUserByUserName(userName);
|
||||
if (Func.isEmpty(powerUser)) {
|
||||
return true;
|
||||
}
|
||||
powerUserMapper.delUserByUserName(userName);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.docus.server.collection.util;
|
||||
|
||||
import com.docus.infrastructure.redis.service.IdService;
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
@Data
|
||||
public class IdUtil {
|
||||
/**
|
||||
* 得到一个标准的 8-4-4-4-12 UUID
|
||||
* @return 标准的 8-4-4-4-12 UUID
|
||||
*/
|
||||
public static String standardUUID(){
|
||||
ThreadLocalRandom random = ThreadLocalRandom.current();
|
||||
return (new UUID(random.nextLong(), random.nextLong())).toString();
|
||||
}
|
||||
|
||||
}
|
@ -1,26 +1,193 @@
|
||||
package com.docus.server.collection.webservice.impl;
|
||||
|
||||
import com.docus.core.util.DateUtil;
|
||||
import com.docus.core.util.Func;
|
||||
import com.docus.infrastructure.core.exception.BaseException;
|
||||
import com.docus.server.collection.service.IPowerUserService;
|
||||
import com.docus.server.collection.util.IdUtil;
|
||||
import com.docus.server.collection.util.XmlUtil;
|
||||
import com.docus.server.collection.webservice.IUserServer;
|
||||
import com.docus.server.collection.dto.UserDto;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.jws.WebService;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Fang Ruichuan
|
||||
* @date 2022-11-14 19:08
|
||||
* @author wen yongbin
|
||||
* @date 2023年2月25日21:56:33
|
||||
*/
|
||||
@Service
|
||||
@WebService
|
||||
@Slf4j
|
||||
public class UserServerImpl implements IUserServer {
|
||||
|
||||
@Resource
|
||||
IPowerUserService iPowerUserService;
|
||||
|
||||
@Override
|
||||
public UserDto getUser(Long id) {
|
||||
return UserDto.builder()
|
||||
.id(id)
|
||||
.address("上海市浦东新区")
|
||||
.age(25)
|
||||
.name("laJi").build();
|
||||
public String userModify(String receiveUser) {
|
||||
log.info("新增/修改用户数据:{}", receiveUser);
|
||||
boolean registerResult = false;
|
||||
UserDto userDto;
|
||||
String msgId = "";
|
||||
String receiver = "";
|
||||
try {
|
||||
userDto = strToUserDto(receiveUser);
|
||||
msgId = userDto.getMessageId();
|
||||
receiver = userDto.getReceiver();
|
||||
} catch (BaseException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage(), e);
|
||||
return failedMessage(e.getMessage(), msgId, receiver);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage(), e);
|
||||
return failedMessage("消息解析失败!", msgId, receiver);
|
||||
}
|
||||
try {
|
||||
String operateType = userDto.getOperateType();
|
||||
String delType = "D";
|
||||
// 判断操作类型
|
||||
if (Func.isNotEmpty(operateType) && operateType.contains(delType)) {
|
||||
registerResult = iPowerUserService.delUserByUserName(userDto.getUserName());
|
||||
} else {
|
||||
registerResult = iPowerUserService.register(userDto);
|
||||
}
|
||||
} catch (BaseException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage(), e);
|
||||
return failedMessage(e.getMessage(), msgId, receiver);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
if (registerResult) {
|
||||
return successMessage("操作成功!", msgId, receiver);
|
||||
}
|
||||
return failedMessage("系统出错啦!", msgId, receiver);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 接收用户参数解析 UserDto参数
|
||||
*
|
||||
* @param receiveUser 接收到的用户参数
|
||||
* @return UserDto
|
||||
*/
|
||||
public UserDto strToUserDto(String receiveUser) {
|
||||
UserDto userDto = new UserDto();
|
||||
XmlUtil xmlParseUtil = XmlUtil.of(receiveUser);
|
||||
Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension");
|
||||
userDto.setMessageId(msgIdNode.getNodeValue());
|
||||
Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension");
|
||||
userDto.setReceiver(receiverNode.getNodeValue());
|
||||
Node operateTypeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/@operateType");
|
||||
userDto.setOperateType(operateTypeNode.getNodeValue());
|
||||
Node employeeCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/EMPL_CODE/@value");
|
||||
userDto.setUserName(employeeCodeNode.getNodeValue());
|
||||
Node employeeNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/EMPL_NAME/@value");
|
||||
userDto.setName(employeeNameNode.getNodeValue());
|
||||
Node deptCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_CODE/@value");
|
||||
userDto.setDeptId(deptCodeNode.getNodeValue());
|
||||
Node positionNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/POSI_NAME/@value");
|
||||
userDto.setPosition(positionNode.getNodeValue());
|
||||
Node authorIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/id/item/@extension");
|
||||
userDto.setAuthorId(authorIdNode.getNodeValue());
|
||||
Node authorNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/assignedPerson/name/item/part/@value");
|
||||
userDto.setAuthorName(authorNameNode.getNodeValue());
|
||||
userDto.setRoleId(0L);
|
||||
return userDto;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message 成功消息提示
|
||||
* @param msgId 消息id
|
||||
* @param receiver 接收方
|
||||
* @return 成功消息
|
||||
*/
|
||||
private String successMessage(String message, String msgId, String receiver) {
|
||||
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
|
||||
return "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
|
||||
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI\n" +
|
||||
"_IN000002UV01.xsd\">\n" +
|
||||
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
|
||||
"\t<creationTime value=\"" + createTime + "\"/>\n" +
|
||||
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>\n" +
|
||||
"\t<processingCode code=\"P\"/>\n" +
|
||||
"\t<processingModeCode/>\n" +
|
||||
"\t<acceptAckCode code=\"AL\"/>\n" +
|
||||
"\t<receiver typeCode=\"RCV\">\n" +
|
||||
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
|
||||
"\t\t\t<id>\n" +
|
||||
"\t\t\t\t<item extension=\"MDM\"/>\n" +
|
||||
"\t\t\t</id>\n" +
|
||||
"\t\t</device>\n" +
|
||||
"\t</receiver>\n" +
|
||||
"\t<sender typeCode=\"SND\">\n" +
|
||||
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
|
||||
"\t\t\t<id>\n" +
|
||||
"\t\t\t\t<item extension=\"" + receiver + "\"/>\n" +
|
||||
"\t\t\t</id>\n" +
|
||||
"\t\t</device>\n" +
|
||||
"\t</sender>\n" +
|
||||
"\t<acknowledgement typeCode=\"AA\">\n" +
|
||||
"\t\t<targetMessage>\n" +
|
||||
"\t\t\t<id extension=\"" + msgId + "\"/>\n" +
|
||||
"\t\t</targetMessage>\n" +
|
||||
"\t\t<acknowledgementDetail>\n" +
|
||||
"\t\t\t<text value=\"" + message + "\"/>\n" +
|
||||
"\t\t</acknowledgementDetail>\n" +
|
||||
"\t</acknowledgement>\n" +
|
||||
"</MCCI_IN000002UV01>";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message 失败消息提示
|
||||
* @param msgId 消息id
|
||||
* @param receiver 接收方
|
||||
* @return 失败消息
|
||||
*/
|
||||
private String failedMessage(String message, String msgId, String receiver) {
|
||||
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
|
||||
return "<RCMR_IN000030UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
|
||||
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/RCMR\n" +
|
||||
"_IN000030UV01.xsd\">\n" +
|
||||
"\n" +
|
||||
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
|
||||
"\t<creationTime value=\"" + createTime + "\"/>\n" +
|
||||
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"RCMR_IN000030UV01\"/>\n" +
|
||||
"\t<processingCode code=\"P\"/>\n" +
|
||||
"\t<processingModeCode/>\n" +
|
||||
"\t<acceptAckCode code=\"AL\"/>\n" +
|
||||
"\t<receiver typeCode=\"RCV\">\n" +
|
||||
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
|
||||
"\t\t\t<id>\n" +
|
||||
"\t\t\t\t<item extension=\"MDM\"/>\n" +
|
||||
"\t\t\t</id>\n" +
|
||||
"\t\t</device>\n" +
|
||||
"\t</receiver>\n" +
|
||||
"\t<sender typeCode=\"SND\">\n" +
|
||||
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
|
||||
"\t\t\t<id>\n" +
|
||||
"\t\t\t\t<item extension=\"" + receiver + "\"/>\n" +
|
||||
"\t\t\t</id>\n" +
|
||||
"\t\t</device>\n" +
|
||||
"\t</sender>\n" +
|
||||
"\t<acknowledgement typeCode=\"AE\">\n" +
|
||||
"\t\t<targetMessage>\n" +
|
||||
"\t\t\t<id extension=\"" + msgId + "\"/>\n" +
|
||||
"\t\t</targetMessage>\n" +
|
||||
"\t\t<acknowledgementDetail>\n" +
|
||||
"\t\t\t<text value=\"" + message + "\"/>\n" +
|
||||
"\t\t</acknowledgementDetail>\n" +
|
||||
"\t</acknowledgement>\n" +
|
||||
"</RCMR_IN000030UV01>\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.docus.server.collection.mapper.PowerUserMapper">
|
||||
<insert id="addUser">
|
||||
INSERT INTO `docus_system`.`power_user`(`user_id`,
|
||||
`user_name`,
|
||||
`name`,
|
||||
`user_pwd`,
|
||||
`user_position`,
|
||||
`role_id`,
|
||||
`dept_id`,
|
||||
`create_date`,
|
||||
`creater`,
|
||||
`update_date`,
|
||||
`updater`)
|
||||
VALUES (#{user.userId},#{user.userName},#{user.name},#{user.userPwd},#{user.position},#{user.roleId}
|
||||
,#{user.deptId},now(),#{user.authorName},now(),#{user.authorName})
|
||||
</insert>
|
||||
<update id="updateUser">
|
||||
update `docus_system`.`power_user` set
|
||||
`updater`=#{user.authorName},
|
||||
`dept_id`=#{user.deptId},
|
||||
`user_position`=#{user.position},
|
||||
`name`=#{user.name},
|
||||
`update_date`=now()
|
||||
where `user_id`=#{user.userId}
|
||||
</update>
|
||||
<delete id="delUserByUserName">
|
||||
delete from `docus_system`.`power_user` where `user_name` = #{userName}
|
||||
</delete>
|
||||
|
||||
<select id="getUserByUserName" resultType="com.docus.server.collection.entity.PowerUser">
|
||||
SELECT `user_id`,`user_name`,`user_pwd` FROM `docus_system`.`power_user`
|
||||
WHERE `user_name` = #{userName} LIMIT 1
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue