|
@ -1,18 +1,30 @@
|
|
|
package com.yihu.jw.hospital.prescription.service;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
|
|
|
import com.yihu.jw.doctor.service.excel.DoctorWorkTimeExcelDO;
|
|
|
import com.yihu.jw.doctor.service.excel.DoctorWorkTimeMainExcelDO;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
|
|
|
import com.yihu.jw.entity.base.org.BaseOrgDO;
|
|
|
import com.yihu.jw.entity.hospital.doctor.WlyyDoctorWorkTimeDO;
|
|
|
import com.yihu.jw.entity.hospital.prescription.WlyyHospitalWorkRuleDO;
|
|
|
import com.yihu.jw.hospital.doctor.dao.DoctorWorkTimeDao;
|
|
|
import com.yihu.jw.hospital.prescription.dao.WlyyHospitalWorkRuleDao;
|
|
|
import com.yihu.jw.org.dao.BaseOrgDao;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created by Trick on 2020/3/24.
|
|
@ -32,6 +44,18 @@ public class WorkTimeService {
|
|
|
@Autowired
|
|
|
private DoctorWorkTimeDao doctorWorkTimeDao;
|
|
|
|
|
|
@Autowired
|
|
|
private HibenateUtils hibenateUtils;
|
|
|
|
|
|
@Autowired
|
|
|
private BaseDoctorDao baseDoctorDao;
|
|
|
|
|
|
@Autowired
|
|
|
private BaseDoctorHospitalDao hospitalDao;
|
|
|
|
|
|
@Autowired
|
|
|
private BaseOrgDao baseOrgDao;
|
|
|
|
|
|
/**
|
|
|
* 保存排班规则
|
|
|
* @param workTimeRuleJson
|
|
@ -67,17 +91,90 @@ public class WorkTimeService {
|
|
|
* @return
|
|
|
*/
|
|
|
public Boolean checkDoctorWork(String doctor){
|
|
|
List<WlyyDoctorWorkTimeDO> list = doctorWorkTimeDao.checkDoctorWork(doctor,new Date());
|
|
|
String sql = "SELECT " +
|
|
|
" t.id " +
|
|
|
" FROM " +
|
|
|
" wlyy_doctor_work_time t " +
|
|
|
" WHERE " +
|
|
|
" t.doctor =:doctor " +
|
|
|
" AND t.start_time <=:startTime " +
|
|
|
" ANd t.end_time >=:endTime";
|
|
|
Map<String,Object> params = new HashedMap();
|
|
|
params.put("doctor",doctor);
|
|
|
Date date = new Date();
|
|
|
params.put("startTime",date);
|
|
|
params.put("endTime",date);
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params);
|
|
|
if(list!=null&&list.size()>0){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
public String saveWorkInfo(List<DoctorWorkTimeMainExcelDO> list,String date,String hospital){
|
|
|
Map<String,Object> rs = new HashedMap();
|
|
|
|
|
|
List<DoctorWorkTimeMainExcelDO> error =new ArrayList<>();
|
|
|
List<DoctorWorkTimeMainExcelDO> succ = new ArrayList<>();
|
|
|
|
|
|
if(list!=null&&list.size()>0){
|
|
|
for(DoctorWorkTimeMainExcelDO excelDO:list){
|
|
|
List<BaseDoctorDO> doctorDOs = baseDoctorDao.findByIdcard(excelDO.getIdCard());
|
|
|
if(doctorDOs==null||doctorDOs.size()==0){
|
|
|
excelDO.setErrorMes("第"+(excelDO.getRow()+1)+"行,医生身份证号不存在!");
|
|
|
error.add(excelDO);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
BaseDoctorDO doctorDO = doctorDOs.get(0);
|
|
|
BaseOrgDO orgDO = baseOrgDao.findByCode(hospital);
|
|
|
WlyyHospitalWorkRuleDO ruleDO = findWorkTimeRule(hospital);
|
|
|
|
|
|
//判断是否为本月
|
|
|
String dm = DateUtil.dateToStr(new Date(),"yyyy-MM");
|
|
|
if(dm.equals(date)){
|
|
|
//本月
|
|
|
}else{
|
|
|
//判断日期是否大于本月
|
|
|
Date now = DateUtil.strToDate(dm,"yyyy-MM");
|
|
|
Date work = DateUtil.strToDate(date,"yyyy-MM");
|
|
|
if(now.before(work)){
|
|
|
//
|
|
|
//导入的月份大于当前月份,删除导入月份所有历史排班记录
|
|
|
List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTimeByMonth(doctorDO.getId(),"%"+date+"%");
|
|
|
if(timeDOs!=null&&timeDOs.size()>0){
|
|
|
doctorWorkTimeDao.delete(timeDOs);
|
|
|
}
|
|
|
List<DoctorWorkTimeExcelDO> worktimes = excelDO.getWorkTime();
|
|
|
if(worktimes!=null&&worktimes.size()>0){
|
|
|
for(DoctorWorkTimeExcelDO worktime:worktimes){
|
|
|
WlyyDoctorWorkTimeDO workTimeDO = new WlyyDoctorWorkTimeDO();
|
|
|
workTimeDO.setDoctor(doctorDO.getId());
|
|
|
|
|
|
//上午
|
|
|
if("1".equals(worktime.getType())){
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
// workTimeDO.setSourceNumber(ruleDO.);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String ag[]){
|
|
|
|
|
|
// public static void main(String ag[]){
|
|
|
//
|
|
|
// Date start = DateUtil.stringToDate("2020-03-24 08:00:00","yyyy-MM-dd HH:mm:ss");
|
|
|
//
|
|
|
// Date end = DateUtil.stringToDate("2020-03-24 12:00:00","yyyy-MM-dd HH:mm:ss");
|
|
@ -87,8 +184,11 @@ public class WorkTimeService {
|
|
|
// Long jg = total/100;
|
|
|
//
|
|
|
// start.setTime(start.getTime()+jg);
|
|
|
//
|
|
|
// System.out.println(DateUtil.dateToStr(start,"yyyy-MM-dd HH:mm:ss"));
|
|
|
// }
|
|
|
|
|
|
Date now = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
|
Date work = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
|
|
|
|
System.out.println(now.before(work));
|
|
|
}
|
|
|
|
|
|
}
|