yxfydrug
qiuyt 3 months ago
parent a26be049e0
commit 82827cb167

@ -69,6 +69,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -1789,55 +1790,85 @@ public class yxfyClient extends CommonHttpClient {
List<VYpzsPresInfo> vInsurNationGoodsPhysics = new ArrayList<>(); List<VYpzsPresInfo> vInsurNationGoodsPhysics = new ArrayList<>();
String summaryNo; String summaryNo;
if (CollUtil.isNotEmpty(presInfoEntities)) { if (CollUtil.isNotEmpty(presInfoEntities)) {
if (presInfoEntities.size() == 1) {//进入拉取周边的同患者同处方 通过患者id 和 周边时间 上下10分钟 // if (presInfoEntities.size() == 1) {//进入拉取周边的同患者同处方 通过患者id 和 周边时间 上下10分钟
VYpzsPresInfo vYpzsPresInfo = presInfoEntities.get(0); // VYpzsPresInfo vYpzsPresInfo = presInfoEntities.get(0);
//
// LambdaQueryWrapper<VYpzsPresInfo> wrapper1 = new LambdaQueryWrapper<>();
// wrapper1.eq(VYpzsPresInfo::getPRESCRIBE_NUMBER, vYpzsPresInfo.getPRESCRIBE_NUMBER());
// presInfoEntities = vYpzsPresInfoMapper.selectList(wrapper1);
// vYpzsPresInfo = presInfoEntities.get(0);
//
// String layTimeStr = vYpzsPresInfo.getLAY_TIME();//当前处方的时间
// String sickId = vYpzsPresInfo.getSICK_ID();
// String icCardId = vYpzsPresInfo.getIC_CARD_ID();
//
// // 时间格式处理(补充格式定义)
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//
// // 转换为 LocalDateTime 并计算时间范围
// LocalDateTime layTime;
// try {
// layTimeStr = layTimeStr.replace(".0", "");
//
//
// layTime = LocalDateTime.parse(layTimeStr, formatter);
//
// }catch (Exception e){
// formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// layTime = LocalDateTime.parse(layTimeStr, formatter);
//
// }
// LocalDateTime startTime = layTime.minusMinutes(10); // 向前10分钟
// LocalDateTime endTime = layTime.plusMinutes(10); // 向后10分钟
//
// summaryNo = layTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + icCardId;
//
// LambdaQueryWrapper<VYpzsPresInfo> wrapper2 = new LambdaQueryWrapper<>();
// wrapper2.eq(VYpzsPresInfo::getSICK_ID, sickId);
// // 使用 TO_TIMESTAMP 函数进行转换
// wrapper2.apply("LAY_TIME BETWEEN TO_TIMESTAMP({0}, 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP({1}, 'YYYY-MM-DD HH24:MI:SS')",
// startTime.format(formatter), endTime.format(formatter));
//
// vInsurNationGoodsPhysics = vYpzsPresInfoMapper.selectList(wrapper2);
//
// }else {
//区分住院、门诊处方
LambdaQueryWrapper<VYpzsPresInfo> wrapper1 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<VYpzsPresInfo> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(VYpzsPresInfo::getPRESCRIBE_NUMBER, vYpzsPresInfo.getPRESCRIBE_NUMBER());
presInfoEntities = vYpzsPresInfoMapper.selectList(wrapper1);
vYpzsPresInfo = presInfoEntities.get(0);
String layTimeStr = vYpzsPresInfo.getLAY_TIME();//当前处方的时间
String sickId = vYpzsPresInfo.getSICK_ID();
String icCardId = vYpzsPresInfo.getIC_CARD_ID();
// 时间格式处理(补充格式定义) if (StringUtils.isNotEmpty(udiwmsBasicSkPrescribeRequest.getQueryCode()) && !udiwmsBasicSkPrescribeRequest.getQueryCode().equals("null") && udiwmsBasicSkPrescribeRequest.getBusType().equals("YPCF003")
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); && udiwmsBasicSkPrescribeRequest.getQueryCode().startsWith("'5")) {
// 转换为 LocalDateTime 并计算时间范围 List<String> collect = presInfoEntities.stream().map(VYpzsPresInfo::getQUERY_CODE).collect(Collectors.toList());
LocalDateTime layTime; wrapper1.in(VYpzsPresInfo::getSTOOUT_NO, collect);
vInsurNationGoodsPhysics = vYpzsPresInfoMapper.selectList(wrapper1);
String sickId = vInsurNationGoodsPhysics.get(0).getSICK_ID();
String layTimeStr = vInsurNationGoodsPhysics.get(0).getLAY_TIME();//当前处方的时间
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String result="";
try { try {
layTimeStr = layTimeStr.replace(".0", ""); Date date = inputFormat.parse(layTimeStr.replace(".000", "").replace(".0", ""));
result = outputFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
summaryNo = result + sickId;
layTime = LocalDateTime.parse(layTimeStr, formatter); }else {
List<String> collect = presInfoEntities.stream().map(VYpzsPresInfo::getPRESCRIBE_NUMBER).collect(Collectors.toList());
}catch (Exception e){ wrapper1.in(VYpzsPresInfo::getPRESCRIBE_NUMBER, collect);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); vInsurNationGoodsPhysics = vYpzsPresInfoMapper.selectList(wrapper1);
layTime = LocalDateTime.parse(layTimeStr, formatter); summaryNo = "";
} }
LocalDateTime startTime = layTime.minusMinutes(10); // 向前10分钟
LocalDateTime endTime = layTime.plusMinutes(10); // 向后10分钟
summaryNo = layTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + icCardId;
LambdaQueryWrapper<VYpzsPresInfo> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(VYpzsPresInfo::getSICK_ID, sickId);
// 使用 TO_TIMESTAMP 函数进行转换
wrapper2.apply("LAY_TIME BETWEEN TO_TIMESTAMP({0}, 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP({1}, 'YYYY-MM-DD HH24:MI:SS')",
startTime.format(formatter), endTime.format(formatter));
vInsurNationGoodsPhysics = vYpzsPresInfoMapper.selectList(wrapper2);
}else {
summaryNo = "";
List<String> collect = presInfoEntities.stream().map(VYpzsPresInfo::getPRESCRIBE_NUMBER).collect(Collectors.toList());
LambdaQueryWrapper<VYpzsPresInfo> wrapper1 = new LambdaQueryWrapper<>(); // }
wrapper1.in(VYpzsPresInfo::getPRESCRIBE_NUMBER, collect);
vInsurNationGoodsPhysics = vYpzsPresInfoMapper.selectList(wrapper1);
}
} else { } else {
summaryNo = ""; summaryNo = "";
} }
@ -1851,9 +1882,12 @@ public class yxfyClient extends CommonHttpClient {
List<IoCollectOrder> ioCollectOrders = new ArrayList<>(); List<IoCollectOrder> ioCollectOrders = new ArrayList<>();
groupedByPrescribeNumber.forEach((key, value) -> { groupedByPrescribeNumber.forEach((key, value) -> {
VYpzsPresInfo presInfoEntity = value.stream() DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 根据实际时间格式调整
.max(Comparator.comparing(VYpzsPresInfo::getLAY_TIME)) VYpzsPresInfo presInfoEntity = Optional.ofNullable(value)
.orElse(null);; .flatMap(l -> l.stream()
.max(Comparator.comparing(info -> LocalDateTime.parse(info.getLAY_TIME().replace(".000", "").replace(".0", ""), formatter))))
.orElse(null);
StringBuilder errorMsg = new StringBuilder(); StringBuilder errorMsg = new StringBuilder();
IoCollectOrder ioCollectOrder = new IoCollectOrder(); IoCollectOrder ioCollectOrder = new IoCollectOrder();
@ -2153,16 +2187,31 @@ public class yxfyClient extends CommonHttpClient {
// log.error("stoout_no===",stoout_no); // log.error("stoout_no===",stoout_no);
List<VYpzsPresInfo> list = vYpzsPresInfoMapper List<VYpzsPresInfo> list = vYpzsPresInfoMapper
.selectList( .selectList(
new QueryWrapper<VYpzsPresInfo>().eq("PRESCRIBE_NUMBER",ioCollectOrder.getBillNo()) new QueryWrapper<VYpzsPresInfo>()
.eq("PRESCRIBE_NUMBER", ioCollectOrder.getBillNo())
); );
if (CollUtil.isNotEmpty(list)) { if (CollUtil.isNotEmpty(list)) {
String stoout_no = list.get(0).getPRESCRIBE_NUMBER(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 根据实际时间格式调整
VYpzsPresInfo vYpzsPresInfo = Optional.ofNullable(list)
.flatMap(l -> l.stream()
.max(Comparator.comparing(info -> LocalDateTime.parse(info.getLAY_TIME().replace(".000", "").replace(".0", ""), formatter))))
.orElse(null);
List<VInsurNationGoodsPhysic> vInsurNationGoodsPhysics = goodsPhysicMapper.selectList(new LambdaQueryWrapper<VInsurNationGoodsPhysic>() LambdaQueryWrapper<VInsurNationGoodsPhysic> queryWrapper = Wrappers.lambdaQuery();
.eq(VInsurNationGoodsPhysic::getRXNO, stoout_no) queryWrapper.eq(VInsurNationGoodsPhysic::getRXNO, vYpzsPresInfo.getPRESCRIBE_NUMBER());
// 使用 apply 方法嵌入原生 SQL 进行日期格式转换 // 使用 apply 方法嵌入原生 SQL 进行日期格式转换
.apply("TO_CHAR(SEL_RETN_TIME, 'yyyy-MM-dd HH24:MI:SS') = TO_CHAR({0}, 'yyyy-MM-dd HH24:MI:SS')", list.get(0).getLAY_TIME())); if (getDataSourceType().equals("Oracle")) {
queryWrapper.apply("TO_CHAR(SEL_RETN_TIME, 'yyyy-MM-dd HH24:MI:SS') = {0}", vYpzsPresInfo.getLAY_TIME().replace(".000", "").replace(".0", ""));
} else {
queryWrapper.apply("DATE_FORMAT(SEL_RETN_TIME, '%Y-%m-%d %H:%i:%s') = DATE_FORMAT({0}, '%Y-%m-%d %H:%i:%s')", vYpzsPresInfo.getLAY_TIME().replace(".000", "").replace(".0", ""));
}
List<VInsurNationGoodsPhysic> vInsurNationGoodsPhysics = goodsPhysicMapper.selectList(queryWrapper);
if (CollUtil.isNotEmpty(vInsurNationGoodsPhysics)) { if (CollUtil.isNotEmpty(vInsurNationGoodsPhysics)) {
List<CollectOrderBizResponse> collectOrderBizResponseList = ioCollectOrder.getCollectOrderBizResponseList(); List<CollectOrderBizResponse> collectOrderBizResponseList = ioCollectOrder.getCollectOrderBizResponseList();

Loading…
Cancel
Save