|
|
|
package com.jiashi.dao;
|
|
|
|
|
|
|
|
import com.jiashi.service.CardInfo;
|
|
|
|
import com.jiashi.service.Picture;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
import javax.persistence.criteria.Predicate;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.concurrent.locks.Lock;
|
|
|
|
import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
|
|
|
|
@Repository
|
|
|
|
@Slf4j
|
|
|
|
public class DataQuery {
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private CardInfoRepository cardInfoRepository;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private PictureRepository pictureRepository;
|
|
|
|
|
|
|
|
@Value("${lz.disdate-range:}")
|
|
|
|
private String disdateRange;
|
|
|
|
|
|
|
|
private static final Lock cardInfoTableLock = new ReentrantLock();
|
|
|
|
|
|
|
|
public List<CardInfo> dateQuery() {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
Specification<CardInfo> specification = (root, query, cb) -> {
|
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
|
predicates.add(cb.equal(root.<String>get("state"), 0));
|
|
|
|
if (StringUtils.hasText(disdateRange)) {
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
String[] split = disdateRange.split(",");
|
|
|
|
try {
|
|
|
|
predicates.add(cb.between(root.<Date>get("outdate"), simpleDateFormat.parse(split[0]), simpleDateFormat.parse(split[1])));
|
|
|
|
} catch (ParseException e) {
|
|
|
|
log.error("出院时间条件错误:" + disdateRange + "," + e.getMessage(), e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
|
};
|
|
|
|
|
|
|
|
Sort.Order sortCreateTime = Sort.Order.asc("outdate");
|
|
|
|
Sort sort = Sort.by(sortCreateTime);
|
|
|
|
Pageable pageable = PageRequest.of(0, 1000, sort);
|
|
|
|
Page<CardInfo> all = cardInfoRepository.findAll(specification, pageable);
|
|
|
|
return all.toList();
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<CardInfo> dateQuery(int state) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
Specification<CardInfo> specification = (root, query, cb) -> {
|
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
|
predicates.add(cb.equal(root.<String>get("state"), state));
|
|
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
|
};
|
|
|
|
|
|
|
|
List<CardInfo> all = cardInfoRepository.findAll(specification);
|
|
|
|
return all;
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<CardInfo> dateQueryByInpNo(String inpNo) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
Specification<CardInfo> specification = (root, query, cb) -> {
|
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
|
predicates.add(cb.equal(root.<String>get("patno"), inpNo));
|
|
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
|
};
|
|
|
|
|
|
|
|
Sort.Order sortCreateTime = Sort.Order.asc("outdate");
|
|
|
|
Sort sort = Sort.by(sortCreateTime);
|
|
|
|
Pageable pageable = PageRequest.of(0, 1000, sort);
|
|
|
|
Page<CardInfo> all = cardInfoRepository.findAll(specification, pageable);
|
|
|
|
return all.toList();
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateBatch(List<CardInfo> cardInfos) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
for (CardInfo cardInfo : cardInfos) {
|
|
|
|
cardInfo.setState(1);
|
|
|
|
}
|
|
|
|
cardInfoRepository.saveAll(cardInfos);
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void updateBatchState(List<CardInfo> cardInfos, Integer state) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
List<String> ids = new ArrayList<>();
|
|
|
|
for (CardInfo cardInfo : cardInfos) {
|
|
|
|
String id = cardInfo.getId();
|
|
|
|
ids.add(id);
|
|
|
|
}
|
|
|
|
cardInfoRepository.updateState(ids, state);
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void updateBatchState(CardInfo cardInfo, Integer state) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
cardInfoRepository.updateState(cardInfo.getId(), state);
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<Picture> getPictures(String FileId) {
|
|
|
|
Specification<Picture> specification = (root, query, cb) -> {
|
|
|
|
List<Predicate> predicates = new ArrayList<>();
|
|
|
|
predicates.add(cb.equal(root.<String>get("fileid"), FileId));
|
|
|
|
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
|
};
|
|
|
|
List<Picture> all = pictureRepository.findAll(specification);
|
|
|
|
return all;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void updateBatchState(CardInfo cardInfo, Integer state, String desc) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
|
|
|
|
cardInfoRepository.updateState(cardInfo.getId(), state, desc);
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void updatePicPath(CardInfo cardInfo, String findpicpath) {
|
|
|
|
cardInfoTableLock.lock();
|
|
|
|
try {
|
|
|
|
cardInfoRepository.updatePicPath(cardInfo.getId(), findpicpath);
|
|
|
|
} finally {
|
|
|
|
cardInfoTableLock.unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|