|
@@ -4,6 +4,7 @@ package com.wdklian.ncs.ms.system.service.impl;
|
|
import cn.hutool.core.lang.ObjectId;
|
|
import cn.hutool.core.lang.ObjectId;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
import com.google.common.base.Strings;
|
|
import com.google.common.base.Strings;
|
|
import com.wdklian.ncs.ms.common.entity.open.dos.EmployeeDO;
|
|
import com.wdklian.ncs.ms.common.entity.open.dos.EmployeeDO;
|
|
import com.wdklian.ncs.ms.common.entity.open.dos.PatientDO;
|
|
import com.wdklian.ncs.ms.common.entity.open.dos.PatientDO;
|
|
@@ -96,6 +97,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public void removePatient(List<PatientDO> patientDOS) {
|
|
public void removePatient(List<PatientDO> patientDOS) {
|
|
|
|
|
|
List<CustomerDO> outCustomers = handPatientOut(patientDOS);
|
|
List<CustomerDO> outCustomers = handPatientOut(patientDOS);
|
|
@@ -109,7 +111,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
return handled;
|
|
return handled;
|
|
}
|
|
}
|
|
|
|
|
|
- List<CustomerDO> customerDOS = listCustomerByHisKeys(patientDOS.stream().map(p -> p.getKeyval()).collect(Collectors.toList()));
|
|
|
|
|
|
+ List<CustomerDO> customerDOS = listCustomerByHisKeys(patientDOS.stream().map(PatientDO::getKeyval).collect(Collectors.toList()));
|
|
if (!customerDOS.isEmpty()) {
|
|
if (!customerDOS.isEmpty()) {
|
|
for (CustomerDO customerDO : customerDOS) {
|
|
for (CustomerDO customerDO : customerDOS) {
|
|
if (customerDO.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value())) { //这个用户还在住院,设置为出院状态
|
|
if (customerDO.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value())) { //这个用户还在住院,设置为出院状态
|
|
@@ -127,6 +129,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public void updatePatient(List<PatientDO> patientDOS) {
|
|
public void updatePatient(List<PatientDO> patientDOS) {
|
|
|
|
|
|
try {
|
|
try {
|
|
@@ -137,6 +140,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public void insertPatient(List<PatientDO> patientDOS) {
|
|
public void insertPatient(List<PatientDO> patientDOS) {
|
|
|
|
|
|
try {
|
|
try {
|
|
@@ -163,13 +167,13 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
//在住院患者
|
|
//在住院患者
|
|
List<CustomerDO> patientIn = this.getCustomersByHospitaliseStatus(HospitaliseStatusEnum.HOSPITALIZED);
|
|
List<CustomerDO> patientIn = this.getCustomersByHospitaliseStatus(HospitaliseStatusEnum.HOSPITALIZED);
|
|
//传入患者已经有入住过但已出院的记录
|
|
//传入患者已经有入住过但已出院的记录
|
|
- List<CustomerDO> patientWasIn = this.listCustomerByHisKeys(patientDOS.stream().map(p -> p.getKeyval()).collect(Collectors.toList())).stream().filter(p->p.getStatus().equals(HospitaliseStatusEnum.DISCHARGED.value())).collect(Collectors.toList());
|
|
|
|
|
|
+ List<CustomerDO> patientWasIn = this.listCustomerByHisKeys(patientDOS.stream().map(PatientDO::getKeyval).collect(Collectors.toList())).stream().filter(p->p.getStatus().equals(HospitaliseStatusEnum.DISCHARGED.value())).collect(Collectors.toList());
|
|
patientWasIn.addAll(patientIn);
|
|
patientWasIn.addAll(patientIn);
|
|
List<MemberDO> patientMemberWasIn = new ArrayList<>();
|
|
List<MemberDO> patientMemberWasIn = new ArrayList<>();
|
|
List<CustomerCareMappingVO> patientWasInCareMapping = new ArrayList<>();
|
|
List<CustomerCareMappingVO> patientWasInCareMapping = new ArrayList<>();
|
|
- if (patientWasIn != null && patientWasIn.size() > 0) {
|
|
|
|
- patientMemberWasIn = this.memberService.listMemberByIds(patientWasIn.stream().mapToInt(p -> p.getMemberId()).boxed().collect(Collectors.toList()));
|
|
|
|
- patientWasInCareMapping = this.customerMappingService.listCustomerCareChargeByCustomerIds(patientWasIn.stream().mapToInt(p -> p.getId()).boxed().collect(Collectors.toList()));
|
|
|
|
|
|
+ if (!patientWasIn.isEmpty()) {
|
|
|
|
+ patientMemberWasIn = this.memberService.listMemberByIds(patientWasIn.stream().mapToInt(CustomerDO::getMemberId).boxed().collect(Collectors.toList()));
|
|
|
|
+ patientWasInCareMapping = this.customerMappingService.listCustomerCareChargeByCustomerIds(patientWasIn.stream().mapToInt(CustomerDO::getId).boxed().collect(Collectors.toList()));
|
|
}
|
|
}
|
|
//所有角色列表
|
|
//所有角色列表
|
|
List<RoleDO> roles = this.roleService.listRole();
|
|
List<RoleDO> roles = this.roleService.listRole();
|
|
@@ -177,6 +181,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
List<CustomerDO> syncCustomers = new ArrayList<>();
|
|
List<CustomerDO> syncCustomers = new ArrayList<>();
|
|
|
|
|
|
for (PatientDO patientInfo : patientDOS) {
|
|
for (PatientDO patientInfo : patientDOS) {
|
|
|
|
+
|
|
//查找主要科室或附加科室或者会使用本科室部分床位的科室
|
|
//查找主要科室或附加科室或者会使用本科室部分床位的科室
|
|
List<ShopDO> availableParts = parts.stream().filter(p ->
|
|
List<ShopDO> availableParts = parts.stream().filter(p ->
|
|
StrUtil.isNotEmpty(p.getHisCode()) && StrUtil.isNotEmpty(patientInfo.getPartKeyval()) && // 主科室匹配条件
|
|
StrUtil.isNotEmpty(p.getHisCode()) && StrUtil.isNotEmpty(patientInfo.getPartKeyval()) && // 主科室匹配条件
|
|
@@ -190,7 +195,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
part = availableParts.get(0);
|
|
part = availableParts.get(0);
|
|
} else if (availableParts.size() > 1) { //查出多个科室,根据床位查出有此床位的科室
|
|
} else if (availableParts.size() > 1) { //查出多个科室,根据床位查出有此床位的科室
|
|
for (ShopDO availablePart : availableParts) {
|
|
for (ShopDO availablePart : availableParts) {
|
|
- Boolean bedMatched = allBeds.stream().anyMatch(p -> p.getPartId().equals(availablePart.getShopId()) && StrUtil.isNotEmpty(p.getName()) && p.getName().equalsIgnoreCase(patientInfo.getBedNo()));
|
|
|
|
|
|
+ boolean bedMatched = allBeds.stream().anyMatch(p -> p.getPartId().equals(availablePart.getShopId()) && StrUtil.isNotEmpty(p.getName()) && p.getName().equalsIgnoreCase(patientInfo.getBedNo()));
|
|
if (bedMatched) {
|
|
if (bedMatched) {
|
|
part = availablePart;
|
|
part = availablePart;
|
|
break;
|
|
break;
|
|
@@ -222,7 +227,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
syncCustomers.add(customerBak);
|
|
syncCustomers.add(customerBak);
|
|
//旧床位设备设置memberId为0,否则485依然显示旧床位患者数据
|
|
//旧床位设备设置memberId为0,否则485依然显示旧床位患者数据
|
|
FrameDO oldFrameDO = allBeds.stream().filter(p -> p.getId().equals(customerDO.getFrameId())).findFirst().orElse(null);
|
|
FrameDO oldFrameDO = allBeds.stream().filter(p -> p.getId().equals(customerDO.getFrameId())).findFirst().orElse(null);
|
|
- if(!patientWasIn.stream().anyMatch(p->p.getFrameId().equals(oldFrameDO.getId())&&p.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value())&&!p.getId().equals(customerDO.getId()))) { //没有人入住旧床位了
|
|
|
|
|
|
+ if(oldFrameDO!=null&&patientWasIn.stream().noneMatch(p->p.getFrameId().equals(oldFrameDO.getId())&&p.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value())&&!p.getId().equals(customerDO.getId()))) { //没有人入住旧床位了
|
|
this.deviceService.updateMemberId(customerDO.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(), DeviceTypeEnum.RS485_DOOR_DEVICE.value(), DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, 0);
|
|
this.deviceService.updateMemberId(customerDO.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(), DeviceTypeEnum.RS485_DOOR_DEVICE.value(), DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -230,9 +235,9 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
CustomerDO customer = handleSinglePatient(patientInfo, part, bed, customerDO, member, roles, customerCareMappingVOS, patientWasIn);
|
|
CustomerDO customer = handleSinglePatient(patientInfo, part, bed, customerDO, member, roles, customerCareMappingVOS, patientWasIn);
|
|
- if (customer != null) {
|
|
|
|
|
|
+ if (customer != null&&customer.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value())) {
|
|
//重要-- 把同步成功的患者加入到已入住列表中,防止同一批次患者有相同床位的,不加入无法判断出上一次已经入住了床位
|
|
//重要-- 把同步成功的患者加入到已入住列表中,防止同一批次患者有相同床位的,不加入无法判断出上一次已经入住了床位
|
|
- if(!patientWasIn.stream().anyMatch(p->p.getId().equals(customer.getId()))) {
|
|
|
|
|
|
+ if(patientWasIn.stream().noneMatch(p->p.getId().equals(customer.getId()))) {
|
|
patientWasIn.add(customer);
|
|
patientWasIn.add(customer);
|
|
}
|
|
}
|
|
//把同步成功的患者加入返回列表
|
|
//把同步成功的患者加入返回列表
|
|
@@ -242,7 +247,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- if (syncCustomers.size() > 0 && handDevice) { //对有变化的患者设备发送刷新消息,由customer工程负责处理
|
|
|
|
|
|
+ if (!syncCustomers.isEmpty() && handDevice) { //对有变化的患者设备发送刷新消息,由customer工程负责处理
|
|
this.amqpTemplate.convertAndSend("MS_DEVICE_REFRESH", "MS_DEVICE_REFRESH_ROUTING", syncCustomers);
|
|
this.amqpTemplate.convertAndSend("MS_DEVICE_REFRESH", "MS_DEVICE_REFRESH_ROUTING", syncCustomers);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -251,9 +256,9 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public List<CustomerDO> syncPatient(List<PatientDO> patientDOS) {
|
|
public List<CustomerDO> syncPatient(List<PatientDO> patientDOS) {
|
|
- List<CustomerDO> customerDOS = this.syncPatient(patientDOS, false);
|
|
|
|
- return customerDOS;
|
|
|
|
|
|
+ return this.syncPatient(patientDOS, false);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -271,7 +276,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
if (member == null) {
|
|
if (member == null) {
|
|
member = registerMemberDO(patient);
|
|
member = registerMemberDO(patient);
|
|
} else {
|
|
} else {
|
|
- member = updateMember(patient, member);
|
|
|
|
|
|
+ updateMember(patient, member);
|
|
member = this.memberService.edit(member, member.getMemberId());
|
|
member = this.memberService.edit(member, member.getMemberId());
|
|
}
|
|
}
|
|
|
|
|
|
@@ -279,7 +284,7 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
customer.setUnionId(ObjectId.next());
|
|
customer.setUnionId(ObjectId.next());
|
|
customer.setCreateTime(DateUtil.getDateline());
|
|
customer.setCreateTime(DateUtil.getDateline());
|
|
customer.setMemberId(member.getMemberId());
|
|
customer.setMemberId(member.getMemberId());
|
|
- customer = updateCustomer(patient, part, bed, customer);
|
|
|
|
|
|
+ updateCustomer(patient, part, bed, customer);
|
|
customer = this.add(customer);
|
|
customer = this.add(customer);
|
|
int lastId = this.daoSupport.getLastId(CustomerDO.class.getAnnotation(Table.class).name());
|
|
int lastId = this.daoSupport.getLastId(CustomerDO.class.getAnnotation(Table.class).name());
|
|
customer.setId(lastId);
|
|
customer.setId(lastId);
|
|
@@ -294,14 +299,20 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (patientInfoChanged(patient, customer, member, bed)) {
|
|
if (patientInfoChanged(patient, customer, member, bed)) {
|
|
- member = updateMember(patient, member);
|
|
|
|
|
|
+ //数据有变化,返回变化后的对象
|
|
|
|
+ CustomerDO changedCustomer = new CustomerDO();
|
|
|
|
+ BeanUtil.copyProperties(customer,changedCustomer);
|
|
|
|
+ updateMember(patient, member);
|
|
this.memberService.edit(member, member.getMemberId());
|
|
this.memberService.edit(member, member.getMemberId());
|
|
//更新customer
|
|
//更新customer
|
|
- customer = updateCustomer(patient, part, bed, customer);
|
|
|
|
|
|
+ updateCustomer(patient, part, bed, changedCustomer);
|
|
//提交更新
|
|
//提交更新
|
|
- this.edit(customer, customer.getId());
|
|
|
|
|
|
+ this.edit(changedCustomer, changedCustomer.getId());
|
|
|
|
+
|
|
|
|
+ return changedCustomer;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
return customer;
|
|
return customer;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -311,12 +322,13 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
member.setUnionId(ObjectId.next());
|
|
member.setUnionId(ObjectId.next());
|
|
member.setUname(StringUtil.getPingYin(patient.getName()) + patient.getKeyval());
|
|
member.setUname(StringUtil.getPingYin(patient.getName()) + patient.getKeyval());
|
|
member.setBirthday(StringHelper.parseDate(patient.getBirthday()));
|
|
member.setBirthday(StringHelper.parseDate(patient.getBirthday()));
|
|
- member = updateMember(patient, member);
|
|
|
|
|
|
+ updateMember(patient, member);
|
|
member = this.memberService.register(member);
|
|
member = this.memberService.register(member);
|
|
return member;
|
|
return member;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public boolean preparePatientBed(PatientDO patient, ShopDO part, FrameDO bed, CustomerDO inbedCustomer) {
|
|
public boolean preparePatientBed(PatientDO patient, ShopDO part, FrameDO bed, CustomerDO inbedCustomer) {
|
|
if (patient == null) {
|
|
if (patient == null) {
|
|
return false;
|
|
return false;
|
|
@@ -372,10 +384,10 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
@Override
|
|
@Override
|
|
public List<ClerkDO> prepareCareCharge(PatientDO patient, ShopDO part, List<ClerkDO> partClerks, List<RoleDO> roles) {
|
|
public List<ClerkDO> prepareCareCharge(PatientDO patient, ShopDO part, List<ClerkDO> partClerks, List<RoleDO> roles) {
|
|
List<ClerkDO> charges = new ArrayList<>();
|
|
List<ClerkDO> charges = new ArrayList<>();
|
|
- List<String> careKeyvals = Arrays.asList(new String[]{
|
|
|
|
|
|
+ List<String> careKeyvals = Arrays.stream(new String[]{
|
|
Optional.ofNullable(patient.getDoctorKeyval()).orElse(""),
|
|
Optional.ofNullable(patient.getDoctorKeyval()).orElse(""),
|
|
Optional.ofNullable(patient.getNurseKeyval()).orElse("")}
|
|
Optional.ofNullable(patient.getNurseKeyval()).orElse("")}
|
|
- ).stream().filter(p -> StrUtil.isNotEmpty(p)).collect(Collectors.toList());
|
|
|
|
|
|
+ ).filter(StrUtil::isNotEmpty).collect(Collectors.toList());
|
|
for (String careKey : careKeyvals) { //处理好需要的医生护士
|
|
for (String careKey : careKeyvals) { //处理好需要的医生护士
|
|
ClerkDO matched = partClerks.stream().filter(p -> StrUtil.isNotEmpty(p.getHisKeyval()) && p.getHisKeyval().equals(careKey) && p.getShopId().equals(part.getShopId())).findFirst().orElse(null);
|
|
ClerkDO matched = partClerks.stream().filter(p -> StrUtil.isNotEmpty(p.getHisKeyval()) && p.getHisKeyval().equals(careKey) && p.getShopId().equals(part.getShopId())).findFirst().orElse(null);
|
|
if (matched == null) {//需要的职员不存在,根据careKeyval从open数据库获取
|
|
if (matched == null) {//需要的职员不存在,根据careKeyval从open数据库获取
|
|
@@ -397,13 +409,13 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
@Override
|
|
@Override
|
|
public List<CustomerDO> listCustomerByHisKeys(List<String> hisKeys) {
|
|
public List<CustomerDO> listCustomerByHisKeys(List<String> hisKeys) {
|
|
String sql = "select * from " + CustomerDO.class.getAnnotation(Table.class).name() + " where find_in_set(his_keyval,?)";
|
|
String sql = "select * from " + CustomerDO.class.getAnnotation(Table.class).name() + " where find_in_set(his_keyval,?)";
|
|
- return this.daoSupport.queryForList(sql, CustomerDO.class, hisKeys.stream().collect(Collectors.joining(",")));
|
|
|
|
|
|
+ return this.daoSupport.queryForList(sql, CustomerDO.class, String.join(",", hisKeys));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<CustomerDO> listCustomerByHisDepartKeys(List<String> hisDepartKeys) {
|
|
public List<CustomerDO> listCustomerByHisDepartKeys(List<String> hisDepartKeys) {
|
|
- String sql = "select * from " + CustomerDO.class.getAnnotation(Table.class).name() + " where find_in_set(his_part_keyval,?)";
|
|
|
|
- return this.daoSupport.queryForList(sql, CustomerDO.class, hisDepartKeys.stream().collect(Collectors.joining(",")));
|
|
|
|
|
|
+ String sql = "select * from " + CustomerDO.class.getAnnotation(Table.class).name() + " where find_in_set(his_part_keyval,?) and status=0";
|
|
|
|
+ return this.daoSupport.queryForList(sql, CustomerDO.class, String.join(",", hisDepartKeys));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -418,16 +430,13 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
if ((StrUtil.isNotEmpty(patient.getStatus()) && Integer.parseInt(patient.getStatus()) == (HospitaliseStatusEnum.DISCHARGED.value()))||
|
|
if ((StrUtil.isNotEmpty(patient.getStatus()) && Integer.parseInt(patient.getStatus()) == (HospitaliseStatusEnum.DISCHARGED.value()))||
|
|
bed==null //患者转到了一个无法识别的床位
|
|
bed==null //患者转到了一个无法识别的床位
|
|
) {
|
|
) {
|
|
- if(customer.getFrameId().equals(784)){
|
|
|
|
- int i=0;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
customer.setStatus(HospitaliseStatusEnum.DISCHARGED.value());
|
|
customer.setStatus(HospitaliseStatusEnum.DISCHARGED.value());
|
|
|
|
+
|
|
this.edit(customer, customer.getId());
|
|
this.edit(customer, customer.getId());
|
|
this.customerMappingService.clearCustomerMapping(customer.getId());
|
|
this.customerMappingService.clearCustomerMapping(customer.getId());
|
|
if(bed!=null) { //如果患者转到了不存在的床位,不能更新设备的memberId,不然可能有新入住的患者在485上无法显示.只有患者明确出院了才能设置memberId为0
|
|
if(bed!=null) { //如果患者转到了不存在的床位,不能更新设备的memberId,不然可能有新入住的患者在485上无法显示.只有患者明确出院了才能设置memberId为0
|
|
- if(bed.getId().equals(784)){
|
|
|
|
- int i=0;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
this.deviceService.updateMemberId(customer.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(), DeviceTypeEnum.RS485_DOOR_DEVICE.value(), DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, 0);
|
|
this.deviceService.updateMemberId(customer.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(), DeviceTypeEnum.RS485_DOOR_DEVICE.value(), DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, 0);
|
|
}
|
|
}
|
|
return customer;
|
|
return customer;
|
|
@@ -455,14 +464,11 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
if (changed) {
|
|
if (changed) {
|
|
customerDO = ObjectUtil.defaultIfNull(customerDO, customer);
|
|
customerDO = ObjectUtil.defaultIfNull(customerDO, customer);
|
|
}
|
|
}
|
|
-
|
|
|
|
- }
|
|
|
|
- if(customerDO!=null){
|
|
|
|
this.deviceService.updateMemberId(customerDO.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(),DeviceTypeEnum.RS485_DOOR_DEVICE.value(),DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, customerDO.getMemberId());
|
|
this.deviceService.updateMemberId(customerDO.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(),DeviceTypeEnum.RS485_DOOR_DEVICE.value(),DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, customerDO.getMemberId());
|
|
|
|
+ return customerDO.equals(customer)?null:customerDO;
|
|
|
|
+ } else{
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
-
|
|
|
|
- return customerDO;
|
|
|
|
-
|
|
|
|
} else {
|
|
} else {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
@@ -482,15 +488,15 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
*/
|
|
*/
|
|
private Boolean updateCustomerCareCharge(CustomerDO customerDO, List<ClerkDO> clerks, List<CustomerCareMappingVO> oldMapping) {
|
|
private Boolean updateCustomerCareCharge(CustomerDO customerDO, List<ClerkDO> clerks, List<CustomerCareMappingVO> oldMapping) {
|
|
|
|
|
|
- List<Integer> oldClerkIds = oldMapping.stream().mapToInt(p -> p.getClerkId()).boxed().collect(Collectors.toList());
|
|
|
|
- List<Integer> newClerkIds = clerks.stream().mapToInt(p -> p.getClerkId()).boxed().collect(Collectors.toList());
|
|
|
|
|
|
+ List<Integer> oldClerkIds = oldMapping.stream().mapToInt(CustomerCareMappingVO::getClerkId).boxed().collect(Collectors.toList());
|
|
|
|
+ List<Integer> newClerkIds = clerks.stream().mapToInt(ClerkDO::getClerkId).boxed().collect(Collectors.toList());
|
|
//要添加的医护人员id
|
|
//要添加的医护人员id
|
|
List<Integer> adds = ListUtils.removeAll(newClerkIds, oldClerkIds);
|
|
List<Integer> adds = ListUtils.removeAll(newClerkIds, oldClerkIds);
|
|
//要删除的医护人员id
|
|
//要删除的医护人员id
|
|
List<Integer> removes = ListUtils.removeAll(oldClerkIds, newClerkIds);
|
|
List<Integer> removes = ListUtils.removeAll(oldClerkIds, newClerkIds);
|
|
- Boolean change = false;
|
|
|
|
|
|
+ boolean change = false;
|
|
|
|
|
|
- if (adds != null && adds.size() > 0) { //要新加的医护人员
|
|
|
|
|
|
+ if (!adds.isEmpty()) { //要新加的医护人员
|
|
for (Integer add : adds) {
|
|
for (Integer add : adds) {
|
|
ClerkDO clerk = clerks.stream().filter(p -> p.getClerkId().equals(add)).findFirst().orElse(null);
|
|
ClerkDO clerk = clerks.stream().filter(p -> p.getClerkId().equals(add)).findFirst().orElse(null);
|
|
if (clerk != null) {
|
|
if (clerk != null) {
|
|
@@ -506,23 +512,22 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
change = true;
|
|
change = true;
|
|
}
|
|
}
|
|
|
|
|
|
- if (removes != null && removes.size() > 0) {//要删除的医护人员
|
|
|
|
- this.customerMappingService.delete(removes.toArray(new Integer[removes.size()]));
|
|
|
|
|
|
+ if (!removes.isEmpty()) {//要删除的医护人员
|
|
|
|
+ this.customerMappingService.deleteCareMappingByCustomerId(customerDO.getId(),removes.toArray(new Integer[0]));
|
|
change = true;
|
|
change = true;
|
|
}
|
|
}
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- private MemberDO updateMember(PatientDO patient, MemberDO memberDO) {
|
|
|
|
|
|
+ private void updateMember(PatientDO patient, MemberDO memberDO) {
|
|
memberDO.setSex(StringHelper.parseSex(patient.getSex()));
|
|
memberDO.setSex(StringHelper.parseSex(patient.getSex()));
|
|
- memberDO.setMobile(patient.getKeyval());
|
|
|
|
|
|
+ memberDO.setMobile(StrUtil.emptyToDefault(patient.getMobile(),patient.getKeyval()));
|
|
memberDO.setTrueName(patient.getName());
|
|
memberDO.setTrueName(patient.getName());
|
|
memberDO.setNickname(patient.getName());
|
|
memberDO.setNickname(patient.getName());
|
|
- return memberDO;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- private CustomerDO updateCustomer(PatientDO patient, ShopDO shop, FrameDO bed, CustomerDO customerDO) {
|
|
|
|
|
|
+ private void updateCustomer(PatientDO patient, ShopDO shop, FrameDO bed, CustomerDO customerDO) {
|
|
String age = patient.getAge();
|
|
String age = patient.getAge();
|
|
Integer patientAge = StringHelper.fetchAge(age);
|
|
Integer patientAge = StringHelper.fetchAge(age);
|
|
customerDO.setAge(patientAge);
|
|
customerDO.setAge(patientAge);
|
|
@@ -546,13 +551,12 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
customerDO.setCardNo(Optional.ofNullable(patient.getCardNo()).orElse("").trim());
|
|
customerDO.setCardNo(Optional.ofNullable(patient.getCardNo()).orElse("").trim());
|
|
customerDO.setIdNo(Optional.ofNullable(patient.getIdNo()).orElse("").trim());
|
|
customerDO.setIdNo(Optional.ofNullable(patient.getIdNo()).orElse("").trim());
|
|
customerDO.setFrameId(bed.getId());
|
|
customerDO.setFrameId(bed.getId());
|
|
- Long indate = DateUtil.getDateline();
|
|
|
|
|
|
+ long indate = DateUtil.getDateline();
|
|
if (StrUtil.isNotEmpty(patient.getIndate())) {
|
|
if (StrUtil.isNotEmpty(patient.getIndate())) {
|
|
indate = DateUtil.getDateline(patient.getIndate());
|
|
indate = DateUtil.getDateline(patient.getIndate());
|
|
}
|
|
}
|
|
customerDO.setInDate(indate);
|
|
customerDO.setInDate(indate);
|
|
customerDO.setIdType("身份证");
|
|
customerDO.setIdType("身份证");
|
|
- return customerDO;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private boolean patientInfoChanged(PatientDO patient, CustomerDO customerDO, MemberDO memberDO, FrameDO bed) {
|
|
private boolean patientInfoChanged(PatientDO patient, CustomerDO customerDO, MemberDO memberDO, FrameDO bed) {
|
|
@@ -566,29 +570,27 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
//系统显示患者出院,而调用该方法比对时,用户肯定是在院的。此时需要把用户重新设置为住院
|
|
//系统显示患者出院,而调用该方法比对时,用户肯定是在院的。此时需要把用户重新设置为住院
|
|
customerDO.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value()) &&
|
|
customerDO.getStatus().equals(HospitaliseStatusEnum.HOSPITALIZED.value()) &&
|
|
// Objects.equals(customerDO.getStatus().toString(),patientInfoDTO.getStatus())&&
|
|
// Objects.equals(customerDO.getStatus().toString(),patientInfoDTO.getStatus())&&
|
|
- Objects.equals(customerDO.getAge(), StringHelper.fetchAge(patient.getAge().toString())) && //年龄是否有变化
|
|
|
|
|
|
+ Objects.equals(customerDO.getAge(), StringHelper.fetchAge(patient.getAge())) && //年龄是否有变化
|
|
// Objects.equals(customerDO.getAgeUnit(), patientInfoDTO.getAgeUnit()) &&
|
|
// Objects.equals(customerDO.getAgeUnit(), patientInfoDTO.getAgeUnit()) &&
|
|
Objects.equals(memberDO.getSex(), StringHelper.parseSex(patient.getSex())));
|
|
Objects.equals(memberDO.getSex(), StringHelper.parseSex(patient.getSex())));
|
|
|
|
|
|
- if (!i) {
|
|
|
|
- int b = 1;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
|
|
if (Strings.isNullOrEmpty(patient.getMobile())) {
|
|
if (Strings.isNullOrEmpty(patient.getMobile())) {
|
|
return !i;
|
|
return !i;
|
|
} else {
|
|
} else {
|
|
- return !(i && Objects.equals(memberDO.getMobile(), patient.getKeyval()));
|
|
|
|
|
|
+ return !(i && (Objects.equals(memberDO.getMobile(), patient.getMobile())||Objects.equals(memberDO.getMobile(), patient.getKeyval())));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean careChargeChanged(PatientDO patient, List<CustomerCareMappingVO> doctorNurseMapping) {
|
|
private boolean careChargeChanged(PatientDO patient, List<CustomerCareMappingVO> doctorNurseMapping) {
|
|
- if (doctorNurseMapping != null && doctorNurseMapping.size() > 0) { //原来有责任医生或护士,返回有没有变更
|
|
|
|
|
|
+ if (doctorNurseMapping != null && !doctorNurseMapping.isEmpty()) { //原来有责任医生或护士,返回有没有变更
|
|
//病人的责任医生、护士、护工主键集合
|
|
//病人的责任医生、护士、护工主键集合
|
|
- List<String> careKeyval = Arrays.asList(new String[]{
|
|
|
|
|
|
+ List<String> careKeyval = Arrays.stream(new String[]{
|
|
Optional.ofNullable(patient.getDoctorKeyval()).orElse(""),
|
|
Optional.ofNullable(patient.getDoctorKeyval()).orElse(""),
|
|
Optional.ofNullable(patient.getNurseKeyval()).orElse("")}
|
|
Optional.ofNullable(patient.getNurseKeyval()).orElse("")}
|
|
- ).stream().filter(p -> StrUtil.isNotEmpty(p)).collect(Collectors.toList());
|
|
|
|
|
|
+ ).filter(StrUtil::isNotEmpty).collect(Collectors.toList());
|
|
|
|
|
|
for (String s : careKeyval) { //比对病人的责任人是否与呼叫系统中的一致,任何一个不一致,返回true,否则返回false
|
|
for (String s : careKeyval) { //比对病人的责任人是否与呼叫系统中的一致,任何一个不一致,返回true,否则返回false
|
|
boolean matched = doctorNurseMapping.stream().anyMatch(p -> StrUtil.isNotEmpty(p.getClerkHisKeyval()) && p.getClerkHisKeyval().equals(s));
|
|
boolean matched = doctorNurseMapping.stream().anyMatch(p -> StrUtil.isNotEmpty(p.getClerkHisKeyval()) && p.getClerkHisKeyval().equals(s));
|
|
@@ -624,9 +626,9 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public List<CustomerDO> syncPatient(@NotNull(message = "患者信息不能为null") PatientDO patient) {
|
|
public List<CustomerDO> syncPatient(@NotNull(message = "患者信息不能为null") PatientDO patient) {
|
|
- List<CustomerDO> customers = this.syncPatient(Arrays.asList(patient));
|
|
|
|
- return customers;
|
|
|
|
|
|
+ return this.syncPatient(Collections.singletonList(patient));
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -636,8 +638,8 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
List<CustomerDO> customerDO = this.syncPatient(patient);
|
|
List<CustomerDO> customerDO = this.syncPatient(patient);
|
|
List<CustomerDO> customerDOS = this.nurseConfigService.renewDePartment(patient.getPartKeyval());
|
|
List<CustomerDO> customerDOS = this.nurseConfigService.renewDePartment(patient.getPartKeyval());
|
|
List<CustomerDO> sum = ListUtils.sum(customerDO, customerDOS);
|
|
List<CustomerDO> sum = ListUtils.sum(customerDO, customerDOS);
|
|
- if (customerDOS != null && customerDOS.size() > 0) {
|
|
|
|
- deviceService.deviceRefreshMQ(sum, Arrays.asList(customerDOS.get(0).getPartId()));
|
|
|
|
|
|
+ if (!customerDOS.isEmpty()) {
|
|
|
|
+ deviceService.deviceRefreshMQ(sum, Collections.singletonList(customerDOS.get(0).getPartId()));
|
|
}
|
|
}
|
|
return sum;
|
|
return sum;
|
|
}
|
|
}
|
|
@@ -653,11 +655,12 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+// @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public List<CustomerDO> syncAllPatient() {
|
|
public List<CustomerDO> syncAllPatient() {
|
|
|
|
|
|
List<PatientDO> patientOuted = this.patientFeignClient.listHisOutedPatients().getData();
|
|
List<PatientDO> patientOuted = this.patientFeignClient.listHisOutedPatients().getData();
|
|
List<CustomerDO> customerOut = this.handPatientOut(patientOuted);
|
|
List<CustomerDO> customerOut = this.handPatientOut(patientOuted);
|
|
- List<String> patientKeys = patientOuted.stream().map(p -> p.getKeyval()).collect(Collectors.toList());
|
|
|
|
|
|
+ List<String> patientKeys = patientOuted.stream().map(PatientDO::getKeyval).collect(Collectors.toList());
|
|
this.patientFeignClient.patientBatchOut(patientKeys);
|
|
this.patientFeignClient.patientBatchOut(patientKeys);
|
|
List<PatientDO> patientHospital = this.patientFeignClient.listHospitaledPatient().getData();
|
|
List<PatientDO> patientHospital = this.patientFeignClient.listHospitaledPatient().getData();
|
|
List<CustomerDO> customerHospital = this.syncPatient(patientHospital, false);
|
|
List<CustomerDO> customerHospital = this.syncPatient(patientHospital, false);
|
|
@@ -675,12 +678,14 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+// @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
public List<CustomerDO> syncTPAllPatient() {
|
|
public List<CustomerDO> syncTPAllPatient() {
|
|
List<PatientDO> patientHospital = this.patientFeignClient.listHospitaledPatientTp().getData();
|
|
List<PatientDO> patientHospital = this.patientFeignClient.listHospitaledPatientTp().getData();
|
|
List<CustomerDO> customerHospital = this.syncPatient(patientHospital, false);
|
|
List<CustomerDO> customerHospital = this.syncPatient(patientHospital, false);
|
|
// List<CustomerDO> sum = ListUtils.sum(customerOut, customerHospital);
|
|
// List<CustomerDO> sum = ListUtils.sum(customerOut, customerHospital);
|
|
//护理标识发生变化的用户
|
|
//护理标识发生变化的用户
|
|
- List<String> departKeys = patientHospital.stream().filter(p -> StrUtil.isNotEmpty(p.getPartKeyval())).map(p -> p.getPartKeyval()).collect(Collectors.toList()); //doctorAdviceFeignClient.listChangedDepartKeys().getData(); //doctorAdviceService.listChangedDepartKeys();
|
|
|
|
|
|
+ List<String> departKeys = patientHospital.stream().map(PatientDO::getPartKeyval).filter(StrUtil::isNotEmpty).distinct().collect(Collectors.toList()); //doctorAdviceFeignClient.listChangedDepartKeys().getData(); //doctorAdviceService.listChangedDepartKeys();
|
|
|
|
+ log.info(JSON.toJSONString(departKeys));
|
|
List<CustomerDO> customerNurseChange = this.nurseConfigService.renewDePartments(departKeys);
|
|
List<CustomerDO> customerNurseChange = this.nurseConfigService.renewDePartments(departKeys);
|
|
List<CustomerDO> customerAllChange = ListUtils.sum(customerHospital, customerNurseChange);
|
|
List<CustomerDO> customerAllChange = ListUtils.sum(customerHospital, customerNurseChange);
|
|
//看板条目内容发生变化的科室
|
|
//看板条目内容发生变化的科室
|