映射关系添加

首页签出2023/07/24
wyb 2 years ago
parent 17edf03886
commit 1f89c57868

@ -6,12 +6,14 @@ import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.jms.annotation.EnableJms;
@Slf4j
@SpringBootApplication(scanBasePackages ={"com.docus","com.neusoft"})
@EnableJms
@EnableFeignClients
@MapperScan("com.docus.server.**.mapper")
public class AppRunBootstrap {
public static void main(String[] args) {

@ -0,0 +1,24 @@
package com.docus.server.collection.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class CollectsysDictionary implements Serializable {
@ApiModelProperty(value = "id 雪花算法")
private Long id;
@ApiModelProperty(value = "采集来源系统编号")
private String sysCode;
@ApiModelProperty(value = "采集来源系统名称")
private String sysName;
}

@ -0,0 +1,43 @@
package com.docus.server.collection.feign.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
*
*
* @author wyb
*/
@Data
@ApiModel("任务补偿下发参数")
public class CompensateTasRequest {
/**
*
*/
@ApiModelProperty(value = "病案主键",required = true)
@NotNull(message = "病案主键不能为空")
@Size(min = 1,message = "病案主键不能为空")
private List<String> patientIds;
/**
*
*/
@ApiModelProperty(value = "采集器id",required = true)
@NotNull(message = "采集采集器id不能为空")
@Size(min = 1,message = "采集采集器id不能为空")
private List<String> collectorIds;
/**
*
*/
@NotNull(message = "队列优先级不能为空")
@Min(value = 1,message = "队列优先级不能小于1")
@Max(value = 10,message = "队列优先级不能大于10")
@ApiModelProperty(value = "队列优先级",required = true)
private Integer priority;
}

@ -0,0 +1,23 @@
package com.docus.server.collection.feign.service;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.collection.feign.dto.CompensateTasRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @author wyb
*/
@FeignClient(url = "${docus.url.compensate-task-url}",name = "view-collect-task")
public interface CollectTaskService {
/**
*,
* @param dto
* @return
*/
@RequestMapping(value = "api/NoViewCollect/compensateTask",method = RequestMethod.POST)
CommonResult<String> compensateTask(@RequestBody CompensateTasRequest dto);
}

@ -1,25 +1,117 @@
package com.docus.server.collection.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.api.ResultCode;
import com.docus.server.collection.config.SystemMappingConfig;
import com.docus.server.collection.dto.FirstPageCheckoutInDTO;
import com.docus.server.collection.entity.CollectsysDictionary;
import com.docus.server.collection.enums.FileSyncMethod;
import com.docus.server.collection.feign.dto.CompensateTasRequest;
import com.docus.server.collection.feign.service.CollectTaskService;
import com.docus.server.collection.service.MzZyHisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author wyb
*/
@Slf4j
@Service
public class MzZyHisServiceImpl implements MzZyHisService {
@Resource
private CollectTaskService collectTaskService;
@Override
public void firstPageCheckout(FirstPageCheckoutInDTO dto) {
System.out.println(dto);
throw new RuntimeException("");
String patientId = null;
// throw new RuntimeException("");
//验证基础数据是否存在
// if(!false){
// throw new BaseException("系统未找到患者数据!");
//
// }
// 取得映射结果后的无纸化系统id
List<String> collectorIds = systemMappingCollectorIds(dto);
// 进行任务补偿
CompensateTasRequest request = new CompensateTasRequest();
request.setPriority(4);
request.setPatientIds(Collections.singletonList(patientId));
request.setCollectorIds(collectorIds);
CommonResult<String> commonResult = collectTaskService.compensateTask(request);
// 抛出异常,进行参数持久
if (commonResult.getCode().equals(ResultCode.FAILED.getCode())) {
throw new RuntimeException(commonResult.getMsg());
}
// todo 首页签出处理逻辑
}
private List<String> systemMappingCollectorIds(FirstPageCheckoutInDTO dto) {
// 取得无纸化系统所有的采集系统配置
List<CollectsysDictionary> wzhAllCollectSys = getWzhAllCollectSys();
if (Func.isEmpty(wzhAllCollectSys)) {
throw new RuntimeException("文件同步,未配置系统!");
}
List<String> wzhAllCollectSysCode = wzhAllCollectSys.stream()
.map(CollectsysDictionary::getSysCode)
.distinct().collect(Collectors.toList());
// 文件同步方式,如果是按照系统,则匹配系统,否则取无纸化系统所有的采集系统配置
if (dto.getSyncMethod() == FileSyncMethod.BY_SYS_ID) {
// 医院的系统id
List<String> hospSysIds = dto.getSysId();
// 映射之后的系统id
List<String> collectorIds = new ArrayList<>();
// 映射配置读取
SystemMappingConfig instance = SystemMappingConfig.getInstance();
List<SystemMappingConfig.SystemMapping> systemMappingList = instance.getSystemMappingList();
validateSystemMappingConfig(systemMappingList);
// 按照医院的id分组
Map<String, List<SystemMappingConfig.SystemMapping>> mappingGroupHosp = systemMappingList.stream().collect(Collectors.groupingBy(SystemMappingConfig.SystemMapping::getHospital));
for (String hospSysId : hospSysIds) {
List<SystemMappingConfig.SystemMapping> mappingListByHospSysId = mappingGroupHosp.get(hospSysId);
if (Func.isEmpty(mappingListByHospSysId)) {
throw new RuntimeException("系统id" + hospSysId + " 配置映射失败!");
}
// 映射无纸化系统,验证是否都属于无纸化系统
List<String> mappingWzhSys = mappingListByHospSysId.stream().map(SystemMappingConfig.SystemMapping::getWzh).collect(Collectors.toList());
if (wzhAllCollectSysCode.containsAll(mappingWzhSys)) {
collectorIds.addAll(mappingWzhSys);
continue;
}
throw new RuntimeException("系统id" + hospSysId + " 配置映射错误!");
}
// 去重
return collectorIds.stream().distinct().collect(Collectors.toList());
}
return wzhAllCollectSysCode;
}
private List<CollectsysDictionary> getWzhAllCollectSys() {
// todo 获取采集器id大全
return new ArrayList<>();
}
/**
*
*
* @param mappings
*/
private void validateSystemMappingConfig(List<SystemMappingConfig.SystemMapping> mappings) {
if (Func.isEmpty(mappings)) {
throw new RuntimeException("系统映射配置错误!");
}
for (SystemMappingConfig.SystemMapping mapping : mappings) {
if (Func.isBlank(mapping.getHospital()) || Func.isBlank(mapping.getWzh())) {
throw new RuntimeException("系统映射配置错误!");
}
}
}
}

@ -49,6 +49,9 @@ docus:
user:
# 用户默认密码
defpwd: fd29cd53ec12616e5f36b77d4afffbff
url:
# 采集任务补偿地址
compensate-task-url: http://localhost:9295/
mybatis-plus:
configuration:

Loading…
Cancel
Save