Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

wsl 2 years ago
parent
commit
4896bdbe72

+ 17 - 9
business/base-service/src/main/java/com/yihu/jw/dailyReport/service/DailyReportUploadService.java

@ -342,7 +342,7 @@ public class DailyReportUploadService {
        if (StringUtil.isBlank(report_date)){
            report_date = DateUtil.getStringDateShort();
            week_name = DateUtil.getWeek(report_date);
            week_name = DateUtil.getWeekStr(report_date);
        }
        BaseDailyReportUploadDO dailyReportUploadDO = dailyReportUploadDao.findByDoctorIdAndReportDate(doctorId,report_date);
        if (null==dailyReportUploadDO){
@ -364,10 +364,14 @@ public class DailyReportUploadService {
        }else {
            throw new Exception("您不是部门人员,无法上传日报信息");
        }
        String sql = " select dict_code from wlyy_hospital_sys_dict where dict_name='daily_report_create_item' ";
        List<String> createItemUser = jdbcTemplate.queryForList(sql,String.class);
        for (BaseDailyReportDetailDO tmp :detailDOList){
            tmp.setReportId(dailyReportUploadDO.getId());
            if (tmp.isReportItemFlag()==true){//新则自建关联项目
                if (!createItemUser.contains(doctorId)){
                    throw new Exception("您无权创建自定义项目,请联系管理员");
                }
                String title = tmp.getReportItemTitle();
                BaseDailyReportItemDO reportItemDO = reportItemDao.findByTitleAndDeptAndProjectCode(title,doctorHospitalDOS.get(0).getDeptCode(),tmp.getProjectCode());
                if (null!=reportItemDO){
@ -436,7 +440,7 @@ public class DailyReportUploadService {
        }
        String senderID="";//日报发送对象
        String sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='BOOS_ADMIN_SENDER'  ";
        sql = " select dict_value from wlyy_hospital_sys_dict where dict_name='BOOS_ADMIN_SENDER'  ";
        List<String> boosSenderIds = jdbcTemplate.queryForList(sql,String.class);
        String boosID = "";
        if (boosSenderIds.size()>0){
@ -3482,16 +3486,20 @@ public class DailyReportUploadService {
            workDays = DateUtil.getWorkDays(startDate, endDate);
        }
        String shangchuanSql = " select count(distinct up.id) from base_doctor_daily_report_upload up " +
        String shangchuanSql = " select distinct up.report_date 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 i on i.id = rd.report_item_id and i.del=1 where 1=1 " +
                "and DATE_FORMAT(up.report_date,'%w') BETWEEN 1 and 5  "+sqlWhere;
        //只计算出周一到周五上传的数量去求未上传
        Long shangchuanTotal = jdbcTemplate.queryForObject(shangchuanSql,Long.class);
                " "+sqlWhere;
        //只计算出工作日上传的数量去求未上传
        List<String> upLoadTimes = jdbcTemplate.queryForList(shangchuanSql,String.class);
        Long shangchuanTotal = 0l;
        for (String tmp:upLoadTimes){
            if (!DateUtil.isHoliday(DateUtil.strToDate(tmp))){
                shangchuanTotal++;
            }
        }
        Double acWorkHours = 0d;
        Long needWorkHours = workDays*members*8;

+ 6 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -3678,7 +3678,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            }
        }
        sql +=" order by p.create_time desc ";
        if ("xm_ykyy_wx".equals(wxId)) {
            sql +=" order by nvl(p.pay_time,p.create_time) desc ";
        }else {
            sql +=" order by ifnull(p.pay_time,p.create_time) desc ";
        }
        /*       sql += " LIMIT " + (page - 1) * size + "," + size + "";*/
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, size);
        for (Map<String, Object> map : list) {

+ 10 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/EntranceService.java

@ -3177,7 +3177,11 @@ public class EntranceService {
                            ylzMedicalRelationDO.setName(resultJSON.getString("xming0"));
                            ylzMedicalRelationDO.setCertType("01");
                            ylzMedicalRelationDO.setMedicalMode("10");
                            ylzMedicalRelationDO.setMedicalType("11");
                            if (StringUtils.isNoneBlank(outpatientDO.getDiseaseCode())){
                                ylzMedicalRelationDO.setMedicalType("13");
                            }else {
                                ylzMedicalRelationDO.setMedicalType("11");
                            }
                            ylzMedicalRelationDO.setCardNo(cardno);
                            ylzMedicalRelationDO.setHisSerial(outpatientDO.getRegisterNo());
                            ylzMedicalRelationDO.setHisSettleNo(resultJSON.getString("xtgzh0"));
@ -3335,7 +3339,11 @@ public class EntranceService {
                            ylzMedicalRelationDO.setName(resultJSON.getString("xming0"));
                            ylzMedicalRelationDO.setCertType("01");
                            ylzMedicalRelationDO.setMedicalMode("10");
                            ylzMedicalRelationDO.setMedicalType("11");
                            if (StringUtils.isNoneBlank(outpatientDO.getDiseaseCode())){
                                ylzMedicalRelationDO.setMedicalType("13");
                            }else {
                                ylzMedicalRelationDO.setMedicalType("11");
                            }
                            ylzMedicalRelationDO.setHisSerial(outpatientDO.getRegisterNo());
                            ylzMedicalRelationDO.setHisSettleNo(resultJSON.getString("xtgzh0"));
                            ylzMedicalRelationDO.setDeptCode(resultJSON.getString("ksbm00"));

+ 2 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/dailyReport/BaseDailyReportDetailDO.java

@ -43,8 +43,8 @@ public class BaseDailyReportDetailDO extends UuidIdentityEntityWithOperator {
    /**
     * 非数据库字段
     */
    private boolean reportItemFlag;
    private String reportItemTitle;
    private boolean reportItemFlag;//新增项目标识
    private String reportItemTitle;//新增项目title
    public String getReportId() {
        return reportId;

+ 21 - 9
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -800,19 +800,19 @@ public class DateUtil {
    public static String getWeekStr(String sdate) {
        String str = "";
        str = DateUtil.getWeek(sdate);
        if ("1".equals(str)||"Monday".equals(str)) {
        if ("1".equals(str)||"Sunday".equals(str)) {
            str = "星期日";
        } else if ("2".equals(str)||"Tuesday".equals(str)) {
        } else if ("2".equals(str)||"Monday".equals(str)) {
            str = "星期一";
        } else if ("3".equals(str)||"Wednesday".equals(str)) {
        } else if ("3".equals(str)||"Tuesday".equals(str)) {
            str = "星期二";
        } else if ("4".equals(str)||"Thursday".equals(str)) {
        } else if ("4".equals(str)||"Wednesday".equals(str)) {
            str = "星期三";
        } else if ("5".equals(str)||"Friday".equals(str)) {
        } else if ("5".equals(str)||"Thursday".equals(str)) {
            str = "星期四";
        } else if ("6".equals(str)||"Saturday".equals(str)) {
        } else if ("6".equals(str)||"Friday".equals(str)) {
            str = "星期五";
        } else if ("7".equals(str)||"Sunday".equals(str)) {
        } else if ("7".equals(str)||"Saturday".equals(str)) {
            str = "星期六";
        }
        return str;
@ -1108,8 +1108,8 @@ public class DateUtil {
        }
        while (startCal.compareTo(endCal) <= 0) {
            //如果不是周六或者周日则工作日+1
            if (startCal.get(Calendar.DAY_OF_WEEK) != 7 && startCal.get(Calendar.DAY_OF_WEEK) != 1) {
            //工作日+1
            if (!Holiday.isHoliday((startCal.getTime()))){
                day++;
            }
            startCal.add(Calendar.DAY_OF_MONTH, 1);
@ -1118,6 +1118,17 @@ public class DateUtil {
    }
    /**
     * 判断一天是不是工作日
     *
     * @param date 日期
     * @return true:休息日,false:工作日
     * @date 2020/10/26
     */
    public static boolean isHoliday(Date date) {
        return Holiday.isHoliday(date);
    }
    /**
     * 获取当月第一天
     * @return
@ -1682,4 +1693,5 @@ public class DateUtil {
        String[] weekDays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };
        return weekDays[getWeekByString(date)];
    }
}

+ 324 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/Holiday.java

@ -0,0 +1,324 @@
package com.yihu.jw.util.date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
 * 原生java调用(除开JSON)
 * 线程不安全
 *
 * @author holate
 */
public class Holiday {
    /**
     * 网址前缀
     */
    private static final String BASE_PREFIX = "https://gitee.com/holate/public-holiday/raw/master/holidays/year/";
    /**
     * 网址后缀
     */
    private static final String BASE_SUFFIX = ".json";
    /**
     * 使用读写锁(单线程忽略)
     */
    private static final ReadWriteLock READ_WRITE_LOCK = new ReentrantReadWriteLock();
    /**
     * 法律规定的放假日期,30+366*2/7向上取整
     */
    private static final Set<String> LAW_HOLIDAYS = new HashSet<>(135);
    /**
     * 由于放假需要额外工作的周末,366*5/7向上取整
     */
    private static final Set<String> EXTRA_WORKDAYS = new HashSet<>(262);
    /**
     * 调用接口获取过的年份,大小设置为4年
     */
    private static final Set<Integer> ALREADY_OBTAIN = new HashSet<>(4);
    /**
     * 格式化日期到天
     */
    private static final String TO_DAY = "yyyy-MM-dd";
    /**
     * 调用接口每天调用一次,记录上一次调用日期
     */
    private static String initDate = "";
    /**
     * 返回指定日期后{@param days}个工作日的日期
     *
     * @param startDate 开始日期
     * @param days      工作日数
     * @return {@link Date}
     * @date 2020/10/26
     * @author holate
     */
    public static Date calculateWorkDay(Date startDate, int days) {
        // 每日清理节假日重新从接口获取
        cleanDate();
        if (startDate == null) {
            return null;
        }
        READ_WRITE_LOCK.readLock().lock();
        try {
            Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
            cal.setTime(startDate);
            //累加自然日
            for (int i = 1; i <= days; i++) {
                cal.add(Calendar.DATE, 1);
                Integer year = cal.get(Calendar.YEAR);
                //如果那一年的数据没有获取过,则获取数据
                if (!ALREADY_OBTAIN.contains(year)) {
                    getHolidayForMonth(year);
                }
                //如果是假日,延后一天
                if (isHoliday(cal)) {
                    days++;
                }
            }
            return cal.getTime();
        } finally {
            READ_WRITE_LOCK.readLock().unlock();
        }
    }
    /**
     * 返回指定日期后{@param days}个自然日的日期
     *
     * @param startDate 开始日期
     * @param days      自然日数
     * @return {@link Date}
     * @date 2020/10/26
     * @author holate
     */
    public static Date calculateNormalDay(Date startDate, int days) {
        if (startDate == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
        cal.setTime(startDate);
        cal.add(Calendar.DATE, days);
        return cal.getTime();
    }
    /**
     * 返回指定日期后{@param days}个节假日的日期
     *
     * @param startDate 开始日期
     * @param days      自然日数
     * @return {@link Date}
     * @date 2020/10/26
     * @author holate
     */
    public static Date calculateNextHoliday(Date startDate, int days) {
        // 每日清理节假日重新从接口获取
        cleanDate();
        if (startDate == null) {
            return null;
        }
        READ_WRITE_LOCK.readLock().lock();
        try {
            Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
            cal.setTime(startDate);
            //累加自然日
            for (int i = 1; i <= days; i++) {
                cal.add(Calendar.DATE, 1);
                Integer year = cal.get(Calendar.YEAR);
                //如果那一年的数据没有获取过,则获取数据
                if (!ALREADY_OBTAIN.contains(year)) {
                    getHolidayForMonth(year);
                }
                //如果是假日,延后一天
                if (!isHoliday(cal)) {
                    days++;
                }
            }
            return cal.getTime();
        } finally {
            READ_WRITE_LOCK.readLock().unlock();
        }
    }
    /**
     * 判断一天是不是工作日
     *
     * @param date 日期
     * @return true:休息日,false:工作日
     * @date 2020/10/26
     */
    public static boolean isHoliday(Date date) {
        cleanDate();
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
        cal.setTime(date);
        Integer year = cal.get(Calendar.YEAR);
        if (!ALREADY_OBTAIN.contains(year)) {
            getHolidayForMonth(year);
        }
        return isHoliday(cal);
    }
    /**
     * 判断一天是不是休息日
     *
     * @param cal 日期
     * @return true:休息日,false:工作日
     * @date 2020/10/26
     */
    private static boolean isHoliday(Calendar cal) {
        SimpleDateFormat simpleFormat = new SimpleDateFormat(TO_DAY);
        String day = simpleFormat.format(cal.getTime());
        // 法定节假日必定是休息日
        if (LAW_HOLIDAYS.contains(day)) {
            return true;
        }
        // 排除法定节假日外的非周末必定是工作日
        if (!isWeekend(cal)) {
            return false;
        }
        // 所有周末中只有非补班的才是休息日
        return !EXTRA_WORKDAYS.contains(day);
    }
    /**
     * 判断是否为周末
     *
     * @param cal 日期
     * @return true:是周末,false:不是周末
     * @date 2020/10/26
     * @author holate
     */
    private static boolean isWeekend(Calendar cal) {
        return cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY;
    }
    /**
     * 每天清空日期
     *
     * @date 2020/10/26
     * @author holate
     */
    private static void cleanDate() {
        SimpleDateFormat simpleFormat = new SimpleDateFormat(TO_DAY);
        String day = simpleFormat.format(new Date());
        //如果初始化时间不为当天
        if (!day.equals(initDate)) {
            READ_WRITE_LOCK.writeLock().lock();
            try {
                if (!day.equals(initDate)) {
                    ALREADY_OBTAIN.clear();
                    EXTRA_WORKDAYS.clear();
                    LAW_HOLIDAYS.clear();
                    initDate = day;
                }
            } finally {
                READ_WRITE_LOCK.writeLock().unlock();
            }
        }
    }
    /**
     * 通过年月查询第三方节假日,获取节日和调休的工作日
     *
     * @param year 年份
     * @return {@link Set<Calendar>}
     * @date 2020/10/26
     * @author holate
     */
    @SuppressWarnings("unchecked")
    private static void getHolidayForMonth(Integer year) {
        //json对象,获取值使用的键
        String holiday = "holiday";
        //访问url
        String url = BASE_PREFIX + year + BASE_SUFFIX;
        String json = getUrl(url);
        if (json.length() == 0) {
            return;
        }
        //构建json对象
        JSONObject body = JSON.parseObject(json);
        Map<String, JSONObject> days = (Map<String, JSONObject>) body.get(holiday);
        for (Map.Entry<String, JSONObject> entry : days.entrySet()) {
            Boolean isHoliday = (Boolean) entry.getValue().get(holiday);
            if (isHoliday) {
                LAW_HOLIDAYS.add(year + "-" + entry.getKey());
            } else {
                EXTRA_WORKDAYS.add(year + "-" + entry.getKey());
            }
        }
        ALREADY_OBTAIN.add(year);
    }
    /**
     * 使用get请求访问url
     *
     * @param url 网址
     * @return {@link String} 返回响应内容
     * @date 2020/10/26
     * @author holate
     */
    private static String getUrl(String url) {
        //访问返回结果
        StringBuilder result = new StringBuilder();
        //读取访问结果
        BufferedReader read = null;
        try {
            //创建url
            URL realUrl = new URL(url);
            //打开连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/5.0");
            //建立连接
            connection.connect();
            // 定义 BufferedReader输入流来读取URL的响应
            read = new BufferedReader(new InputStreamReader(
                connection.getInputStream(), StandardCharsets.UTF_8));
            String line;//循环读取
            while ((line = read.readLine()) != null) {
                result.append(line).append("\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeReader(read);
        }
        return result.toString();
    }
    /**
     * 关闭读取字符流
     *
     * @param reader 读取字符流
     * @date 2020/10/26
     * @author holate
     */
    private static void closeReader(Reader reader) {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

+ 12 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/DailyReportService.java

@ -72,6 +72,10 @@ public class DailyReportService {
    private Logger logger= LoggerFactory.getLogger(DailyReportService.class);
    public void dailyReportRemind() throws Exception {
        Date date = new Date();
        if (DateUtil.isHoliday(date)){
            return;
        }
        List<BaseDoctorDO> doctorDOList = doctorDao.findByDel();
        String nowDate = DateUtil.getStringDateShort();
        for (BaseDoctorDO doctorDO:doctorDOList){
@ -98,6 +102,10 @@ public class DailyReportService {
     * @throws Exception
     */
    public void dailyReportWsbTotalRemind() throws Exception {
        Date date = new Date();
        if (DateUtil.isHoliday(date)){
            return;
        }
        String boosID = "0592008";//老板id
        String nowDate = DateUtil.getStringDateShort();
        List<BaseDoctorRoleDO> deptAdminRoleList = doctorRoleDao.findByRoleCode("deptAdmin");
@ -165,6 +173,10 @@ public class DailyReportService {
     * @throws Exception
     */
    public void dailyReportTotalRemind() throws Exception {
        Date date = new Date();
        if (DateUtil.isHoliday(date)){
            return;
        }
        String boosID = "0592008";//老板id
        String nowDate = DateUtil.getStringDateShort();
        List<BaseDoctorRoleDO> deptAdminRoleList = doctorRoleDao.findByRoleCode("deptAdmin");

+ 4 - 4
svr/svr-internet-hospital-job/src/main/resources/system.properties

@ -41,11 +41,11 @@ health_upload_weishangbao_remind_job=0 45 8 * * ? *
health_upload_total_remind_job=0 0 9 * * ? *
DailyReportRemindJob=0 50 17 ? * 2,3,4,5,6
DailyReportRemindJob=0 50 17 * * ? *
DailyReportRemindSecondJob=0 0 20 ? * 2,3,4,5,6
DailyReportRemindSecondJob=0 0 20 * * ? *
DailyReportTotalRemindJob=0 0 22 ? * 2,3,4,5,6
DailyReportTotalRemindJob=0 0 22 * * ? *
DailyReportWsbTotalRemindJob=0 0 21 ? * 2,3,4,5,6
DailyReportWsbTotalRemindJob=0 0 21 * * ? *