|
@ -89,6 +89,8 @@ public class DailyReportUploadService {
|
|
|
private BaseDailyReportItemDao reportItemDao;
|
|
|
@Autowired
|
|
|
private BaseDailyReportItemMembersDao reportItemMembersDao;
|
|
|
@Autowired
|
|
|
private BaseDailyUrgingRecordDao urgingRecordDao;
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(DailyReportUploadService.class);
|
|
|
|
|
@ -406,6 +408,16 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
tmp.setReportItemId(reportItemDO.getId());
|
|
|
tmp.setReportItemName(title);
|
|
|
}else {
|
|
|
BaseDailyReportItemMembersDO membersDOTmp = reportItemMembersDao.findMembers(tmp.getReportItemId(),doctorId);
|
|
|
if (null==membersDOTmp){
|
|
|
membersDOTmp = new BaseDailyReportItemMembersDO();
|
|
|
membersDOTmp.setReportItemId(tmp.getReportItemId());
|
|
|
membersDOTmp.setUserId(doctorId);
|
|
|
membersDOTmp.setUserName(doctorDO.getName());
|
|
|
membersDOTmp.setDel(1);
|
|
|
reportItemMembersDao.save(membersDOTmp);
|
|
|
}
|
|
|
}
|
|
|
BaseDailyReportItemDO reportItemDO = reportItemDao.findOne(tmp.getReportItemId());
|
|
|
if (null!=reportItemDO){
|
|
@ -561,6 +573,27 @@ public class DailyReportUploadService {
|
|
|
baseDailyReportLogDO.setTypeName("上级核实未存疑");
|
|
|
baseDailyReportLogDO.setContent("上级核实未存疑");
|
|
|
}
|
|
|
try {
|
|
|
BaseDoctorDO remindDoctorDO = baseDoctorDao.findById(dailyReportUploadDO.getDoctorId());
|
|
|
if (remindDoctorDO != null) {
|
|
|
try {
|
|
|
WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,remindDoctorDO.getMobile());
|
|
|
if(enterpriseUserDO==null){
|
|
|
logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId);
|
|
|
}else{
|
|
|
String title = "待办事项";
|
|
|
String des = "您好,"+doctorDO.getName()+"对您提交的每日日报已核实,请点击前往查看。";
|
|
|
String url = "https://ehr.yihu.com/hlwyy/zjxl/dailyReport/#/workSummary/commit?id="+dailyReportUploadDO.getId();
|
|
|
String res = enterpriseService.sendTWMesByDoctor(wechatId,remindDoctorDO.getId(),title,des,url);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
dailyReportLogDao.save(baseDailyReportLogDO);
|
|
|
|
|
|
}else {
|
|
@ -626,6 +659,97 @@ public class DailyReportUploadService {
|
|
|
return dailyReportUploadDO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 催促代办项目
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public List<BaseDailyUrgingRecordDO> urgingDoctor(String doctorId,String receiveDoctorId, List<BaseDailyUrgingRecordDO> urgingRecordDOS) throws Exception {
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findById(doctorId);
|
|
|
if (StringUtils.isBlank(receiveDoctorId)){
|
|
|
BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDao.findOne(urgingRecordDOS.get(0).getReportId());
|
|
|
if (null==dailyReportUploadDO){
|
|
|
throw new Exception("传参错误");
|
|
|
}
|
|
|
}
|
|
|
String code = UUID.randomUUID().toString().replaceAll("-", "");
|
|
|
|
|
|
if (null==doctorDO){
|
|
|
throw new Exception("无权限操作");
|
|
|
}
|
|
|
BaseDoctorDO receiveDoctor = baseDoctorDao.findById(receiveDoctorId);
|
|
|
if (null==receiveDoctor){
|
|
|
throw new Exception("员工不存在");
|
|
|
}
|
|
|
String dept = "";
|
|
|
List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(receiveDoctorId);
|
|
|
if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
|
|
|
dept = doctorHospitalDOS.get(0).getDeptCode();
|
|
|
}
|
|
|
for (BaseDailyUrgingRecordDO tmp:urgingRecordDOS){
|
|
|
tmp.setCode(code);
|
|
|
tmp.setReceiveDoctor(receiveDoctorId);
|
|
|
tmp.setDoctorName(receiveDoctor.getName());
|
|
|
tmp.setCreateUser(doctorId);
|
|
|
tmp.setCreateUserName(doctorDO.getName());
|
|
|
tmp.setCreateTime(new Date());
|
|
|
tmp.setDept(dept);
|
|
|
tmp.setDel(1);
|
|
|
}
|
|
|
try {
|
|
|
BaseDoctorDO remindDoctorDO = baseDoctorDao.findById(receiveDoctorId);
|
|
|
if (remindDoctorDO != null) {
|
|
|
try {
|
|
|
WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,remindDoctorDO.getMobile());
|
|
|
if(enterpriseUserDO==null){
|
|
|
logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId);
|
|
|
}else{
|
|
|
String title = "日报反馈";
|
|
|
String des = "您好,"+doctorDO.getName()+"对您发起"+urgingRecordDOS.size()+"项加急待办事项,请点击进行查看。";
|
|
|
String url = "https://ehr.yihu.com/hlwyy/zjxl/dailyReport/#/workSummary/urge?code="+code;
|
|
|
String res = enterpriseService.sendTWMesByDoctor(wechatId,remindDoctorDO.getId(),title,des,url);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
urgingRecordDao.save(urgingRecordDOS);
|
|
|
urgingRecordDOS = urgingRecordDao.findByCodeAndDel(code,1);
|
|
|
return urgingRecordDOS;
|
|
|
}
|
|
|
|
|
|
public List<BaseDailyUrgingRecordDO> getUrgingList(String code,String doctor,String reportId,String createUser,String startTime,String endTime){
|
|
|
String sql = " select ur.* from base_daily_urging_record ur where 1=1 ";
|
|
|
if (StringUtils.isNotBlank(code)){
|
|
|
sql +=" and ur.code='"+code+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(doctor)){
|
|
|
sql +=" and ur.receive_doctor='"+doctor+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(reportId)){
|
|
|
sql +=" and ur.report_id='"+reportId+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(createUser)){
|
|
|
sql +=" and ur.create_user='"+createUser+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(startTime)){
|
|
|
sql +=" and ur.create_time>='"+startTime+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(endTime)){
|
|
|
sql +=" and ur.create_time<='"+endTime+"' ";
|
|
|
}
|
|
|
sql +=" group by ur.code order by ur.create_time desc ";
|
|
|
|
|
|
return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseDailyUrgingRecordDO.class));
|
|
|
}
|
|
|
|
|
|
public List<BaseDailyUrgingRecordDO> getUrgingDetail(String code){
|
|
|
return urgingRecordDao.findByCodeAndDel(code,1);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取当天日报上传记录
|
|
|
* @param doctor
|
|
@ -660,6 +784,13 @@ public class DailyReportUploadService {
|
|
|
tmp.setDetailDOList(detailDOS);
|
|
|
List<BaseDailyReportLogDO> dailyReportLogDOList = dailyReportLogDao.findByReportId(tmp.getId());
|
|
|
tmp.setDailyReportLogDOList(dailyReportLogDOList);
|
|
|
tmp.setDoubt(false);
|
|
|
if (detailDOS.size()>0){
|
|
|
Integer sum = detailDOS.stream().mapToInt(e->e.getDoubt()==null?0:e.getDoubt()).sum();
|
|
|
if (sum>0){
|
|
|
tmp.setDoubt(true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Map<String,List<BaseDailyReportUploadDO>> reportList = list.stream().collect(Collectors.groupingBy(BaseDailyReportUploadDO::getReportDate));
|
|
|
Date endDate =DateUtil.strToDate(endDateStr);
|
|
@ -722,14 +853,20 @@ public class DailyReportUploadService {
|
|
|
reportUploadDO = new BaseDailyReportUploadDO();
|
|
|
}
|
|
|
//今日本人上报数量
|
|
|
String benrenTotalSql = " select count(1) from base_doctor_daily_report_upload where doctor_id='"+doctorId+"' and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
String benrenTotalSql = " select count(up.id) from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
" where up.doctor_id='"+doctorId+"' and up.report_date>='"+nowDate+"' and up.report_date<='"+nowDate+"' ";
|
|
|
//本人已上报数量
|
|
|
String benrenshangbaoTotalSql = " select count(1) from base_doctor_daily_report_upload where doctor_id='"+doctorId+"' ";
|
|
|
String benrenshangbaoTotalSql = " select count(up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
" where up.doctor_id='"+doctorId+"' ";
|
|
|
//本人上级未核实事项数
|
|
|
String benrenVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
String benrenVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1" +
|
|
|
" inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where up.doctor_id='"+doctorId+"' and de.state=1 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
//本人上级已核实事项数
|
|
|
String benrenNotVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
String benrenNotVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where up.doctor_id='"+doctorId+"' and de.state=0 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
|
|
|
//科室总人数
|
|
@ -744,26 +881,32 @@ public class DailyReportUploadService {
|
|
|
//总人数
|
|
|
doctorTotalSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 ";
|
|
|
//今日上报人数
|
|
|
sqlTotalSql = " select count(1) from base_doctor_daily_report_upload where report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
sqlTotalSql = " select count(up.id) from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1" +
|
|
|
" where up.report_date>='"+nowDate+"' and up.report_date<='"+nowDate+"' ";
|
|
|
//今日核实数量
|
|
|
verifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
verifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where de.state=1 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
//今日未核实数量
|
|
|
notVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
notVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where de.state=0 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' ";
|
|
|
} else if (level == 2) {
|
|
|
//总人次
|
|
|
doctorTotalSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and id " +
|
|
|
" IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
|
|
|
//今日上报人数
|
|
|
sqlTotalSql = " select count(1) from base_doctor_daily_report_upload where report_date>='"+nowDate+"' and report_date<='"+nowDate+"' " +
|
|
|
" and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
|
sqlTotalSql = " select count(up.id) from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
" where up.report_date>='"+nowDate+"' and up.report_date<='"+nowDate+"' " +
|
|
|
" and up.doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
|
//今日核实数量
|
|
|
verifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
verifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where de.state=1 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"'" +
|
|
|
" and up.doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
|
//今日未核实数量
|
|
|
notVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
notVerifiedSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de on up.id = de.report_id" +
|
|
|
" where de.state=0 and report_date>='"+nowDate+"' and report_date<='"+nowDate+"' " +
|
|
|
" and up.doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
|
}
|
|
@ -824,16 +967,16 @@ public class DailyReportUploadService {
|
|
|
String deptSql = " select code,name,dh1.doctorTotal,dh2.yishangbaoTotal,dh3.verified,dh4.notVerified,dh5.shangchuanTotal from dict_hospital_dept hd " +
|
|
|
"LEFT JOIN (select count(1) as 'doctorTotal',dh.dept_code from base_doctor d LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"WHERE d.del = 1 AND dh.del = 1 "+doctorSqlCondition+" GROUP BY dh.dept_code)dh1 ON hd.CODE = dh1.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 " +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh2 ON hd.CODE = dh2.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(distinct up.id) 'verified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 and de.state=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh3 ON hd.CODE = dh3.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(distinct up.id) 'notVerified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 and de.state=0 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code)dh4 ON hd.CODE = dh4.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 " +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 "+doctorSqlCondition+reportCondition+")dh5 ON hd.CODE = dh5.dept_code " +
|
|
|
" WHERE hd.consult_dept_flag = 1 ";
|
|
@ -945,16 +1088,16 @@ public class DailyReportUploadService {
|
|
|
String deptSql = " select code,name,dh1.doctorTotal,dh2.yishangbaoTotal,dh3.verified,dh4.notVerified,dh5.shangchuanTotal from dict_hospital_dept hd " +
|
|
|
"LEFT JOIN (select count(1) as 'doctorTotal',dh.dept_code from base_doctor d LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"WHERE d.del = 1 AND dh.del = 1 "+doctorSqlCondition+" GROUP BY dh.dept_code)dh1 ON hd.CODE = dh1.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'yishangbaoTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 " +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh2 ON hd.CODE = dh2.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(distinct up.id) 'verified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 and de.state=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh3 ON hd.CODE = dh3.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(distinct up.id) 'notVerified' from base_doctor_daily_report_upload up LEFT JOIN base_daily_report_detail de on up.id = de.report_id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 and de.state=0 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh4 ON hd.CODE = dh4.dept_code " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id " +
|
|
|
"LEFT JOIN(select dh.dept_code,count(up.id) 'shangchuanTotal' from base_doctor_daily_report_upload up INNER JOIN base_doctor d on up.doctor_id = d.id and d.del=1 " +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id " +
|
|
|
"where 1=1 "+doctorSqlCondition+reportCondition+" GROUP BY dh.dept_code )dh5 ON hd.CODE = dh5.dept_code " +
|
|
|
" WHERE hd.consult_dept_flag = 1 ";
|
|
@ -1019,8 +1162,25 @@ public class DailyReportUploadService {
|
|
|
* @param endDate
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray selectListByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name,Integer doubtType) {
|
|
|
public JSONArray selectListByTotal(String user,String dept, String idType, String status, String state, String startDate, String endDate, String name,Integer doubtType) {
|
|
|
List<String> list = new ArrayList<>();
|
|
|
|
|
|
String doctorSqlCondition = " ";
|
|
|
if (StringUtils.isNotBlank(user)){
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' and role_code ='admin' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()>0){
|
|
|
doctorSqlCondition = " and d.id in ( select distinct doc.id from base_doctor doc " +
|
|
|
"INNER JOIN base_doctor_role role on doc.id =role.doctor_code where doc.del=1 and doc.identity=0 " +
|
|
|
"union " +
|
|
|
"select distinct doc.id from base_doctor doc left JOIN base_doctor_hospital dh on doc.id = dh.doctor_code " +
|
|
|
" LEFT JOIN (select distinct dh1.dept_code,doc1.id from base_doctor doc1 " +
|
|
|
"INNER JOIN base_doctor_role role1 on doc1.id =role1.doctor_code " +
|
|
|
"INNER JOIN base_doctor_hospital dh1 on doc1.id =dh1.doctor_code where doc1.del=1 and dh1.del=1 and doc1.identity=0 )A on dh.dept_code = A.dept_code " +
|
|
|
"where doc.del=1 and doc.identity=0 and A.dept_code is null ) ";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Date startTime = DateUtil.strToDateShort(startDate);
|
|
|
Date endDateTime = DateUtil.strToDateShort(endDate);
|
|
|
int i=0;
|
|
@ -1033,7 +1193,7 @@ public class DailyReportUploadService {
|
|
|
JSONArray array = new JSONArray();
|
|
|
for ( i = 0; i < list.size(); i++) {
|
|
|
String date = list.get(i);
|
|
|
String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0 ";
|
|
|
String doctorSql = " select COUNT(1) as 'total' from base_doctor d where d.del=1 and d.identity=0 "+doctorSqlCondition;
|
|
|
String deptCondition = "";
|
|
|
if (StringUtils.isNoneBlank(dept)) {
|
|
|
deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
|
|
@ -1091,8 +1251,24 @@ public class DailyReportUploadService {
|
|
|
* @param name total
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray selectListInfoByTotal(String dept, String idType, String status, String state, String startDate, String endDate, String name,
|
|
|
public JSONArray selectListInfoByTotal(String user, String dept, String idType, String status, String state, String startDate, String endDate, String name,
|
|
|
Integer doubtType) {
|
|
|
String doctorSqlCondition = " ";
|
|
|
if (StringUtils.isNotBlank(user)){
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' and role_code ='admin' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()>0){
|
|
|
doctorSqlCondition = " and d.id in ( select distinct doc.id from base_doctor doc " +
|
|
|
"INNER JOIN base_doctor_role role on doc.id =role.doctor_code where doc.del=1 and doc.identity=0 " +
|
|
|
"union " +
|
|
|
"select distinct doc.id from base_doctor doc left JOIN base_doctor_hospital dh on doc.id = dh.doctor_code " +
|
|
|
" LEFT JOIN (select distinct dh1.dept_code,doc1.id from base_doctor doc1 " +
|
|
|
"INNER JOIN base_doctor_role role1 on doc1.id =role1.doctor_code " +
|
|
|
"INNER JOIN base_doctor_hospital dh1 on doc1.id =dh1.doctor_code where doc1.del=1 and dh1.del=1 and doc1.identity=0 )A on dh.dept_code = A.dept_code " +
|
|
|
"where doc.del=1 and doc.identity=0 and A.dept_code is null ) ";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<String> list = new ArrayList<>();
|
|
|
Date startTime = DateUtil.strToDateShort(startDate);
|
|
|
Date endDateTime = DateUtil.strToDateShort(endDate);
|
|
@ -1106,7 +1282,7 @@ public class DailyReportUploadService {
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (i = 0; i < list.size(); i++) {
|
|
|
String date = list.get(i);
|
|
|
String doctorSql = " select d.name,d.id,d.job_title_name as jobTitleName,d.photo from base_doctor d where d.del=1 and d.identity=0 ";
|
|
|
String doctorSql = " select d.name,d.id,d.job_title_name as jobTitleName,d.photo from base_doctor d where d.del=1 and d.identity=0 "+doctorSqlCondition;
|
|
|
String deptCondition = "";
|
|
|
if (StringUtils.isNoneBlank(dept)) {
|
|
|
deptCondition += " (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
|
|
@ -1147,7 +1323,8 @@ public class DailyReportUploadService {
|
|
|
stateCondition += " and d1.state='"+state+"' ";
|
|
|
|
|
|
}
|
|
|
String sql = " select d1.id,d1.state,total_hour from base_doctor_daily_report_upload d1 where d1.doctor_id='"+id+"' and d1.report_date>='"+date+"' and d1.report_date<='"+date+"' ORDER BY report_date desc ";
|
|
|
String sql = " select d1.id,d1.state,total_hour from base_doctor_daily_report_upload d1 INNER JOIN base_doctor doc on d1.doctor_id = doc.id " +
|
|
|
" and doc.del=1 where d1.doctor_id='"+id+"' and d1.report_date>='"+date+"' and d1.report_date<='"+date+"' ORDER BY report_date desc ";
|
|
|
List<Map<String, Object>> mapList1 = jdbcTemplate.queryForList(sql);
|
|
|
if (mapList1 != null && mapList1.size() != 0) {
|
|
|
for (Map<String, Object> map1 : mapList1) {
|
|
@ -1265,6 +1442,13 @@ public class DailyReportUploadService {
|
|
|
list.add(str);
|
|
|
i=1;
|
|
|
}while (startTime.before(endDateTime));
|
|
|
String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='healthUpload' and dict_code='healthUpload' ";
|
|
|
List<String> dictValues = jdbcTemplate.queryForList(sql,String.class);
|
|
|
JSONObject doubtTypeObj = new JSONObject();
|
|
|
if (dictValues.size()>0){
|
|
|
JSONObject tmp = JSONObject.parseObject(dictValues.get(0));
|
|
|
doubtTypeObj = tmp.getJSONObject("dailyReportDoubtType");
|
|
|
}
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (i = 0; i < list.size(); i++) {
|
|
|
String date = list.get(i);
|
|
@ -1320,13 +1504,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
map.put("doubt_type", "");
|
|
|
if (StringUtils.isNotBlank(doubt_type)){
|
|
|
if("1".equals(doubt_type)){
|
|
|
map.put("doubt_type", "不饱和存疑");
|
|
|
} else if ("2".equals(doubt_type)){
|
|
|
map.put("doubt_type", "效率存疑");
|
|
|
}else {
|
|
|
map.put("doubt_type", "");
|
|
|
}
|
|
|
map.put("doubt_type",null==doubtTypeObj.get("doubt_type")?"":doubtTypeObj.get("doubt_type").toString());
|
|
|
}
|
|
|
}
|
|
|
JSONObject object = new JSONObject();
|
|
@ -1567,7 +1745,7 @@ public class DailyReportUploadService {
|
|
|
sqlCondition =" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
|
}
|
|
|
String sql = " SELECT SUM(d1.total) as total from (select COUNT(DISTINCT d.doctor_id) as 'total',date_format(d.report_date ,'%Y-%m-%d' ) " +
|
|
|
" from base_doctor_daily_report_upload d where 1=1 "+sqlCondition+" and d.report_date >='"+startDate+"' and d.report_date<='"+endDate+"' " +
|
|
|
" from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 where 1=1 "+sqlCondition+" and d.report_date >='"+startDate+"' and d.report_date<='"+endDate+"' " +
|
|
|
" GROUP BY date_format(d.report_date ,'%Y-%m-%d' ))d1 ";
|
|
|
if (level==2){
|
|
|
doctorSql +=" and d.id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
|
|
@ -1600,7 +1778,7 @@ public class DailyReportUploadService {
|
|
|
//上传总次数
|
|
|
Integer shangchuanTotal = 0;
|
|
|
|
|
|
String shangchuanTotalSql = "select COUNT(1) as 'total' from base_doctor_daily_report_upload d where 1=1 ";
|
|
|
String shangchuanTotalSql = "select COUNT(1) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 where 1=1 ";
|
|
|
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
shangchuanTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
@ -1617,7 +1795,7 @@ public class DailyReportUploadService {
|
|
|
|
|
|
|
|
|
//已核实、未核实
|
|
|
String verifiedTotalSql = "select COUNT(1) as 'total' from base_doctor_daily_report_upload d where state=1 ";
|
|
|
String verifiedTotalSql = "select COUNT(d.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 where d.state=1 ";
|
|
|
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
verifiedTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
@ -1634,7 +1812,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
|
|
|
//未核实
|
|
|
String notVerifiedTotalSql = "select COUNT(1) as 'total' from base_doctor_daily_report_upload d where state=0 ";
|
|
|
String notVerifiedTotalSql = "select COUNT(d.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 where d.state=0 ";
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
notVerifiedTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
|
}
|
|
@ -1650,7 +1828,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
|
|
|
//不饱和存疑
|
|
|
String baoheTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String baoheTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on de.report_id = d.id where de.doubt_type=1 ";
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
baoheTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
@ -1665,7 +1843,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
}
|
|
|
//效率存疑
|
|
|
String xiaolvTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String xiaolvTotalSql = "select COUNT(de.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on de.report_id = d.id where de.doubt_type=2 ";
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
xiaolvTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
@ -1709,7 +1887,7 @@ public class DailyReportUploadService {
|
|
|
|
|
|
String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 and d.identity=0 ";
|
|
|
Integer total = 0;//总人次
|
|
|
String sql = "select COUNT(DISTINCT d.id) as \"total\" from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String sql = "select COUNT(DISTINCT d.id) as \"total\" from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 LEFT join base_daily_report_detail de " +
|
|
|
" on d.id = de.report_id where 1=1 ";
|
|
|
String deptCondition = "";
|
|
|
if (StringUtils.isNoneBlank(dept)) {
|
|
@ -1770,7 +1948,7 @@ public class DailyReportUploadService {
|
|
|
weishangbaoTotal = total - yishangbaoTotal>0?total - yishangbaoTotal:0;
|
|
|
|
|
|
|
|
|
String shangchuanTotalSql = "select COUNT(1) as \"total\" from base_doctor_daily_report_upload d where 1=1 ";
|
|
|
String shangchuanTotalSql = "select COUNT(d.id) as \"total\" from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 where 1=1 ";
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
|
shangchuanTotalSql += " and d.report_date >='" + startDate + "' and d.report_date<='" + endDate + "' ";
|
|
|
}
|
|
@ -1785,17 +1963,17 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
|
|
|
//未核实数量
|
|
|
String notVerifiedSql = "select COUNT(DISTINCT d.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String notVerifiedSql = "select COUNT(DISTINCT d.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on d.id = de.report_id where de.state=0 ";
|
|
|
|
|
|
//已核实数量
|
|
|
String verifiedSql = "select COUNT(DISTINCT d.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String verifiedSql = "select COUNT(DISTINCT d.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on d.id = de.report_id where de.state=1 ";
|
|
|
//不饱和存疑
|
|
|
String bubaoheSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String bubaoheSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on d.id = de.report_id where de.state=1 and de.doubt_type=1 ";
|
|
|
//效率存疑
|
|
|
String xiaolvSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d inner join base_daily_report_detail de " +
|
|
|
String xiaolvSql = "select COUNT(DISTINCT de.id) as 'total' from base_doctor_daily_report_upload d INNER JOIN base_doctor doc on d.doctor_id = doc.id and doc.del=1 inner join base_daily_report_detail de " +
|
|
|
" on d.id = de.report_id where de.state=1 and de.doubt_type=2 ";
|
|
|
|
|
|
if (StringUtils.isNoneBlank(startDate)) {
|
|
@ -2088,7 +2266,8 @@ public class DailyReportUploadService {
|
|
|
if (null==reportItemDO){
|
|
|
throw new Exception("日报项目不存在");
|
|
|
}
|
|
|
String sql = " select m.*,IFNULL(A.completion_hour,0) completion_hour,dh.dept_code,dh.dept_name from base_daily_report_item_members m " +
|
|
|
String sql = " select m.*,IFNULL(A.completion_hour,0) completion_hour,dh.dept_code,dh.dept_name from base_daily_report_item_members m " +
|
|
|
" INNER JOIN base_doctor doc on m.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN ( " +
|
|
|
"select up.doctor_id,SUM(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) completion_hour " +
|
|
|
" from base_doctor_daily_report_upload up " +
|
|
@ -2145,6 +2324,7 @@ public class DailyReportUploadService {
|
|
|
*/
|
|
|
public List<BaseDailyReportItemDO> findReportItemList(String user,String projectCode,String title,String content,Integer state,String begin_time,String end_time,String createUser,String createUserName) throws Exception {
|
|
|
String sql = "select i.* from base_daily_report_item i INNER JOIN base_daily_report_item_members mem on i.id = mem.report_item_id " +
|
|
|
"INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"where i.del=1 and mem.del=1 and mem.user_id='"+user+"' " ;
|
|
|
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
@ -2211,7 +2391,7 @@ public class DailyReportUploadService {
|
|
|
" Left JOIN (" +
|
|
|
" select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where i.del=1 "+sqlCondition+" GROUP BY i.project_code )A " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 where i.del=1 "+sqlCondition+" GROUP BY i.project_code )A " +
|
|
|
"on A.project_code = dict.dict_code where dict.dict_name='daily_report_project' ";
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
|
sqlList +=" and dict.dict_code='"+projectCode+"' ";
|
|
@ -2248,7 +2428,7 @@ public class DailyReportUploadService {
|
|
|
}
|
|
|
String sqlList = " select i.dept,i.dept_name deptName,i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where i.del=1 "+sqlCondition+" GROUP BY i.project_code,i.dept ";
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 where i.del=1 "+sqlCondition+" GROUP BY i.project_code,i.dept ";
|
|
|
|
|
|
sqlList += " order by completionHour desc ";
|
|
|
return jdbcTemplate.queryForList(sqlList);
|
|
@ -2284,7 +2464,7 @@ public class DailyReportUploadService {
|
|
|
" from base_daily_report_item i LEFT JOIN( " +
|
|
|
" select de.report_item_id,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal " +
|
|
|
" from base_daily_report_detail de Inner JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +updateTimeSql+
|
|
|
" from base_daily_report_detail de Inner JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
" group by de.report_item_id " +
|
|
|
" )A on i.id = A.report_item_id where i.del=1 ";
|
|
|
String sqlCount = " select count(distinct i.id) from base_daily_report_item i where i.del=1 ";
|
|
@ -2310,7 +2490,9 @@ public class DailyReportUploadService {
|
|
|
sqlCondition += " and i.dept='"+dept+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(member)){
|
|
|
sqlCondition += " and exists (select 1 from base_daily_report_item_members mem where i.id =mem.report_item_id and mem.user_id='"+member+"' and mem.del=1 )";
|
|
|
sqlCondition += " and exists (select 1 from base_daily_report_item_members mem " +
|
|
|
" INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
" where i.id =mem.report_item_id and mem.user_id='"+member+"' and mem.del=1 )";
|
|
|
}
|
|
|
|
|
|
sqlList +=sqlCondition+ " group by i.id order by i.create_time,i.id desc limit "+page*size+","+size;
|
|
@ -2344,21 +2526,21 @@ public class DailyReportUploadService {
|
|
|
sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +itemSql+
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y-%m-%d') order by time asc ";
|
|
|
}else if (2==type){//按周
|
|
|
sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +itemSql+
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y%v') order by time asc ";
|
|
|
}else if (3==type){//月
|
|
|
sql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime,i.end_time endTime,i.create_user_name createUserName, " +
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time', " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +itemSql+
|
|
|
"group by i.id,DATE_FORMAT(de.create_time,'%Y-%m') order by time asc ";
|
|
|
}else {
|
|
@ -2444,7 +2626,7 @@ public class DailyReportUploadService {
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time'," +
|
|
|
" DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'searchTime' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +memberSql+
|
|
|
"group by i.id,up.doctor_id order by completionHour desc ";
|
|
|
searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m-%d') ";
|
|
@ -2455,7 +2637,7 @@ public class DailyReportUploadService {
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " +
|
|
|
"DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'searchTime' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +
|
|
|
"group by i.id,up.doctor_id order by time asc ";
|
|
|
searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m-%d') ";
|
|
@ -2465,7 +2647,7 @@ public class DailyReportUploadService {
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m-%d') as 'time', " +
|
|
|
"DATE_FORMAT(de.create_time,'%Y%v') as 'searchTime' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +memberSql+
|
|
|
"group by i.id,up.doctor_id order by time asc ";
|
|
|
searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y%v') ";
|
|
@ -2475,7 +2657,7 @@ public class DailyReportUploadService {
|
|
|
" CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour,DATE_FORMAT(de.create_time,'%Y-%m') as 'time', " +
|
|
|
"DATE_FORMAT(de.create_time,'%Y-%m') as 'searchTime' " +
|
|
|
"from base_daily_report_item i LEFT JOIN base_daily_report_detail de " +
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +updateTimeSql+
|
|
|
"on i.id = de.report_item_id INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where 1=1 and i.id='"+item_id+"' " +memberSql+
|
|
|
"group by i.id,up.doctor_id order by time asc ";
|
|
|
searchTimeFormat=" DATE_FORMAT(de.create_time,'%Y-%m') ";
|
|
@ -2517,7 +2699,7 @@ public class DailyReportUploadService {
|
|
|
tmp.put("timeRange",getRangeDouble(completionHour,totalHour));
|
|
|
String doctorId = tmp.get("doctor_id").toString();
|
|
|
sql = " select up.doctor_name,"+uploadTimeFormat+" as report_date ,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour " +
|
|
|
" from base_daily_report_detail de INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id " +updateTimeSql+
|
|
|
" from base_daily_report_detail de INNER JOIN base_doctor_daily_report_upload up on de.report_id = up.id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +updateTimeSql+
|
|
|
"where de.report_item_id='"+item_id+"' and up.doctor_id='"+doctorId+"' " +
|
|
|
"GROUP BY "+searchTimeFormat+" ORDER BY report_date asc ";
|
|
|
List<Map<String,Object>> timeUseList = jdbcTemplate.queryForList(sql);
|
|
@ -2592,7 +2774,7 @@ public class DailyReportUploadService {
|
|
|
String sqlList = " select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
|
|
|
" from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where i.del=1 and i.dept='"+dept+"' and i.project_code='{project_code}' "+sqlCondition+
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 where i.del=1 and i.dept='"+dept+"' and i.project_code='{project_code}' "+sqlCondition+
|
|
|
" GROUP BY "+groupTimeFormat+" order by time asc";
|
|
|
for (Map<String,Object>tmp:deptProjectList){
|
|
|
String project_code = tmp.get("project_code").toString();
|
|
@ -2610,9 +2792,15 @@ public class DailyReportUploadService {
|
|
|
useTimeTmp.put("time",sunday);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
tmp.put("avgValue",0.0);
|
|
|
tmp.put("totalHour",0.0);
|
|
|
}
|
|
|
tmp.put("useTimeList",useTimeList);
|
|
|
}
|
|
|
if (deptProjectList.size()>0){
|
|
|
deptProjectList.sort(Comparator.comparing(obj -> ((Map<String,Object>) obj).get("totalHour").toString()).reversed());
|
|
|
}
|
|
|
return deptProjectList;
|
|
|
}
|
|
|
|
|
@ -2658,7 +2846,7 @@ public class DailyReportUploadService {
|
|
|
String sqlList = " select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
|
|
|
" from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where i.del=1 and i.dept='"+dept+"' and i.id='{itemId}' "+sqlCondition+
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 where i.del=1 and i.dept='"+dept+"' and i.id='{itemId}' "+sqlCondition+
|
|
|
" GROUP BY "+groupTimeFormat+" order by time asc";
|
|
|
for (Map<String,Object>tmp:deptProjectItemList){
|
|
|
String itemId = tmp.get("id").toString();
|
|
@ -2676,9 +2864,15 @@ public class DailyReportUploadService {
|
|
|
useTimeTmp.put("time",sunday);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
tmp.put("avgValue",0.0);
|
|
|
tmp.put("totalHour",0.0);
|
|
|
}
|
|
|
tmp.put("useTimeList",useTimeList);
|
|
|
}
|
|
|
if (deptProjectItemList.size()>0){
|
|
|
deptProjectItemList.sort(Comparator.comparing(obj -> ((Map<String,Object>) obj).get("totalHour").toString()).reversed());
|
|
|
}
|
|
|
return deptProjectItemList;
|
|
|
}
|
|
|
|
|
@ -2719,13 +2913,14 @@ public class DailyReportUploadService {
|
|
|
String projectSql = " select dict.dict_code project_code,dict.dict_value projectName,i.dept " +
|
|
|
" from wlyy_hospital_sys_dict dict INNER JOIN base_daily_report_item i on i.project_code = dict.dict_code " +
|
|
|
" INNER JOIN base_daily_report_item_members mem on i.id =mem.report_item_id " +
|
|
|
" INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
" where dict.dict_name='daily_report_project' and i.dept='"+dept+"' and mem.user_id='"+memberId+"' and mem.del=1 " +
|
|
|
" GROUP BY dict.dict_code; ";
|
|
|
List<Map<String,Object>> deptProjectList = jdbcTemplate.queryForList(projectSql);
|
|
|
String sqlList = " select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
|
|
|
" from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where up.doctor_id='"+memberId+"' and i.del=1 and i.dept='"+dept+"' and i.project_code='{project_code}' "+sqlCondition+
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 where up.doctor_id='"+memberId+"' and i.del=1 and i.dept='"+dept+"' and i.project_code='{project_code}' "+sqlCondition+
|
|
|
" GROUP BY "+groupTimeFormat+" order by time asc";
|
|
|
for (Map<String,Object>tmp:deptProjectList){
|
|
|
String project_code = tmp.get("project_code").toString();
|
|
@ -2743,9 +2938,15 @@ public class DailyReportUploadService {
|
|
|
useTimeTmp.put("time",sunday);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
tmp.put("totalHour",0.0);
|
|
|
tmp.put("avgValue",0.0);
|
|
|
}
|
|
|
tmp.put("useTimeList",useTimeList);
|
|
|
}
|
|
|
if(deptProjectList.size()>0){
|
|
|
deptProjectList.sort(Comparator.comparing(obj -> ((Map<String,Object>) obj).get("totalHour").toString()).reversed());
|
|
|
}
|
|
|
return deptProjectList;
|
|
|
}
|
|
|
|
|
@ -2786,13 +2987,16 @@ public class DailyReportUploadService {
|
|
|
String projectSql = " select i.id,CONCAT(i.title,'(',i.dept_name,')') title,i.content,i.state,i.begin_time beginTime, " +
|
|
|
" i.end_time endTime, i.create_user_name createUserName " +
|
|
|
" from base_daily_report_item i INNER JOIN base_daily_report_item_members mem on i.id =mem.report_item_id " +
|
|
|
" INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
" where i.project_code='"+projectCode+"' and mem.user_id='"+memberId+"' and mem.del=1 and i.dept='"+dept+"' " +
|
|
|
" GROUP BY i.id ";
|
|
|
List<Map<String,Object>> deptProjectItemList = jdbcTemplate.queryForList(projectSql);
|
|
|
String sqlList = " select i.project_code,CAST((sum(IFNULL(de.actual_completion_hour,IFNULL(de.completion_hour,'0')))) as char ) as completionHour, " +
|
|
|
" count(distinct up.doctor_id) as doctorTotal, "+uploadTimeFormat+" as 'time' " +
|
|
|
" from base_daily_report_item i LEFT JOIN base_daily_report_detail de on i.id = de.report_item_id " +
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id where i.del=1 and up.doctor_id='"+memberId+"' and i.dept='"+dept+"' and i.id='{itemId}' "+sqlCondition+
|
|
|
" INNER JOIN base_doctor_daily_report_upload up on up.id = de.report_id " +
|
|
|
" INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
" where i.del=1 and up.doctor_id='"+memberId+"' and i.dept='"+dept+"' and i.id='{itemId}' "+sqlCondition+
|
|
|
" GROUP BY "+groupTimeFormat+" order by time asc";
|
|
|
for (Map<String,Object>tmp:deptProjectItemList){
|
|
|
String itemId = tmp.get("id").toString();
|
|
@ -2810,12 +3014,203 @@ public class DailyReportUploadService {
|
|
|
useTimeTmp.put("time",sunday);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
tmp.put("avgValue",0.0);
|
|
|
tmp.put("totalHour",0.0);
|
|
|
}
|
|
|
tmp.put("useTimeList",useTimeList);
|
|
|
}
|
|
|
if (deptProjectItemList.size()>0){
|
|
|
deptProjectItemList.sort(Comparator.comparing(obj -> ((Map<String,Object>) obj).get("totalHour").toString()).reversed());
|
|
|
}
|
|
|
return deptProjectItemList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 统计各存疑数量
|
|
|
* @param user
|
|
|
* @param projectCode
|
|
|
* @param item_id
|
|
|
* @param dept
|
|
|
* @param memberId
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject statisticDetailHeaderInfo(String user,String projectCode,String item_id,String dept,String memberId,String startDate,String endDate) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='healthUpload' and dict_code='healthUpload' ";
|
|
|
List<String> dictValues = jdbcTemplate.queryForList(sql,String.class);
|
|
|
JSONObject doubtTypeObj = new JSONObject();
|
|
|
if (dictValues.size()>0){
|
|
|
JSONObject tmp = JSONObject.parseObject(dictValues.get(0));
|
|
|
doubtTypeObj = tmp.getJSONObject("dailyReportDoubtType");
|
|
|
}
|
|
|
|
|
|
|
|
|
JSONObject result = new JSONObject();
|
|
|
Date startDateTmp = DateUtil.getDateStart();
|
|
|
if (StringUtils.isBlank(endDate)){
|
|
|
endDate = DateUtil.dateToStrLong(DateUtil.getDateEnd());
|
|
|
}
|
|
|
//以项目开始时间 or 员工第一次提交时间开始计算。
|
|
|
if (StringUtils.isNotBlank(memberId)){
|
|
|
sql = " select min(report_date) from base_doctor_daily_report_upload where doctor_id='"+memberId+"' ";
|
|
|
List<String> startResult = jdbcTemplate.queryForList(sql,String.class);
|
|
|
if (startResult.size()>0){
|
|
|
startDateTmp = DateUtil.strToDate(startResult.get(0));
|
|
|
}
|
|
|
}else {
|
|
|
sql = " select min(begin_time) from base_daily_report_item where begin_time is not null ";
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
|
sql += " and project_code='"+projectCode+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(item_id)){
|
|
|
sql += " and id='"+item_id+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dept)){
|
|
|
sql +=" and dept='"+dept+"' ";
|
|
|
}
|
|
|
List<String> startResult = jdbcTemplate.queryForList(sql,String.class);
|
|
|
if (startResult.size()>0){
|
|
|
startDateTmp = DateUtil.strToDate(startResult.get(0));
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(startDate)){
|
|
|
if(startDateTmp.after(DateUtil.strToDate(startDate))){
|
|
|
startDate = DateUtil.dateToStrLong(startDateTmp);
|
|
|
}
|
|
|
}else {
|
|
|
startDate = DateUtil.dateToStrLong(startDateTmp);
|
|
|
}
|
|
|
String sqlWhere = " ";
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
|
sqlWhere += " and it.project_code='"+projectCode+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(item_id)){
|
|
|
sqlWhere += " and it.id='"+item_id+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dept)){
|
|
|
sqlWhere +=" and it.dept='"+dept+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(memberId)){
|
|
|
sqlWhere +=" and up.doctor_id='"+memberId+"' ";
|
|
|
}
|
|
|
sqlWhere += " and rd.create_time>='"+startDate+"' and rd.create_time<='"+endDate+"' ";
|
|
|
|
|
|
Long workDays = DateUtil.getWorkDays(startDate,endDate);
|
|
|
Long members = 0l;
|
|
|
|
|
|
|
|
|
String shangchuanSql = " select count(distinct rd.report_id) from base_daily_report_item it " +
|
|
|
"inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
|
|
|
"LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id where 1=1"+sqlWhere;
|
|
|
Long shangchuanTotal = jdbcTemplate.queryForObject(shangchuanSql,Long.class);
|
|
|
|
|
|
String memberSql = " select count(distinct mem.user_id) from base_daily_report_item it " +
|
|
|
"inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
|
|
|
"LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id where 1=1 "+sqlWhere;
|
|
|
members = jdbcTemplate.queryForObject(memberSql,Long.class);
|
|
|
|
|
|
|
|
|
Long acWorkHours = 0l;
|
|
|
Long needWorkHours = workDays*members*8;
|
|
|
Long urgingTotal=0l;
|
|
|
|
|
|
String urgingSql = " select count(id) from base_daily_urging_record where create_time>='"+startDate+"' and create_time<='endDate' ";
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
|
urgingSql += " and project_code='"+projectCode+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(item_id)){
|
|
|
urgingSql += " and report_item_id='"+item_id+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dept)){
|
|
|
urgingSql +=" and dept='"+dept+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(memberId)){
|
|
|
urgingSql +=" and receive_doctor='"+memberId+"' ";
|
|
|
}
|
|
|
urgingTotal = jdbcTemplate.queryForObject(urgingSql,Long.class);
|
|
|
|
|
|
String acWorkHoursSql = " select sum(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) 'completion_hour' from base_daily_report_item it " +
|
|
|
"inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
|
|
|
"LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id where 1=1 "+sqlWhere;
|
|
|
acWorkHours = jdbcTemplate.queryForObject(acWorkHoursSql,Long.class);
|
|
|
|
|
|
String doubtTypeSql = " select count(distinct rd.id) as total,rd.doubt_type from base_daily_report_item it " +
|
|
|
"inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
|
|
|
"LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id where 1=1 "+sqlWhere+" and rd.doubt_type is not null group by rd.doubt_type";
|
|
|
List<Map<String,Object>> doubtTypeList = jdbcTemplate.queryForList(doubtTypeSql);
|
|
|
for (Map<String,Object>tmp:doubtTypeList){
|
|
|
String doubtType = tmp.get("doubt_type").toString();
|
|
|
if(doubtTypeObj.containsKey(doubtType)){
|
|
|
tmp.put("doubtTypeName",doubtTypeObj.get(doubtType));
|
|
|
}else {
|
|
|
tmp.put("doubtTypeName","未知存疑类型");
|
|
|
}
|
|
|
}
|
|
|
List<String> doubtListStr = doubtTypeList.stream().map(e -> e.get("doubt_type").toString()).collect(Collectors.toList());
|
|
|
for (String key:doubtTypeObj.keySet()){
|
|
|
if (!doubtListStr.contains(key)){
|
|
|
Map<String,Object>tmp = new HashMap<>();
|
|
|
tmp.put("doubt_type",key);
|
|
|
tmp.put("doubtTypeName",doubtTypeObj.get(key));
|
|
|
tmp.put("total",0);
|
|
|
doubtTypeList.add(tmp);
|
|
|
}
|
|
|
}
|
|
|
doubtTypeList.sort(Comparator.comparing(e->e.get("doubt_type").toString()));
|
|
|
|
|
|
//员工离职or中途加入到项目中的会导致统计出来的数据发生变化
|
|
|
result.put("weishangbao",workDays*members-shangchuanTotal);//未上报 工作日次数-总上报次数
|
|
|
result.put("doubtList",doubtTypeList);
|
|
|
result.put("urgingTotal",urgingTotal);//启动催出
|
|
|
result.put("acWorkHours",acWorkHours);//实际工作时长
|
|
|
result.put("needWorkHours",needWorkHours);//应工作时长
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public List<Map<String,Object>> statisticWorkTypeInfo(String user,String projectCode,String item_id,String dept,String memberId,String startDate,String endDate) throws Exception {
|
|
|
String sql = " select * from base_doctor_role where doctor_code='"+user+"' ";
|
|
|
List<Map<String,Object>> userRoles = jdbcTemplate.queryForList(sql);
|
|
|
if (userRoles.size()==0){
|
|
|
throw new Exception("您无权限操作");
|
|
|
}
|
|
|
String sqlWhere = " ";
|
|
|
if (StringUtils.isNotBlank(projectCode)){
|
|
|
sqlWhere += " and it.project_code='"+projectCode+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(item_id)){
|
|
|
sqlWhere += " and it.id='"+item_id+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dept)){
|
|
|
sqlWhere +=" and it.dept='"+dept+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(memberId)){
|
|
|
sqlWhere +=" and up.doctor_id='"+memberId+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(startDate)){
|
|
|
sqlWhere +=" and up.report_date>='"+startDate+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(endDate)){
|
|
|
sqlWhere +=" and up.report_date<='"+endDate+"' ";
|
|
|
}
|
|
|
sql = " select sum(IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0))) 'completion_hour',rd.work_type_name from base_daily_report_item it " +
|
|
|
"inner join base_daily_report_item_members mem on it.id = mem.report_item_id and mem.del=1 INNER JOIN base_doctor doc on mem.user_id = doc.id and doc.del=1 " +
|
|
|
"LEFT JOIN base_doctor_daily_report_upload up on doc.id = up.doctor_id " +
|
|
|
"LEFT JOIN base_daily_report_detail rd on up.id = rd.report_id where 1=1 "+sqlWhere+" group by rd.work_type_name ";
|
|
|
return jdbcTemplate.queryForList(sql);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 导出项目计划周报月报用时情况
|
|
@ -2870,8 +3265,8 @@ public class DailyReportUploadService {
|
|
|
"it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " +
|
|
|
"DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time," +
|
|
|
" CASE rd.state WHEN 1 THEN '已核实' ELSE '未核实' END as 'verification_state',rd.verification_user_name,CASE rd.doubt WHEN 1 THEN '存疑' ELSE '无存疑' END as 'doubt', " +
|
|
|
" CASE rd.doubt WHEN 1 THEN '不饱和存疑' WHEN 2 THEN '效率存疑' ELSE null END as 'doubtType', rd.remark " +
|
|
|
"from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id " +
|
|
|
" rd.doubt_type, rd.remark " +
|
|
|
"from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
"INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN " +
|
|
|
"base_daily_report_detail rd on up.id = rd.report_id " +
|
|
|
"LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " +
|
|
@ -2929,8 +3324,8 @@ public class DailyReportUploadService {
|
|
|
"it.title,it.content,rd.sort,rd.report_content,IFNULL(rd.actual_completion_hour,IFNULL(rd.completion_hour,0)) 'completion_hour', " +
|
|
|
"DATE_FORMAT(rd.create_time,'%Y-%m-%d %H:%i:%S') create_time,DATE_FORMAT(rd.verification_time,'%Y-%m-%d %H:%i:%S') verification_time," +
|
|
|
" CASE rd.state WHEN 1 THEN '已核实' ELSE '未核实' END as 'verification_state',rd.verification_user_name,CASE rd.doubt WHEN 1 THEN '存疑' ELSE '无存疑' END as 'doubt'," +
|
|
|
" CASE rd.doubt WHEN 1 THEN '不饱和存疑' WHEN 2 THEN '效率存疑' ELSE null END as 'doubtType', rd.remark " +
|
|
|
"from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id " +
|
|
|
" rd.doubt_type, rd.remark " +
|
|
|
"from base_doctor_daily_report_upload up INNER JOIN base_doctor doc on up.doctor_id = doc.id and doc.del=1 " +
|
|
|
"INNER JOIN base_doctor_hospital dh on doc.id = dh.doctor_code and dh.del=1 LEFT JOIN " +
|
|
|
"base_daily_report_detail rd on up.id = rd.report_id " +
|
|
|
"LEFT JOIN base_daily_report_item it on rd.report_item_id = it.id " +
|
|
@ -3093,6 +3488,14 @@ public class DailyReportUploadService {
|
|
|
* @throws WriteException
|
|
|
*/
|
|
|
public void UserReportListExcel(List<Map<String,Object>> userCompleteList,OutputStream os,String startDate,String endDate) throws IOException, WriteException {
|
|
|
String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='healthUpload' and dict_code='healthUpload' ";
|
|
|
List<String> dictValues = jdbcTemplate.queryForList(sql,String.class);
|
|
|
JSONObject doubtTypeObj = new JSONObject();
|
|
|
if (dictValues.size()>0){
|
|
|
JSONObject tmp = JSONObject.parseObject(dictValues.get(0));
|
|
|
doubtTypeObj = tmp.getJSONObject("dailyReportDoubtType");
|
|
|
}
|
|
|
|
|
|
WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
|
|
|
WritableSheet sheet = wwb.createSheet("sheet", 1);
|
|
|
String[] header = {"员工完成情况("+startDate+"至"+endDate+")","","","","","","","","","","","","","","","","","",""};//
|
|
@ -3170,7 +3573,12 @@ public class DailyReportUploadService {
|
|
|
addCell(sheet,i , 14,null==completeTmp.get("verification_user_name")?"":completeTmp.get("verification_user_name").toString());
|
|
|
addCell(sheet,i , 15,null==completeTmp.get("verification_time")?"":completeTmp.get("verification_time").toString());
|
|
|
addCell(sheet,i , 16,null==completeTmp.get("doubt")?"":completeTmp.get("doubt").toString());
|
|
|
addCell(sheet,i , 17,null==completeTmp.get("doubtType")?"":completeTmp.get("doubtType").toString());
|
|
|
String doubtType = null==completeTmp.get("doubtType")?"":completeTmp.get("doubtType").toString();
|
|
|
if(StringUtils.isBlank(doubtType)){
|
|
|
addCell(sheet,i , 17,"");
|
|
|
}else {
|
|
|
addCell(sheet,i , 17,null==doubtTypeObj.get(doubtType)?"":doubtTypeObj.get(doubtType).toString());
|
|
|
}
|
|
|
addCell(sheet,i , 18,null==completeTmp.get("remark")?"":completeTmp.get("remark").toString());
|
|
|
i++;
|
|
|
}
|