|
@ -21,10 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
* Created by Trick on 2020/3/24.
|
|
* Created by Trick on 2020/3/24.
|
|
@ -111,12 +108,14 @@ public class WorkTimeService {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
public String saveWorkInfo(List<DoctorWorkTimeMainExcelDO> list,String date,String hospital){
|
|
|
|
Map<String,Object> rs = new HashedMap();
|
|
|
|
|
|
public Map<String,Object> getExcelWorkInfo(List<DoctorWorkTimeMainExcelDO> list,String date,String hospital){
|
|
|
|
|
|
|
|
Map<String,Object> rs = new HashedMap();
|
|
List<DoctorWorkTimeMainExcelDO> error =new ArrayList<>();
|
|
List<DoctorWorkTimeMainExcelDO> error =new ArrayList<>();
|
|
List<DoctorWorkTimeMainExcelDO> succ = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
List<WlyyDoctorWorkTimeDO> succ = new ArrayList<>();
|
|
|
|
Integer total = 0;
|
|
|
|
Integer errorTotal = 0;
|
|
|
|
Integer succTotal =0;
|
|
if(list!=null&&list.size()>0){
|
|
if(list!=null&&list.size()>0){
|
|
for(DoctorWorkTimeMainExcelDO excelDO:list){
|
|
for(DoctorWorkTimeMainExcelDO excelDO:list){
|
|
List<BaseDoctorDO> doctorDOs = baseDoctorDao.findByIdcard(excelDO.getIdCard());
|
|
List<BaseDoctorDO> doctorDOs = baseDoctorDao.findByIdcard(excelDO.getIdCard());
|
|
@ -133,62 +132,166 @@ public class WorkTimeService {
|
|
//判断是否为本月
|
|
//判断是否为本月
|
|
String dm = DateUtil.dateToStr(new Date(),"yyyy-MM");
|
|
String dm = DateUtil.dateToStr(new Date(),"yyyy-MM");
|
|
if(dm.equals(date)){
|
|
if(dm.equals(date)){
|
|
//本月
|
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
Date today = new Date();
|
|
|
|
calendar.setTime(today);
|
|
|
|
// 获取一月中第几天
|
|
|
|
int monthDay = calendar.get(Calendar.DAY_OF_MONTH);
|
|
|
|
//获取该月份一共几天
|
|
|
|
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
calendar.add(1,Calendar.DATE);
|
|
|
|
|
|
|
|
//更新时间范围
|
|
|
|
//开始时间
|
|
|
|
String st = DateUtil.dateToStr(calendar.getTime(),"yyyy-MM-dd");
|
|
|
|
Date startDate = DateUtil.strToDate(st+" 00:00:00");
|
|
|
|
//结束时间
|
|
|
|
String et = date+":"+maxDay+" 23:59:59";
|
|
|
|
Date endDate = DateUtil.strToDate(et);
|
|
|
|
|
|
|
|
//删除明天开始的排班记录
|
|
|
|
List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTimeByTime(doctorDO.getId(),startDate,endDate);
|
|
|
|
if(timeDOs!=null&&timeDOs.size()>0){
|
|
|
|
doctorWorkTimeDao.delete(timeDOs);
|
|
|
|
}
|
|
|
|
//解析具体排班
|
|
|
|
List<DoctorWorkTimeExcelDO> worktimes = excelDO.getWorkTime();
|
|
|
|
if(worktimes!=null&&worktimes.size()>0){
|
|
|
|
for(DoctorWorkTimeExcelDO worktime:worktimes){
|
|
|
|
//要排班的日期
|
|
|
|
String day = worktime.getDateOfMonth();
|
|
|
|
Integer dfm = Integer.parseInt(day);
|
|
|
|
//排班从明天开始
|
|
|
|
if(dfm >= (monthDay+1)){
|
|
|
|
WlyyDoctorWorkTimeDO workTimeDO = getWorkTimeDO(date,worktime,ruleDO,orgDO,doctorDO);
|
|
|
|
succ.add(workTimeDO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}else{
|
|
}else{
|
|
//判断日期是否大于本月
|
|
//判断日期是否大于本月
|
|
Date now = DateUtil.strToDate(dm,"yyyy-MM");
|
|
Date now = DateUtil.strToDate(dm,"yyyy-MM");
|
|
Date work = DateUtil.strToDate(date,"yyyy-MM");
|
|
Date work = DateUtil.strToDate(date,"yyyy-MM");
|
|
if(now.before(work)){
|
|
if(now.before(work)){
|
|
//
|
|
|
|
|
|
|
|
//导入的月份大于当前月份,删除导入月份所有历史排班记录
|
|
//导入的月份大于当前月份,删除导入月份所有历史排班记录
|
|
List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTimeByMonth(doctorDO.getId(),"%"+date+"%");
|
|
List<WlyyDoctorWorkTimeDO> timeDOs = doctorWorkTimeDao.findDoctorWorkTimeByMonth(doctorDO.getId(),"%"+date+"%");
|
|
if(timeDOs!=null&&timeDOs.size()>0){
|
|
if(timeDOs!=null&&timeDOs.size()>0){
|
|
doctorWorkTimeDao.delete(timeDOs);
|
|
doctorWorkTimeDao.delete(timeDOs);
|
|
}
|
|
}
|
|
|
|
//解析具体排班
|
|
List<DoctorWorkTimeExcelDO> worktimes = excelDO.getWorkTime();
|
|
List<DoctorWorkTimeExcelDO> worktimes = excelDO.getWorkTime();
|
|
if(worktimes!=null&&worktimes.size()>0){
|
|
if(worktimes!=null&&worktimes.size()>0){
|
|
for(DoctorWorkTimeExcelDO worktime:worktimes){
|
|
for(DoctorWorkTimeExcelDO worktime:worktimes){
|
|
WlyyDoctorWorkTimeDO workTimeDO = new WlyyDoctorWorkTimeDO();
|
|
|
|
workTimeDO.setDoctor(doctorDO.getId());
|
|
|
|
|
|
|
|
//上午
|
|
|
|
if("1".equals(worktime.getType())){
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// workTimeDO.setSourceNumber(ruleDO.);
|
|
|
|
|
|
WlyyDoctorWorkTimeDO workTimeDO = getWorkTimeDO(date,worktime,ruleDO,orgDO,doctorDO);
|
|
|
|
succ.add(workTimeDO);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
total = list.size();
|
|
|
|
if(error!=null&&error.size()>0){
|
|
|
|
errorTotal = error.size();
|
|
|
|
}
|
|
|
|
succTotal = total-errorTotal;
|
|
|
|
|
|
|
|
if(succ!=null&&succ.size()>0){
|
|
|
|
//保存排班
|
|
|
|
doctorWorkTimeDao.save(succ);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rs.put("error",error);
|
|
|
|
rs.put("succ",succ);
|
|
|
|
rs.put("total",total);
|
|
|
|
rs.put("errorTotal",errorTotal);
|
|
|
|
rs.put("succTotal",succTotal);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
public WlyyDoctorWorkTimeDO getWorkTimeDO(String date,DoctorWorkTimeExcelDO worktime,WlyyHospitalWorkRuleDO ruleDO,BaseOrgDO orgDO,BaseDoctorDO doctorDO){
|
|
|
|
WlyyDoctorWorkTimeDO workTimeDO = new WlyyDoctorWorkTimeDO();
|
|
|
|
|
|
|
|
workTimeDO.setDoctor(doctorDO.getId());
|
|
|
|
workTimeDO.setDoctorName(doctorDO.getName());
|
|
|
|
workTimeDO.setHospital(orgDO.getCode());
|
|
|
|
workTimeDO.setHospitalName(orgDO.getName());
|
|
|
|
|
|
|
|
String day = worktime.getDateOfMonth();
|
|
|
|
if(day.length()<2){
|
|
|
|
day ="0"+day;
|
|
|
|
}
|
|
|
|
|
|
|
|
String workDate = date+"-"+day;
|
|
|
|
logger.info("workDate:"+workDate);
|
|
|
|
workTimeDO.setDate(workDate);
|
|
|
|
workTimeDO.setCreateTime(new Date());
|
|
|
|
|
|
|
|
//上午
|
|
|
|
if("1".equals(worktime.getType())){
|
|
|
|
|
|
|
|
workTimeDO.setTimeType("1");
|
|
|
|
workTimeDO.setType("1");
|
|
|
|
workTimeDO.setSourceNumber(ruleDO.getSwSourceNum());
|
|
|
|
workTimeDO.setStartTime(DateUtil.strToDate(workDate+" "+ruleDO.getSwStartTime()+":00"));
|
|
|
|
workTimeDO.setEndTime(DateUtil.strToDate(workDate+" "+ruleDO.getSwEndTime()+" :00"));
|
|
|
|
|
|
|
|
}else if("2".equals(worktime.getType())){
|
|
|
|
|
|
|
|
workTimeDO.setTimeType("2");
|
|
|
|
workTimeDO.setType("1");
|
|
|
|
workTimeDO.setSourceNumber(ruleDO.getXwSourceNum());
|
|
|
|
workTimeDO.setStartTime(DateUtil.strToDate(workDate+" "+ruleDO.getXwStartTime()+":00"));
|
|
|
|
workTimeDO.setEndTime(DateUtil.strToDate(workDate+" "+ruleDO.getXwEndTime()+" :00"));
|
|
|
|
|
|
|
|
}else if("3".equals(worktime.getType())){
|
|
|
|
|
|
|
|
workTimeDO.setTimeType("3");
|
|
|
|
workTimeDO.setType("1");
|
|
|
|
workTimeDO.setSourceNumber(ruleDO.getWsSourceNum());
|
|
|
|
workTimeDO.setStartTime(DateUtil.strToDate(workDate+" "+ruleDO.getWsStartTime()+":00"));
|
|
|
|
workTimeDO.setEndTime(DateUtil.strToDate(workDate+" "+ruleDO.getWsEndTime()+":00"));
|
|
|
|
}
|
|
|
|
return workTimeDO;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// public String saveDoctorWorkTime(List<WlyyDoctorWorkTimeDO> workTimeDOs){
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String ag[]){
|
|
|
|
|
|
|
|
// Date start = DateUtil.stringToDate("2020-03-24 08:00:00","yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
// public static void main(String ag[]){
|
|
//
|
|
//
|
|
// Date end = DateUtil.stringToDate("2020-03-24 12:00:00","yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
//// 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");
|
|
|
|
////
|
|
|
|
//// Long total =end.getTime()-start.getTime();
|
|
|
|
////
|
|
|
|
//// Long jg = total/100;
|
|
|
|
////
|
|
|
|
//// start.setTime(start.getTime()+jg);
|
|
//
|
|
//
|
|
// Long total =end.getTime()-start.getTime();
|
|
|
|
|
|
//// Date now = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
|
|
//// Date work = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
//
|
|
//
|
|
// Long jg = total/100;
|
|
|
|
|
|
// Calendar calendar = Calendar.getInstance();
|
|
|
|
// Date today = new Date();
|
|
|
|
// calendar.setTime(today);// 此处可换为具体某一时间
|
|
|
|
// int monthDay = calendar.get(Calendar.DAY_OF_MONTH);
|
|
|
|
// int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
//
|
|
//
|
|
// start.setTime(start.getTime()+jg);
|
|
|
|
|
|
|
|
Date now = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
|
|
Date work = DateUtil.strToDate("2020-04","yyyy-MM");
|
|
|
|
|
|
|
|
System.out.println(now.before(work));
|
|
|
|
}
|
|
|
|
|
|
// System.out.println(monthDay);
|
|
|
|
// }
|
|
|
|
|
|
}
|
|
}
|