|
@ -0,0 +1,300 @@
|
|
|
package com.yihu.jw.hospital.httplog.service;
|
|
|
|
|
|
import com.yihu.jw.entity.hospital.httplog.YlzHttpLogDO;
|
|
|
import com.yihu.jw.hospital.httplog.dao.YlzHttpLogDao;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
public class YlzHttpLogService extends BaseJpaService<YlzHttpLogDO, YlzHttpLogDao> {
|
|
|
@Autowired
|
|
|
private YlzHttpLogDao wlyyHttpLogDao;
|
|
|
@Value("${wechat.id}")
|
|
|
private String wxId;
|
|
|
@Autowired
|
|
|
private HibenateUtils hibenateUtils;
|
|
|
|
|
|
|
|
|
@Value("${wechat.flag}")
|
|
|
private boolean flag;
|
|
|
//保存http日志接口
|
|
|
public void saveHttpLog(String code,String name,String patient,String doctor,String request,String response,String status ){
|
|
|
YlzHttpLogDO wlyyHttpLogDO = new YlzHttpLogDO();
|
|
|
wlyyHttpLogDO.setCode(code);
|
|
|
wlyyHttpLogDO.setName(name);
|
|
|
wlyyHttpLogDO.setPatient(patient);
|
|
|
wlyyHttpLogDO.setDoctor(doctor);
|
|
|
wlyyHttpLogDO.setRequest(request);
|
|
|
wlyyHttpLogDO.setResponse(response);
|
|
|
wlyyHttpLogDO.setStatus(status);
|
|
|
wlyyHttpLogDO.setCreateTime(new Date());
|
|
|
wlyyHttpLogDao.save(wlyyHttpLogDO);
|
|
|
}
|
|
|
public MixEnvelop findLog(String startTime, String endTime, String faceName, String patient, String doctor, Integer page, Integer pageSize){
|
|
|
MixEnvelop mixEnvelop = new MixEnvelop();
|
|
|
String sql = "select t.id as \"id\"," +
|
|
|
"t.code as \"code\"," +
|
|
|
"t.name as \"name\"," +
|
|
|
"t.patient as \"patient\"," +
|
|
|
"t.doctor as \"doctor\"," +
|
|
|
"t.request as \"request\"," +
|
|
|
"t.response as \"response\"," +
|
|
|
"t.status as \"status\",";
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}else {
|
|
|
sql+=" to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
|
|
|
}
|
|
|
}else{
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}
|
|
|
sql+=" a.name as \"patientName\"," +
|
|
|
"b.name as \"doctorName\"" +
|
|
|
" from ylz_http_log t left join base_patient a on t.patient = a.id " +
|
|
|
" left join base_doctor b on t.doctor = b.id where 1=1 ";
|
|
|
if (StringUtils.isNotBlank(startTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(endTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time< to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(faceName)){
|
|
|
sql+=" and t.name like '%"+faceName+"%'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(patient)){
|
|
|
sql+=" and a.name like '%"+patient+"%'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(doctor)){
|
|
|
sql+=" and b.name like '%"+doctor+"%'";
|
|
|
}
|
|
|
sql+=" order by t.create_time desc ";
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
|
|
|
String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
mixEnvelop.setTotalCount(count.intValue());
|
|
|
mixEnvelop.setDetailModelList(list);
|
|
|
mixEnvelop.setPageSize(pageSize);
|
|
|
mixEnvelop.setCurrPage(page);
|
|
|
return mixEnvelop;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public MixEnvelop findWlyyHttpLogInBase(String startTime, String endTime, String code,String faceName, String patient, String doctor,String responeKeyWord,String requestKeyWord, Integer page, Integer pageSize){
|
|
|
MixEnvelop mixEnvelop = new MixEnvelop();
|
|
|
String sql = "select t.id as \"id\"," +
|
|
|
"t.code as \"code\"," +
|
|
|
"t.name as \"name\"," +
|
|
|
"t.patient as \"patient\"," +
|
|
|
"t.doctor as \"doctor\"," +
|
|
|
"t.request as \"request\"," +
|
|
|
"t.response as \"response\"," +
|
|
|
"t.status as \"status\",";
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}else {
|
|
|
sql+=" to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
|
|
|
}
|
|
|
}else{
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}
|
|
|
sql+=" a.name as \"patientName\"," +
|
|
|
"b.name as \"doctorName\"" +
|
|
|
" from ylz_http_log t left join base_patient a on t.patient = a.id " +
|
|
|
" left join base_doctor b on t.doctor = b.id where 1=1 ";
|
|
|
if (StringUtils.isNotBlank(startTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(endTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time< to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(code)){
|
|
|
sql+=" and t.code = '"+code+"'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(faceName)){
|
|
|
sql+=" and (t.name like '%"+faceName+"%' or t.code = '"+faceName+"')";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(patient)){
|
|
|
sql+=" and (a.name like '%"+patient+"%' or t.patient = '"+patient+"')";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(doctor)){
|
|
|
sql+=" and (b.name like '%"+doctor+"%'or t.doctor = '"+doctor+"')";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(requestKeyWord)){
|
|
|
sql+=" and t.request like '%"+requestKeyWord+"%'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(responeKeyWord)){
|
|
|
sql+=" and t.response like '%"+responeKeyWord+"%'";
|
|
|
}
|
|
|
sql+=" order by t.create_time desc";
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
|
|
|
String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
mixEnvelop.setTotalCount(count.intValue());
|
|
|
mixEnvelop.setDetailModelList(list);
|
|
|
mixEnvelop.setPageSize(pageSize);
|
|
|
mixEnvelop.setCurrPage(page);
|
|
|
return mixEnvelop;
|
|
|
}
|
|
|
public MixEnvelop findLoginLog(String startTime, String endTime, String userId,String userName, String openId, String userAgent,String loginType,String opreateStart, String opreateEnd, Integer page, Integer pageSize) {
|
|
|
MixEnvelop mixEnvelop = new MixEnvelop();
|
|
|
String sql = "select t.id as \"id\"," +
|
|
|
"t.user_id as \"userId\"," +
|
|
|
"p.name as \"patientName\"," +
|
|
|
"d.name as \"doctorName\"," +
|
|
|
"t.user_agent as \"userAgent\"," +
|
|
|
"t.login_type as \"loginType\"," +
|
|
|
"t.openid as \"openid\"," ;
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}else {
|
|
|
sql+=" to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
|
|
|
}
|
|
|
}else{
|
|
|
sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s') as \"createTime\",";
|
|
|
}
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+="date_format(t.operate_time, '%Y-%m-%d %H:%i:%s') as \"operateTime\",";
|
|
|
}else {
|
|
|
sql+=" to_char(t.operate_time,'yyyy-MM-dd HH24:mi:ss') as \"operateTime\",";
|
|
|
}
|
|
|
}else{
|
|
|
sql+="date_format(t.operate_time, '%Y-%m-%d %H:%i:%s') as \"operateTime\",";
|
|
|
}
|
|
|
sql+=" a.name as \"patientName\"," +
|
|
|
"b.name as \"doctorName\"" +
|
|
|
" from ylz_http_log t left join base_patient p on t.user_id = p.id " +
|
|
|
" left join base_doctor d on t.user_id = d.id where 1=1 ";
|
|
|
if (StringUtils.isNotBlank(startTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time > '"+startTime+"'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(endTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}else {
|
|
|
sql+=" and t.create_time< to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.create_time<'" + endTime + "'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(userId)){
|
|
|
sql+=" and t.user_id = '"+userId+"'";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(userName)){
|
|
|
if ("2".equalsIgnoreCase(loginType)){
|
|
|
sql+=" and d.name like '%"+userName+"%'";
|
|
|
}else {
|
|
|
sql+=" and p.name like '%"+userName+"%'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(loginType)){
|
|
|
sql+=" and t.login_type ='"+loginType+"'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(openId)){
|
|
|
sql+=" and t.openId like '%"+openId+"%'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(userAgent)){
|
|
|
sql+=" and t.user_agent like '%"+userAgent+"%'";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(opreateStart)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.operate_time > '"+opreateStart+"'";
|
|
|
}else {
|
|
|
sql+=" and t.operate_time > to_date('" + opreateStart + "', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.operate_time > '"+opreateStart+"'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(opreateEnd)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sql+=" and t.operate_time<'" + opreateEnd + "'";
|
|
|
}else {
|
|
|
sql+=" and t.operate_time< to_date('" + opreateEnd + "','yyyy-mm-dd hh24:mi:ss')";
|
|
|
}
|
|
|
}else{
|
|
|
sql+=" and t.operate_time<'" + opreateEnd + "'";
|
|
|
}
|
|
|
}
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
|
|
|
String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
mixEnvelop.setTotalCount(count.intValue());
|
|
|
mixEnvelop.setDetailModelList(list);
|
|
|
mixEnvelop.setPageSize(pageSize);
|
|
|
mixEnvelop.setCurrPage(page);
|
|
|
return mixEnvelop;
|
|
|
}
|
|
|
}
|