diff --git a/src/main/java/com/docus/server/CxfConfig.java b/src/main/java/com/docus/server/CxfConfig.java index b2b4da3..9db76a2 100644 --- a/src/main/java/com/docus/server/CxfConfig.java +++ b/src/main/java/com/docus/server/CxfConfig.java @@ -1,5 +1,6 @@ package com.docus.server; +import com.docus.server.collection.webservice.IDeptServer; import com.docus.server.collection.webservice.IUserServer; import com.docus.server.collection.webservice.TBasicService; import org.apache.cxf.jaxws.EndpointImpl; @@ -19,6 +20,8 @@ import javax.xml.ws.Endpoint; public class CxfConfig { private final IUserServer userServer; + private final IDeptServer deptServer; + private final TBasicService tBasicService; /** * 注入Servlet,注意beanName不能为dispatcherServlet @@ -43,6 +46,14 @@ public class CxfConfig { return endpoint; } + @Bean + @Qualifier("deptEndPoint") + public Endpoint deptEndPoint() { + EndpointImpl endpoint = new EndpointImpl(springBus(), deptServer); + endpoint.publish("/api/dept"); + return endpoint; + } + @Bean public Endpoint endpoint2() { EndpointImpl endpoint = new EndpointImpl(springBus(), tBasicService); diff --git a/src/main/java/com/docus/server/collection/dto/DeptDto.java b/src/main/java/com/docus/server/collection/dto/DeptDto.java new file mode 100644 index 0000000..74375cc --- /dev/null +++ b/src/main/java/com/docus/server/collection/dto/DeptDto.java @@ -0,0 +1,61 @@ +package com.docus.server.collection.dto; + +import lombok.Data; + +/** + * @author Fang Ruichuan + * @date 2022-11-14 19:02 + */ +@Data +public class DeptDto { + /** + * id-消息流水号 返回消息体需要 + */ + private String messageId; + /** + * 接收方 + */ + private String receiver; + + /** + * 用户操作 operateType有三种值:C 代表新增、U 代表修改、D 代表删除 + */ + private String operateType; + + /** + * 科室代码 + */ + private String deptCode; + + /** + * 科室名称 + */ + private String deptName; + + + /** + * 操作人名称 + */ + private String authorName; + + + /** + * 操作人ID + */ + private String authorId; + + + /** + * 转换用户修改对象 + * + * @return 用户修改对象 + */ + public DeptModifyParam transDeptAddParam() { + DeptModifyParam deptModifyParam = new DeptModifyParam(); + deptModifyParam.setDeptCode(this.deptCode); + deptModifyParam.setDeptName(this.getDeptName()); + deptModifyParam.setAuthorName(this.authorName); + deptModifyParam.setAuthorId(this.authorId); + return deptModifyParam; + } +} diff --git a/src/main/java/com/docus/server/collection/dto/DeptModifyParam.java b/src/main/java/com/docus/server/collection/dto/DeptModifyParam.java new file mode 100644 index 0000000..1795c93 --- /dev/null +++ b/src/main/java/com/docus/server/collection/dto/DeptModifyParam.java @@ -0,0 +1,39 @@ +package com.docus.server.collection.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wen yongbin + * @date 2023年2月26日00:21:00 + */ +@Data +public class DeptModifyParam { + + /** + * 科室主键id + */ + private Long deptId; + + /** + * 科室代码 + */ + private String deptCode; + + /** + * 科室名称 + */ + private String deptName; + + + /** + * 操作人名称 + */ + private String authorName; + + + /** + * 操作人ID + */ + private String authorId; +} diff --git a/src/main/java/com/docus/server/collection/entity/PowerDept.java b/src/main/java/com/docus/server/collection/entity/PowerDept.java new file mode 100644 index 0000000..7dc5afe --- /dev/null +++ b/src/main/java/com/docus/server/collection/entity/PowerDept.java @@ -0,0 +1,65 @@ +package com.docus.server.collection.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + *
+ * 科室 + *
+ * + * @author jiashi + * @since 2021-04-15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "PowerDept对象", description = "科室") +public class PowerDept implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "科室id") + private Long deptId; + + @ApiModelProperty(value = "科室代码") + private String deptCode; + + @ApiModelProperty(value = "科室名称") + private String deptName; + + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @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 = "临床科室排序") + private Integer sort; + + @ApiModelProperty(value = "0:非临床科室,1:临床科室") + private Integer type; +} diff --git a/src/main/java/com/docus/server/collection/mapper/PowerDeptMapper.java b/src/main/java/com/docus/server/collection/mapper/PowerDeptMapper.java new file mode 100644 index 0000000..7a57a8c --- /dev/null +++ b/src/main/java/com/docus/server/collection/mapper/PowerDeptMapper.java @@ -0,0 +1,46 @@ +package com.docus.server.collection.mapper; + +import com.docus.server.collection.dto.DeptModifyParam; +import com.docus.server.collection.dto.UserModifyParam; +import com.docus.server.collection.entity.PowerDept; +import com.docus.server.collection.entity.PowerUser; +import org.apache.ibatis.annotations.Param; + +/** + *+ * 科室表 mapper + *
+ * + * @author wen yongbin + * @since 2023年2月25日22:28:58 + */ +public interface PowerDeptMapper { + + /** + * 根据科室编码查询科室信息 + * @param deptCode 科室编码 + * @return 科室信息 + */ + PowerDept getDeptByDeptCode(@Param("deptCode") String deptCode); + + /** + * 更新用户信息 + * @param deptModifyParam 科室操作参数 + * @return 数据库更新信息 + */ + int updateDept(@Param("dept") DeptModifyParam deptModifyParam); + + /** + * 添加新科室 + * @param deptModifyParam 科室操作参数 + * @return 数据库添加信息 + */ + int addDept(@Param("dept") DeptModifyParam deptModifyParam); + + /** + * 根据科室编码删除科室信息 + * @param deptCode 科室编码 + * @return 数据库删除信息 + */ + int delDeptByDeptCode(@Param("deptCode") String deptCode); +} diff --git a/src/main/java/com/docus/server/collection/service/IPowerDeptService.java b/src/main/java/com/docus/server/collection/service/IPowerDeptService.java new file mode 100644 index 0000000..867f876 --- /dev/null +++ b/src/main/java/com/docus/server/collection/service/IPowerDeptService.java @@ -0,0 +1,25 @@ +package com.docus.server.collection.service; + +import com.docus.server.collection.dto.DeptDto; +import com.docus.server.collection.dto.UserDto; + +/** + * 用户服务 + */ +public interface IPowerDeptService { + /** + * 科室注册 + * + * @param deptDto 用户注册参数 + * @return 处理结果 + */ + boolean register(DeptDto deptDto); + + /** + * 根据科室编号删除科室 + * + * @param deptCode 科室编码 + * @return 删除结果 + */ + boolean delDeptByDeptCode(String deptCode); +} diff --git a/src/main/java/com/docus/server/collection/service/impl/PowerDeptServiceImpl.java b/src/main/java/com/docus/server/collection/service/impl/PowerDeptServiceImpl.java new file mode 100644 index 0000000..cd9d3e9 --- /dev/null +++ b/src/main/java/com/docus/server/collection/service/impl/PowerDeptServiceImpl.java @@ -0,0 +1,53 @@ +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.DeptDto; +import com.docus.server.collection.dto.DeptModifyParam; +import com.docus.server.collection.dto.UserModifyParam; +import com.docus.server.collection.entity.PowerDept; +import com.docus.server.collection.entity.PowerUser; +import com.docus.server.collection.mapper.PowerDeptMapper; +import com.docus.server.collection.service.IPowerDeptService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 科室服务实现 + * + * @author wyb + */ +@Service +public class PowerDeptServiceImpl implements IPowerDeptService { + @Resource + private PowerDeptMapper powerDeptMapper; + @Resource + private IdService idService; + + @Override + public boolean register(DeptDto deptDto) { + PowerDept powerDept = powerDeptMapper.getDeptByDeptCode(deptDto.getDeptCode()); + DeptModifyParam deptModifyParam = deptDto.transDeptAddParam(); + if (Func.isEmpty(powerDept)) { + long deptId = idService.getDateSeq(); + deptModifyParam.setDeptId(deptId); + powerDeptMapper.addDept(deptModifyParam); + return true; + } + deptModifyParam.setDeptId(powerDept.getDeptId()); + powerDeptMapper.updateDept(deptModifyParam); + return true; + } + + @Override + public boolean delDeptByDeptCode(String deptCode) { + PowerDept powerDept = powerDeptMapper.getDeptByDeptCode(deptCode); + if (Func.isEmpty(powerDept)) { + return true; + } + powerDeptMapper.delDeptByDeptCode(deptCode); + return true; + } +} diff --git a/src/main/java/com/docus/server/collection/webservice/IDeptServer.java b/src/main/java/com/docus/server/collection/webservice/IDeptServer.java new file mode 100644 index 0000000..ba73900 --- /dev/null +++ b/src/main/java/com/docus/server/collection/webservice/IDeptServer.java @@ -0,0 +1,14 @@ +package com.docus.server.collection.webservice; + +/** + * @author Fang Ruichuan + * @date 2022-11-14 19:03 + */ +public interface IDeptServer { + /** + * 科室信息接收,进行操作 + * @param receiveUser 接收到的科室数据 + * @return 返回结果 + */ + String deptModify(String receiveUser); +} diff --git a/src/main/java/com/docus/server/collection/webservice/impl/DeptServerImpl.java b/src/main/java/com/docus/server/collection/webservice/impl/DeptServerImpl.java new file mode 100644 index 0000000..628ff32 --- /dev/null +++ b/src/main/java/com/docus/server/collection/webservice/impl/DeptServerImpl.java @@ -0,0 +1,187 @@ +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.dto.DeptDto; +import com.docus.server.collection.service.IPowerDeptService; +import com.docus.server.collection.util.IdUtil; +import com.docus.server.collection.util.XmlUtil; +import com.docus.server.collection.webservice.IDeptServer; +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 wen yongbin + * @date 2023年2月25日21:56:33 + */ +@Service +@WebService +@Slf4j +public class DeptServerImpl implements IDeptServer { + + @Resource + IPowerDeptService powerDeptService; + + @Override + public String deptModify(String receiveUser) { + log.info("新增/修改科室数据:{}", receiveUser); + boolean registerResult = false; + DeptDto deptDto; + String msgId = ""; + String receiver = ""; + try { + deptDto = strToDeptDto(receiveUser); + msgId = deptDto.getMessageId(); + receiver = deptDto.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 = deptDto.getOperateType(); + String delType = "D"; + // 判断操作类型 + if (Func.isNotEmpty(operateType) && operateType.contains(delType)) { + registerResult = powerDeptService.delDeptByDeptCode(deptDto.getDeptCode()); + } else { + registerResult = powerDeptService.register(deptDto); + } + } 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); + } + + + /** + * 接收科室参数解析 DeptDto 参数 + * + * @param receiveUser 接收到的科室参数 + * @return UserDto + */ + public DeptDto strToDeptDto(String receiveUser) { + DeptDto deptDto = new DeptDto(); + XmlUtil xmlParseUtil = XmlUtil.of(receiveUser); + Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension"); + deptDto.setMessageId(msgIdNode.getNodeValue()); + Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension"); + deptDto.setReceiver(receiverNode.getNodeValue()); + Node operateTypeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/@operateType"); + deptDto.setOperateType(operateTypeNode.getNodeValue()); + Node deptCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_CODE/@value"); + deptDto.setDeptCode(deptCodeNode.getNodeValue()); + Node deptNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_NAME/@value"); + deptDto.setDeptName(deptNameNode.getNodeValue()); + Node authorIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/id/item/@extension"); + deptDto.setAuthorId(authorIdNode.getNodeValue()); + Node authorNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/assignedPerson/name/item/part/@value"); + deptDto.setAuthorName(authorNameNode.getNodeValue()); + return deptDto; + } + + /** + * @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 "\n" +
+ "\t\t\t\n" +
+ "\t\t
\n" +
+ "\t\t