You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					938 lines
				
				37 KiB
			
		
		
			
		
	
	
					938 lines
				
				37 KiB
			| 
											3 years ago
										 | package com.ynxbd.common.dao.his;
 | ||
|  | 
 | ||
|  | import cn.hutool.core.date.DateTime;
 | ||
|  | import com.alibaba.fastjson.JSONArray;
 | ||
|  | import com.alibaba.fastjson.JSONObject;
 | ||
|  | import com.ynxbd.common.bean.Dept;
 | ||
|  | import com.ynxbd.common.bean.Doctor;
 | ||
|  | import com.ynxbd.common.bean.enums.MerchantEnum;
 | ||
|  | import com.ynxbd.common.bean.pay.Register;
 | ||
|  | import com.ynxbd.common.dao.RegisterDao;
 | ||
|  | import com.ynxbd.common.helper.common.*;
 | ||
|  | import com.ynxbd.common.helper.his.HisEnum;
 | ||
|  | import com.ynxbd.common.helper.his.HisHelper;
 | ||
|  | import com.ynxbd.common.result.JsonResult;
 | ||
|  | import com.ynxbd.wx.config.WeChatConfig;
 | ||
|  | import lombok.extern.slf4j.Slf4j;
 | ||
|  | import org.apache.commons.lang3.ObjectUtils;
 | ||
|  | 
 | ||
|  | import java.math.BigDecimal;
 | ||
|  | import java.util.ArrayList;
 | ||
|  | import java.util.HashMap;
 | ||
|  | import java.util.List;
 | ||
|  | import java.util.Map;
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * His挂号调用
 | ||
|  |  *
 | ||
|  |  * @Author wsq
 | ||
|  |  * @Date 2020/10/30 11:59
 | ||
|  |  * @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
 | ||
|  |  */
 | ||
|  | @Slf4j
 | ||
|  | public class HisRegisterDao {
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [预约挂号]获取医生列表
 | ||
|  |      *
 | ||
|  |      * @param deptCode 科室代码
 | ||
|  |      * @return 医生列表
 | ||
|  |      */
 | ||
|  |     public List<Doctor> getRegReserveDoctorList(String deptCode, String regDate) {
 | ||
|  |         log.info("[预约挂号]查询HIS医生列表");
 | ||
|  | 
 | ||
|  |         List<Doctor> resultList = new ArrayList<>();
 | ||
|  |         if (regDate == null) {
 | ||
|  |             log.info("[预约挂号]获取医生列表失败 regDate 为空");
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", deptCode);
 | ||
|  |         params.put("DoctCode", "");
 | ||
|  |         params.put("ReservationDate", regDate);
 | ||
|  |         params.put("AllowResevationFlag", "1");
 | ||
|  | 
 | ||
|  |         JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation_Doct, params);
 | ||
|  | 
 | ||
|  |         if (!jsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         List<Doctor> doctorList = new ArrayList<>();
 | ||
|  | 
 | ||
|  |         String deptName = jsonResult.getDataMapString("DeptName");
 | ||
|  | 
 | ||
|  |         JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
 | ||
|  |         Doctor doctorItem;
 | ||
|  |         JSONObject node;
 | ||
|  |         Register regItem;
 | ||
|  |         BigDecimal regFee, clinicFee;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             node = jsonArray.getJSONObject(i);
 | ||
|  |             doctorItem = new Doctor();
 | ||
|  |             doctorItem.setDeptCode(deptCode);
 | ||
|  | 
 | ||
|  |             doctorItem.setDeptName(deptName);
 | ||
|  |             doctorItem.setDoctCode(node.getString("DoctCode"));
 | ||
|  |             doctorItem.setDoctName(node.getString("DoctName"));
 | ||
|  |             doctorItem.setTitle(node.getString("Title")); //
 | ||
|  |             doctorItem.setTitleCode(node.getString("TitleCode")); //
 | ||
|  |             doctorItem.setIsExpert(node.getInteger("IsExpertRegistion")); // 是否是专家
 | ||
|  |             doctorItem.setDescription(node.getString("Spec")); // 特长
 | ||
|  | 
 | ||
|  |             // 号源
 | ||
|  |             regItem = new Register();
 | ||
|  |             regItem.setClinicCode(node.getString("ClinicCode")); //
 | ||
|  |             regItem.setClinicName(node.getString("ClinicName")); //
 | ||
|  |             regItem.setTid(node.getString("TID")); //
 | ||
|  |             regItem.setTName(node.getString("TID")); //
 | ||
|  |             regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
 | ||
|  |             regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
 | ||
|  |             regItem.setAllowReg(node.getInteger("AllowRegist")); //
 | ||
|  |             regItem.setRegDate(node.getString("ReservationDate"));
 | ||
|  |             regItem.setAddress(node.getString("Address"));
 | ||
|  |             // 金额
 | ||
|  |             regFee = node.getBigDecimal("RegFee");
 | ||
|  |             clinicFee = node.getBigDecimal("ClinicFee");
 | ||
|  |             if (regFee == null) {
 | ||
|  |                 regFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             if (clinicFee == null) {
 | ||
|  |                 clinicFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             regItem.setRegFee(regFee);
 | ||
|  |             regItem.setClinicFee(clinicFee);
 | ||
|  |             regItem.setPayMoney(regFee.add(clinicFee));
 | ||
|  | 
 | ||
|  |             doctorItem.setRegister(regItem);
 | ||
|  |             doctorList.add(doctorItem);
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String appId = WeChatConfig.APP_ID;
 | ||
|  |         if ("wx14ea983bce19d64c".equals(appId)) { // 富民晚班不能预约
 | ||
|  |             Register register;
 | ||
|  |             for (Doctor doctor : doctorList) {
 | ||
|  |                 register = doctor.getRegister();
 | ||
|  |                 if (register != null) {
 | ||
|  |                     String tid = register.getTid();
 | ||
|  |                     if (tid != null && !tid.trim().contains("晚班")) {
 | ||
|  |                         resultList.add(doctor);
 | ||
|  |                     }
 | ||
|  |                 }
 | ||
|  |             }
 | ||
|  |         } else {
 | ||
|  |             resultList = doctorList;
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [现场挂号]获取现场挂号医生列表
 | ||
|  |      *
 | ||
|  |      * @param deptCode     科室代码
 | ||
|  |      * @param timeInterval 挂号时段显示
 | ||
|  |      * @return 医生列表
 | ||
|  |      */
 | ||
|  |     public List<Doctor> getRegTodayDoctorList(String deptCode, String timeInterval) {
 | ||
|  |         log.info("[现场挂号]查询HIS医生列表 deptCode={}", deptCode);
 | ||
|  | 
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", deptCode);
 | ||
|  |         params.put("DoctCode", "");
 | ||
|  |         params.put("AllowRegistFlag", "1"); // 只返回有号源的医生
 | ||
|  | 
 | ||
|  |         JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Doct, params);
 | ||
|  | 
 | ||
|  |         List<Doctor> resultList = new ArrayList<>();
 | ||
|  |         if (!jsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         List<Doctor> doctorList = new ArrayList<>();
 | ||
|  |         String deptName = jsonResult.getDataMapString("DeptName");
 | ||
|  | 
 | ||
|  |         JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
 | ||
|  |         Doctor doctorItem;
 | ||
|  |         JSONObject node;
 | ||
|  |         Register regItem;
 | ||
|  |         BigDecimal regFee, clinicFee;
 | ||
|  |         String today = DateHelper.getCurDate();
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             node = jsonArray.getJSONObject(i);
 | ||
|  |             doctorItem = new Doctor();
 | ||
|  |             doctorItem.setDeptCode(deptCode);
 | ||
|  |             doctorItem.setDeptName(deptName);
 | ||
|  |             doctorItem.setDoctCode(node.getString("DoctCode"));
 | ||
|  |             doctorItem.setDoctName(node.getString("DoctName"));
 | ||
|  |             doctorItem.setTitle(node.getString("Title")); //
 | ||
|  |             doctorItem.setTitleCode(node.getString("TitleCode")); //
 | ||
|  |             doctorItem.setIsExpert(node.getInteger("IsExpertRegistion")); // 是否是专家
 | ||
|  |             doctorItem.setDescription(node.getString("Spec")); // 特长
 | ||
|  |             // 号源
 | ||
|  |             regItem = new Register();
 | ||
|  |             regItem.setClinicCode(node.getString("ClinicCode")); //
 | ||
|  |             regItem.setClinicName(node.getString("ClinicName")); //
 | ||
|  |             regItem.setTid(node.getString("TID")); // 时段id
 | ||
|  |             regItem.setTName(node.getString("TID")); // 时段名
 | ||
|  |             regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
 | ||
|  |             regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
 | ||
|  |             regItem.setAllowReg(node.getInteger("AllowReservation")); //
 | ||
|  |             regItem.setAddress(node.getString("Address"));
 | ||
|  |             regItem.setRegDate(today); // 今天
 | ||
|  |             // 金额
 | ||
|  |             regFee = node.getBigDecimal("RegFee");
 | ||
|  |             clinicFee = node.getBigDecimal("ClinicFee");
 | ||
|  |             if (regFee == null) {
 | ||
|  |                 regFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             if (clinicFee == null) {
 | ||
|  |                 clinicFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             regItem.setRegFee(regFee);
 | ||
|  |             regItem.setClinicFee(clinicFee);
 | ||
|  |             regItem.setPayMoney(regFee.add(clinicFee));
 | ||
|  | 
 | ||
|  |             doctorItem.setRegister(regItem);
 | ||
|  |             doctorList.add(doctorItem);
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         // 丽江古城区 "08:00:00", "11:59:00" | "12:00:00", "13:54:00" | "13:55:00", "17:30:00"
 | ||
|  |         // 芒市 "08:00:00", "11:45:00" | "11:46:00", "14:31:00" | "14:30:00", "17:30:00"
 | ||
|  |         // 蒙自市 07:40:00", "11:30:00 | "11:31:00", "13:44:00" | "13:45:00", "17:30:00"
 | ||
|  | 
 | ||
|  |         String defaultTimeInterval = "{\"am\":{\"begTime\":\"08:00\",\"endTime\":\"12:00\"},\"pm\":{\"begTime\":\"14:00\",\"endTime\":\"17:30\"},\"noon\":{\"begTime\":\"12:01\",\"endTime\":\"13:59\"}}";
 | ||
|  | 
 | ||
|  |         if (ObjectUtils.isEmpty(timeInterval)) {
 | ||
|  |             timeInterval = defaultTimeInterval;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JSONObject jsonObj = JsonHelper.parseObject(timeInterval);
 | ||
|  |         if (jsonObj == null) {
 | ||
|  |             jsonObj = JsonHelper.parseObject(defaultTimeInterval);
 | ||
|  |         }
 | ||
|  |         JSONObject am = jsonObj.getJSONObject("am"); // 早上
 | ||
|  |         JSONObject pm = jsonObj.getJSONObject("pm"); // 下午
 | ||
|  |         JSONObject noon = jsonObj.getJSONObject("noon"); // 中午
 | ||
|  |         JSONObject night = jsonObj.getJSONObject("night"); // 晚上
 | ||
|  | 
 | ||
|  |         // 早上
 | ||
|  |         if (am == null) {
 | ||
|  |             am = JsonHelper.parseObject("{ begTime: '08:00', endTime: '12:00' }");
 | ||
|  |         }
 | ||
|  |         String amBegTime = DateHelper.timeToHms(am.getString("begTime"), "08:00:00");
 | ||
|  |         String amEndTime = DateHelper.timeToHms(am.getString("endTime"), "12:00:00");
 | ||
|  | 
 | ||
|  |         // 下午
 | ||
|  |         if (pm == null) {
 | ||
|  |             pm = JsonHelper.parseObject("{ begTime: '14:01', endTime: '17:00' }");
 | ||
|  |         }
 | ||
|  |         String pmBegTime = DateHelper.timeToHms(pm.getString("begTime"), "14:01:00");
 | ||
|  |         String pmEndTime = DateHelper.timeToHms(pm.getString("endTime"), "17:30:00");
 | ||
|  | 
 | ||
|  |         // 中午
 | ||
|  |         if (noon == null) {
 | ||
|  |             noon = JsonHelper.parseObject("{ begTime: '12:01', endTime: '14:00' }");
 | ||
|  |         }
 | ||
|  |         String noonBegTime = DateHelper.timeToHms(noon.getString("begTime"), "12:01:00");
 | ||
|  |         String noonEndTime = DateHelper.timeToHms(noon.getString("endTime"), "14:00:00");
 | ||
|  | 
 | ||
|  |         String nightBegTime = null;
 | ||
|  |         String nightEndTime = null;
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         // 中午
 | ||
|  |         if (night != null) {
 | ||
|  |             nightBegTime = DateHelper.timeToHms(night.getString("begTime"), null);
 | ||
|  |             nightEndTime = DateHelper.timeToHms(night.getString("endTime"), null);
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         log.info("[挂号]时段参数 早上:{}-{}, 下午:{}-{}, 中午:{}-{}", amBegTime, amEndTime, pmBegTime, pmEndTime, noonBegTime, noonEndTime);
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         int key;
 | ||
|  |         if (DateHelper.inTimeRangeH_m_s(amBegTime, amEndTime)) { // 上午
 | ||
|  |             key = 1;
 | ||
|  |         } else if (DateHelper.inTimeRangeH_m_s(noonBegTime, noonEndTime)) { // 中午
 | ||
|  |             key = 2;
 | ||
|  |         } else if (DateHelper.inTimeRangeH_m_s(pmBegTime, pmEndTime)) { // 下午
 | ||
|  |             key = 3;
 | ||
|  |         } else {
 | ||
|  |             key = 4;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         // 晚班
 | ||
|  |         boolean isNight = night != null && nightBegTime != null && nightEndTime != null && DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime);
 | ||
|  | 
 | ||
|  |         log.info("【现场挂号】时段{{}}", key);
 | ||
|  | 
 | ||
|  |         Register register;
 | ||
|  |         for (Doctor doctor : doctorList) {
 | ||
|  |             register = doctor.getRegister();
 | ||
|  |             if (register == null) {
 | ||
|  |                 continue;
 | ||
|  |             }
 | ||
|  |             String tid = register.getTid();
 | ||
|  |             tid = tid == null ? "" : tid.trim();
 | ||
|  | 
 | ||
|  |             if (tid.contains("全天")) {
 | ||
|  |                 resultList.add(doctor);
 | ||
|  |             } else if (key == 1 && (tid.contains("上午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
 | ||
|  |                 resultList.add(doctor);
 | ||
|  |             } else if (key == 2 && tid.contains("中午") || (isNight && (tid.contains("晚班") || tid.contains("晚上")))) {
 | ||
|  |                 resultList.add(doctor);
 | ||
|  |             } else if (key == 3 && (tid.contains("下午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
 | ||
|  |                 resultList.add(doctor);
 | ||
|  |             } else if (key == 4 && (tid.contains("晚班") || tid.contains("晚上"))) {
 | ||
|  |                 if (night == null || nightBegTime == null || nightEndTime == null) {
 | ||
|  |                     resultList.add(doctor);
 | ||
|  |                 } else {
 | ||
|  |                     if (DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime)) {
 | ||
|  |                         resultList.add(doctor);
 | ||
|  |                     }
 | ||
|  |                 }
 | ||
|  |             }
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [预约挂号]获取科室列表
 | ||
|  |      *
 | ||
|  |      * @return 预约科室列表
 | ||
|  |      */
 | ||
|  |     public List<Dept> getRegResDeptList() {
 | ||
|  |         log.info("[预约挂号]查询HIS科室列表");
 | ||
|  |         List<Dept> resultList = new ArrayList<>();
 | ||
|  | 
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", ""); // 空为所有
 | ||
|  |         params.put("ReservationDate", ""); // 空为近7天
 | ||
|  |         JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation_Dept, params);
 | ||
|  | 
 | ||
|  |         if (!jsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         List<Dept> deptList = new ArrayList<>();
 | ||
|  |         JSONArray jsonArray = jsonResult.getJsonArray("Dept");
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         RegisterDao registerDao = new RegisterDao();
 | ||
|  |         List<Dept> wxDeptList = registerDao.selectDeptList();
 | ||
|  | 
 | ||
|  |         String subDeptJson;
 | ||
|  |         List<Dept> subDeptList;
 | ||
|  |         String subDeptName, subDeptCode;
 | ||
|  |         JSONObject subDeptItem;
 | ||
|  |         Dept subDept;
 | ||
|  |         Dept dept;
 | ||
|  |         JSONObject nodeItem;
 | ||
|  |         String address, deptCode, deptName, hospitalAreaName;
 | ||
|  |         JSONObject subDeptData;
 | ||
|  |         JSONArray dataItems;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             nodeItem = jsonArray.getJSONObject(i);
 | ||
|  |             deptCode = nodeItem.getString("Code");
 | ||
|  |             deptName = nodeItem.getString("Name");
 | ||
|  |             address = nodeItem.getString("Address");
 | ||
|  |             hospitalAreaName = nodeItem.getString("HospitalAreaName");
 | ||
|  |             // 科室过滤
 | ||
|  |             dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
 | ||
|  |             if (dept != null) {
 | ||
|  | 
 | ||
|  |                 subDeptJson = nodeItem.getString("Code_YZKStr");
 | ||
|  |                 if (!ObjectUtils.isEmpty(subDeptJson)) {
 | ||
|  |                     subDeptData = JsonHelper.parseObject(subDeptJson);
 | ||
|  |                     dataItems = subDeptData.getJSONArray("Data");
 | ||
|  | 
 | ||
|  |                     subDeptList = new ArrayList<>();
 | ||
|  |                     for (int j = 0; j < dataItems.size(); j++) {
 | ||
|  |                         subDeptItem = dataItems.getJSONObject(j);
 | ||
|  |                         subDeptName = subDeptItem.getString("Name");
 | ||
|  |                         subDeptCode = subDeptItem.getString("Code");
 | ||
|  |                         subDept = new Dept();
 | ||
|  |                         subDept.setDeptName(subDeptName);
 | ||
|  |                         subDept.setDeptCode(subDeptCode);
 | ||
|  |                         subDeptList.add(subDept);
 | ||
|  |                     }
 | ||
|  |                     dept.setChildren(subDeptList);
 | ||
|  |                 }
 | ||
|  | 
 | ||
|  |                 deptList.add(dept);
 | ||
|  |             }
 | ||
|  |         }
 | ||
|  |         return deptList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [现场挂号]获取科室列表
 | ||
|  |      *
 | ||
|  |      * @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回(默认值)}
 | ||
|  |      * @return 科室列表
 | ||
|  |      */
 | ||
|  |     public List<Dept> getRegTodayDeptList(String hasSourcesFlag) {
 | ||
|  |         if (ObjectUtils.isEmpty(hasSourcesFlag)) {
 | ||
|  |             hasSourcesFlag = "1";
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         if (!"0".equals(hasSourcesFlag) && !"1".equals(hasSourcesFlag)) {
 | ||
|  |             hasSourcesFlag = "1";
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         log.info("[现场挂号]查询HIS科室列表");
 | ||
|  |         List<Dept> resultList = new ArrayList<>();
 | ||
|  | 
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", ""); // 空为所有
 | ||
|  |         params.put("HasSourcesFlag", hasSourcesFlag); // 1:仅返回有号源科室; 0:有无号源科室都返回(默认值)
 | ||
|  | 
 | ||
|  |         JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Dept, params);
 | ||
|  |         if (!jsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         List<Dept> deptList = new ArrayList<>();
 | ||
|  |         JSONArray jsonArray = jsonResult.getJsonArray("Dept");
 | ||
|  | 
 | ||
|  |         RegisterDao registerDao = new RegisterDao();
 | ||
|  |         List<Dept> wxDeptList = registerDao.selectDeptList();
 | ||
|  | 
 | ||
|  |         String subDeptJson;
 | ||
|  |         List<Dept> subDeptList;
 | ||
|  |         String subDeptName, subDeptCode;
 | ||
|  |         JSONObject subDeptItem;
 | ||
|  | 
 | ||
|  |         Dept subDept;
 | ||
|  |         Dept dept;
 | ||
|  |         JSONObject nodeItem;
 | ||
|  |         String address, deptCode, deptName, hospitalAreaName;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             nodeItem = jsonArray.getJSONObject(i);
 | ||
|  |             deptCode = nodeItem.getString("Code");
 | ||
|  |             deptName = nodeItem.getString("Name");
 | ||
|  |             address = nodeItem.getString("Address");
 | ||
|  |             hospitalAreaName = nodeItem.getString("HospitalAreaName");
 | ||
|  |             // 科室过滤
 | ||
|  |             dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
 | ||
|  |             if (dept != null) {
 | ||
|  | 
 | ||
|  |                 subDeptJson = nodeItem.getString("Code_YZKStr");
 | ||
|  |                 if (!ObjectUtils.isEmpty(subDeptJson)) {
 | ||
|  |                     JSONObject subDeptData = JsonHelper.parseObject(subDeptJson);
 | ||
|  |                     JSONArray dataItems = subDeptData.getJSONArray("Data");
 | ||
|  | 
 | ||
|  |                     subDeptList = new ArrayList<>();
 | ||
|  |                     for (int j = 0; j < dataItems.size(); j++) {
 | ||
|  |                         subDeptItem = dataItems.getJSONObject(j);
 | ||
|  |                         subDeptName = subDeptItem.getString("Name");
 | ||
|  |                         subDeptCode = subDeptItem.getString("Code");
 | ||
|  |                         subDept = new Dept();
 | ||
|  |                         subDept.setDeptName(subDeptName);
 | ||
|  |                         subDept.setDeptCode(subDeptCode);
 | ||
|  |                         subDeptList.add(subDept);
 | ||
|  |                     }
 | ||
|  |                     dept.setChildren(subDeptList);
 | ||
|  |                 }
 | ||
|  | 
 | ||
|  |                 deptList.add(dept);
 | ||
|  |             }
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String appId = WeChatConfig.APP_ID;
 | ||
|  |         if ("wx99b45c38093d17f9".equals(appId)) { // 武定县人民医院挂号时间段定为7:30-11:30
 | ||
|  |             if (DateHelper.inTimeRangeH_m_s("07:30:00", "11:30:00") || DateHelper.inTimeRangeH_m_s("13:30:00", "17:00:00")) { // 在时间段内
 | ||
|  |                 resultList = new ArrayList<>(deptList);
 | ||
|  |             }
 | ||
|  |         } else {
 | ||
|  |             resultList = new ArrayList<>(deptList);
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [现场挂号]根据患者id获取挂号记录
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者id
 | ||
|  |      * @return 挂号记录
 | ||
|  |      */
 | ||
|  |     public List<Register> getRegSiteHistory(String patientId, String regDate) {
 | ||
|  |         List<Register> resultList = new ArrayList<>();
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("PatientID", patientId);
 | ||
|  |         params.put("MZNum", null);
 | ||
|  |         params.put("RegistDate", regDate);
 | ||
|  | 
 | ||
|  |         JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Regist, params);
 | ||
|  |         if (!JsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JSONArray jsonArray = JsonResult.getJsonArray("Reg");
 | ||
|  |         Register reg;
 | ||
|  |         BigDecimal payMoney;
 | ||
|  |         JSONObject node;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             node = jsonArray.getJSONObject(i);
 | ||
|  |             reg = new Register();
 | ||
|  |             reg.setDeptCode(node.getString("DeptCode")); //
 | ||
|  |             reg.setDeptName(node.getString("DeptName")); //
 | ||
|  |             reg.setDoctCode(node.getString("DoctCode")); //
 | ||
|  |             reg.setDoctName(node.getString("DoctName")); //
 | ||
|  |             reg.setAddress(node.getString("Address")); //
 | ||
|  | 
 | ||
|  |             reg.setTreatNum(node.getString("MZNum")); // 门诊号
 | ||
|  |             reg.setClinicCode(node.getString("ClinicCode")); //
 | ||
|  |             reg.setClinicName(node.getString("ClinicName")); //
 | ||
|  |             reg.setOrderFromOwner(node.getString("OrderFromOwner")); //
 | ||
|  |             // 日期
 | ||
|  |             reg.setRegDate(node.getString("RegistDate"));
 | ||
|  |             reg.setBegTime(node.getString("BegTime"));
 | ||
|  |             reg.setEndTime(node.getString("EndTime"));
 | ||
|  |             // 是否取号
 | ||
|  |             reg.setIsTake(node.getInteger("IsTake"));
 | ||
|  |             // 是否就诊
 | ||
|  |             reg.setIsTreat(node.getInteger("IsTreat"));
 | ||
|  |             // HIS
 | ||
|  |             reg.setHisTransNo(node.getString("HISTransNo")); //
 | ||
|  |             // 金额
 | ||
|  |             payMoney = node.getBigDecimal("RegistMoney");
 | ||
|  |             reg.setPayMoney(payMoney == null ? BigDecimal.ZERO : payMoney); //
 | ||
|  |             resultList.add(reg);
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [预约挂号]根据患者id查询预约记录
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者id
 | ||
|  |      * @param regDate   挂号日期
 | ||
|  |      * @return 预约记录
 | ||
|  |      */
 | ||
|  |     public List<Register> getRegReserveHistory(String patientId, String regDate) {
 | ||
|  |         List<Register> resultList = new ArrayList<>();
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("PatientID", patientId);
 | ||
|  |         params.put("ReservationDate", regDate);
 | ||
|  |         params.put("ReservationTransNo", "");
 | ||
|  |         params.put("AfterTodayFlag", "0");
 | ||
|  | 
 | ||
|  |         JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation, params);
 | ||
|  |         if (!JsonResult.success()) {
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JSONArray jsonArray = JsonResult.getJsonArray("Reservation");
 | ||
|  |         Register reg;
 | ||
|  |         JSONObject node;
 | ||
|  |         BigDecimal regFee, clinicFee;
 | ||
|  |         String doctorCode, doctorName;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             node = jsonArray.getJSONObject(i);
 | ||
|  |             reg = new Register();
 | ||
|  |             reg.setDeptCode(node.getString("DeptCode"));
 | ||
|  |             reg.setDeptName(node.getString("DeptName"));
 | ||
|  |             doctorCode = node.getString("DoctCode");
 | ||
|  |             doctorName = node.getString("DoctName");
 | ||
|  | 
 | ||
|  |             if (ObjectUtils.isEmpty(doctorCode)) {
 | ||
|  |                 doctorCode = node.getString("TitleCode");
 | ||
|  |             }
 | ||
|  |             if (ObjectUtils.isEmpty(doctorName)) {
 | ||
|  |                 doctorName = node.getString("Title");
 | ||
|  |             }
 | ||
|  |             reg.setDoctCode(doctorCode);
 | ||
|  |             reg.setDoctName(doctorName);
 | ||
|  | 
 | ||
|  |             reg.setAddress(node.getString("Address"));
 | ||
|  |             reg.setClinicCode(node.getString("ClinicCode")); //
 | ||
|  |             reg.setClinicName(node.getString("ClinicName")); //
 | ||
|  |             reg.setOrderFromOwner(node.getString("OrderFromOwner")); //
 | ||
|  | 
 | ||
|  |             // 时段
 | ||
|  |             reg.setTid(node.getString("TID"));
 | ||
|  |             reg.setTName(node.getString("TID"));
 | ||
|  | 
 | ||
|  |             // 是否取号
 | ||
|  |             reg.setIsTake(node.getInteger("IsTake"));
 | ||
|  |             // 是否就诊
 | ||
|  |             reg.setIsTreat(node.getInteger("IsTreat"));
 | ||
|  | 
 | ||
|  |             reg.setRegDate(node.getString("ReservationDate")); // 日期
 | ||
|  |             reg.setHisTransNo(node.getString("HISTransNo"));   // HIS流水号
 | ||
|  |             reg.setTradeNo(node.getString("ReservationTransNo")); // HIS交易流水号
 | ||
|  |             reg.setHospitalArea(node.getString("HospitalAreaName")); // HIS交易流水号
 | ||
|  |             reg.setBegTime(node.getString("BegTime"));
 | ||
|  |             reg.setEndTime(node.getString("EndTime"));
 | ||
|  |             // 金额
 | ||
|  |             regFee = node.getBigDecimal("RegFee");
 | ||
|  |             if (regFee == null) {
 | ||
|  |                 regFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             clinicFee = node.getBigDecimal("ClinicFee");
 | ||
|  |             if (clinicFee == null) {
 | ||
|  |                 clinicFee = BigDecimal.ZERO;
 | ||
|  |             }
 | ||
|  |             reg.setRegFee(regFee);
 | ||
|  |             reg.setClinicFee(clinicFee);
 | ||
|  |             reg.setPayMoney(regFee.add(clinicFee));
 | ||
|  |             resultList.add(reg);
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 取消预约
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者ID
 | ||
|  |      * @param tradeNo   HIS交易流水号
 | ||
|  |      * @return WsResult响应码
 | ||
|  |      */
 | ||
|  |     public JsonResult cancelReserve(String patientId, String tradeNo) {
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("PatientID", patientId);
 | ||
|  |         params.put("ReservationTransNo", tradeNo);
 | ||
|  |         params.put("RecallTransNo", "R" + tradeNo);
 | ||
|  | 
 | ||
|  |         return HisHelper.getJsonResult(HisEnum.AP_Recall_Reservation, params);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 查询患者是否挂过号
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者ID
 | ||
|  |      * @param regDate   挂号时间
 | ||
|  |      * @return boolean
 | ||
|  |      */
 | ||
|  |     public List<Register> hasRegSite(String patientId, String regDate) {
 | ||
|  |         return getRegSiteHistory(patientId, regDate);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 查询患者是否预约过
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者ID
 | ||
|  |      * @param regDate   挂号时间
 | ||
|  |      * @return boolean
 | ||
|  |      */
 | ||
|  |     public List<Register> hasRegReserve(String patientId, String regDate) {
 | ||
|  |         return getRegReserveHistory(patientId, regDate);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     // 分时段---------------------------------------------------------------------------
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [分时段挂号]查询科室
 | ||
|  |      *
 | ||
|  |      * @param begDate 开始时间
 | ||
|  |      * @param endDate 结束时间
 | ||
|  |      * @return 科室列表
 | ||
|  |      */
 | ||
|  |     public List<Dept> getTimeDeptList(String begDate, String endDate) {
 | ||
|  |         List<Dept> deptList = new ArrayList<>();
 | ||
|  | 
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", "");// 空为所有
 | ||
|  |         params.put("RegistBegDate", begDate);
 | ||
|  |         params.put("RegistEndDate", endDate);
 | ||
|  |         params.put("CanRegistFlag", "1"); // 1:返回有号源的科室
 | ||
|  | 
 | ||
|  |         JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Dept_New, params);
 | ||
|  |         if (!JsonResult.success()) {
 | ||
|  |             log.info("[科室-分时段]{}", JsonResult.getMessage());
 | ||
|  |             return deptList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JSONArray jsonArray = JsonResult.getJsonArray("Dept");
 | ||
|  | 
 | ||
|  |         Dept dept;
 | ||
|  |         JSONObject nodeItem;
 | ||
|  |         String address, deptCode, deptName, hospitalAreaName;
 | ||
|  | 
 | ||
|  |         RegisterDao registerDao = new RegisterDao();
 | ||
|  |         List<Dept> wxDeptList = registerDao.selectDeptList();
 | ||
|  | 
 | ||
|  |         String subDeptJson;
 | ||
|  |         List<Dept> subDeptList;
 | ||
|  |         String subDeptName, subDeptCode;
 | ||
|  |         JSONObject subDeptItem;
 | ||
|  |         Dept subDept;
 | ||
|  |         for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |             nodeItem = jsonArray.getJSONObject(i);
 | ||
|  |             deptCode = nodeItem.getString("Code");
 | ||
|  |             deptName = nodeItem.getString("Name");
 | ||
|  |             address = nodeItem.getString("Address");
 | ||
|  |             hospitalAreaName = nodeItem.getString("HospitalAreaName");
 | ||
|  | 
 | ||
|  |             // 科室过滤
 | ||
|  |             dept = registerDao.deptFilter(wxDeptList, deptCode, deptName, address, hospitalAreaName);
 | ||
|  |             if (dept != null) {
 | ||
|  |                 // 亚专科
 | ||
|  |                 subDeptJson = nodeItem.getString("Code_YZKStr");
 | ||
|  |                 if (!ObjectUtils.isEmpty(subDeptJson)) {
 | ||
|  |                     JSONObject subDeptData = JsonHelper.parseObject(subDeptJson);
 | ||
|  |                     JSONArray dataItems = subDeptData.getJSONArray("Data");
 | ||
|  | 
 | ||
|  |                     subDeptList = new ArrayList<>();
 | ||
|  |                     for (int j = 0; j < dataItems.size(); j++) {
 | ||
|  |                         subDeptItem = dataItems.getJSONObject(j);
 | ||
|  |                         subDeptName = subDeptItem.getString("Name");
 | ||
|  |                         subDeptCode = subDeptItem.getString("Code");
 | ||
|  |                         subDept = new Dept();
 | ||
|  |                         subDept.setDeptName(subDeptName);
 | ||
|  |                         subDept.setDeptCode(subDeptCode);
 | ||
|  |                         subDeptList.add(subDept);
 | ||
|  |                     }
 | ||
|  |                     dept.setChildren(subDeptList);
 | ||
|  |                 }
 | ||
|  |                 deptList.add(dept);
 | ||
|  |             }
 | ||
|  |         }
 | ||
|  |         return deptList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 分时段医生查询
 | ||
|  |      *
 | ||
|  |      * @param deptCode    科室编码
 | ||
|  |      * @param subDeptCode 亚专科编码
 | ||
|  |      * @param begDate     开始日期
 | ||
|  |      * @param endDate     结束日期
 | ||
|  |      * @return list
 | ||
|  |      */
 | ||
|  |     public List<Doctor> getTimeDoctorList(String deptCode, String subDeptCode, String begDate, String endDate) {
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", deptCode);
 | ||
|  |         params.put("DoctCode", null); // 空为所有
 | ||
|  |         params.put("RegistBegDate", begDate);
 | ||
|  |         params.put("RegistEndDate", endDate);
 | ||
|  |         params.put("CanRegistFlag", "0"); // { 0:返回所有医生; 1:仅返回有号源的医师 }
 | ||
|  |         if (!ObjectUtils.isEmpty(subDeptCode)) {
 | ||
|  |             params.put("DeptCode_YZKCode", subDeptCode); // 亚专科code
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Doct_New, params);
 | ||
|  | 
 | ||
|  |         List<Doctor> resultList = new ArrayList<>();
 | ||
|  |         if (!JsonResult.success()) {
 | ||
|  |             log.info("[医生-分时段查询]{}", JsonResult.getMessage());
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JSONArray deptJsonList = JsonResult.getJsonArray("Dept");
 | ||
|  |         JSONObject deptJson, doctorJson;
 | ||
|  |         String deptName;
 | ||
|  |         Doctor doctorItem;
 | ||
|  |         JSONArray doctorJsonList;
 | ||
|  |         for (int i = 0; i < deptJsonList.size(); i++) {
 | ||
|  |             deptJson = deptJsonList.getJSONObject(i);
 | ||
|  |             deptName = ParamHelper.spaceFormat(deptJson.getString("DeptName"));
 | ||
|  | 
 | ||
|  |             doctorJsonList = deptJson.getJSONArray("Doct");
 | ||
|  | 
 | ||
|  |             for (int k = 0; k < doctorJsonList.size(); k++) {
 | ||
|  |                 doctorJson = doctorJsonList.getJSONObject(k);
 | ||
|  |                 doctorItem = new Doctor();
 | ||
|  |                 doctorItem.setDeptCode(deptCode);
 | ||
|  |                 doctorItem.setDeptName(deptName);
 | ||
|  |                 doctorItem.setDoctCode(ParamHelper.spaceFormat(doctorJson.getString("DoctCode")));
 | ||
|  |                 doctorItem.setDoctName(ParamHelper.spaceFormat(doctorJson.getString("DoctName")));
 | ||
|  |                 //
 | ||
|  |                 doctorItem.setTitle(ParamHelper.spaceFormat(doctorJson.getString("Title")));         // 职称
 | ||
|  |                 doctorItem.setTitleCode(ParamHelper.spaceFormat(doctorJson.getString("TitleCode"))); //
 | ||
|  |                 doctorItem.setDescription(ParamHelper.spaceFormat(doctorJson.getString("Spec")));    // 描述
 | ||
|  |                 //
 | ||
|  |                 doctorItem.setSurplusSources(doctorJson.getInteger("SurplusSources")); // 描述
 | ||
|  |                 resultList.add(doctorItem);
 | ||
|  |             }
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * [分时段]根据科室code和医生code查询医生号源
 | ||
|  |      *
 | ||
|  |      * @param deptCode    科室code
 | ||
|  |      * @param doctCode    医生code
 | ||
|  |      * @param subDeptCode 亚专科code(可为空,为空查询大科室)
 | ||
|  |      * @param begDate     开始日期(yyyy-MM-dd HH:mm:ss)
 | ||
|  |      * @param endDate     结束日期(yyyy-MM-dd)
 | ||
|  |      * @return 号源集合
 | ||
|  |      */
 | ||
|  |     public List<Map<Object, Object>> getTimeSource(String deptCode, String subDeptCode, String doctCode, String
 | ||
|  |             begDate, String endDate) {
 | ||
|  |         if (DateHelper.isToday(begDate)) {
 | ||
|  |             begDate = begDate + " " + DateHelper.getCurTime();
 | ||
|  |         }
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("DeptCode", deptCode);
 | ||
|  |         params.put("DoctCode", doctCode);
 | ||
|  |         params.put("RegistBegDate", begDate);
 | ||
|  |         params.put("RegistEndDate", endDate);
 | ||
|  |         params.put("CanRegistFlag", "1"); // 仅返回有号源的医师 { 空或0:所有; 1:仅返回可挂号源 }
 | ||
|  |         params.put("TimeInterval", 0);    // 排班时段[ 0:所有时段、1:上午、2:中午、3:下午、4:晚上 ]
 | ||
|  |         if (!ObjectUtils.isEmpty(subDeptCode)) {
 | ||
|  |             params.put("DeptCode_YZKCode", subDeptCode); // 亚专科code
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Register_Source_New, params);
 | ||
|  |         List<Map<Object, Object>> resultList = new ArrayList<>();
 | ||
|  |         if (!JsonResult.success()) {
 | ||
|  |             log.info("[号源-分时段查询]{}", JsonResult.getMessage());
 | ||
|  |             return resultList;
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         try {
 | ||
|  |             JSONArray jsonArray = JsonResult.getJsonArray("Dept", "Doct", "TimeInterval");
 | ||
|  |             JSONObject timeNode, sourceNode;
 | ||
|  |             Map<Object, Object> map;
 | ||
|  |             Register reg;
 | ||
|  |             JSONArray sourceArr;
 | ||
|  |             BigDecimal regMoney;
 | ||
|  |             List<Register> list;
 | ||
|  |             String tid, tName;
 | ||
|  |             for (int i = 0; i < jsonArray.size(); i++) {
 | ||
|  |                 timeNode = jsonArray.getJSONObject(i);
 | ||
|  |                 map = new HashMap<>();
 | ||
|  | 
 | ||
|  |                 tid = timeNode.getString("TID");
 | ||
|  |                 tName = timeNode.getString("TName");
 | ||
|  |                 map.put("tid", tid);
 | ||
|  |                 map.put("tName", tName);
 | ||
|  | 
 | ||
|  |                 sourceArr = timeNode.getJSONArray("Source");
 | ||
|  |                 list = new ArrayList<>();
 | ||
|  |                 for (int k = 0; k < sourceArr.size(); k++) {
 | ||
|  |                     sourceNode = sourceArr.getJSONObject(k);
 | ||
|  |                     regMoney = sourceNode.getBigDecimal("RegistPrice");
 | ||
|  |                     if (regMoney == null) {
 | ||
|  |                         regMoney = BigDecimal.ZERO;
 | ||
|  |                     }
 | ||
|  |                     if (k == 0) {
 | ||
|  |                         map.put("regName", sourceNode.getString("RegistName"));
 | ||
|  |                         map.put("payMoney", regMoney);
 | ||
|  |                     }
 | ||
|  | 
 | ||
|  |                     reg = new Register();
 | ||
|  |                     reg.setTid(tid);
 | ||
|  |                     reg.setTName(tName);
 | ||
|  |                     reg.setRegFee(regMoney);
 | ||
|  |                     // -----------------------
 | ||
|  |                     reg.setSourceId(sourceNode.getString("SourceId"));
 | ||
|  |                     reg.setQueueNum(sourceNode.getString("QueueNumber"));
 | ||
|  |                     reg.setBegTime(sourceNode.getString("BegTime"));
 | ||
|  |                     reg.setEndTime(sourceNode.getString("EndTime"));
 | ||
|  |                     reg.setRegCode(sourceNode.getString("RegistCode"));
 | ||
|  |                     reg.setRegName(sourceNode.getString("RegistName"));
 | ||
|  |                     reg.setRegDate(sourceNode.getString("RegistDate"));
 | ||
|  |                     reg.setAddress(sourceNode.getString("ClinicAddress"));
 | ||
|  |                     reg.setAllowReg(sourceNode.getInteger("AllowOnline"));
 | ||
|  |                     reg.setIsUsed(sourceNode.getInteger("IsUsed"));
 | ||
|  | 
 | ||
|  |                     list.add(reg);
 | ||
|  |                 }
 | ||
|  |                 map.put("sourceList", list);
 | ||
|  |                 resultList.add(map);
 | ||
|  |             }
 | ||
|  |         } catch (Exception e) {
 | ||
|  |             e.printStackTrace();
 | ||
|  |             ErrorHelper.println(e);
 | ||
|  |         }
 | ||
|  |         return resultList;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 执行分时段挂号
 | ||
|  |      *
 | ||
|  |      * @param reg 挂号信息
 | ||
|  |      * @return 结果
 | ||
|  |      */
 | ||
|  |     public JsonResult handleTimeReg(Register reg, MerchantEnum merchantEnum) {
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         params.put("PatientID", reg.getPatientId());
 | ||
|  |         params.put("SourceId", reg.getSourceId());
 | ||
|  |         params.put("DeptCode", reg.getDeptCode());
 | ||
|  |         params.put("DoctCode", reg.getDoctCode());
 | ||
|  |         params.put("TimeInterval", reg.getTid());
 | ||
|  |         params.put("BegTime", reg.getBegTime());
 | ||
|  |         params.put("EndTime", reg.getEndTime());
 | ||
|  |         params.put("RegistCode", reg.getRegCode());
 | ||
|  |         params.put("RegistDate", reg.getRegDate());
 | ||
|  |         params.put("PayMoney", reg.getPayMoney());
 | ||
|  |         params.put("PayDate", reg.getPayDate());
 | ||
|  |         params.put("PayTime", reg.getPayTime());
 | ||
|  |         params.put("TransNo", reg.getTradeNo());
 | ||
|  |         params.put("PayWay", merchantEnum.HIS_PAY_WAY);
 | ||
|  |         if (!ObjectUtils.isEmpty(reg.getSubDeptCode())) {
 | ||
|  |             params.put("DeptCode_YZKCode", reg.getSubDeptCode()); // 亚专科code
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         params.put("OpenId", reg.getOpenid());
 | ||
|  |         params.put("Token", WeChatConfig.TOKEN);
 | ||
|  | 
 | ||
|  |         return HisHelper.getJsonResult(HisEnum.AP_Regist_New, params);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 执行挂号
 | ||
|  |      *
 | ||
|  |      * @param reg 参数
 | ||
|  |      * @return map
 | ||
|  |      */
 | ||
|  |     public JsonResult handleReg(Register reg, MerchantEnum merchantEnum) {
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  |         String regDate = reg.getRegDate();
 | ||
|  |         params.put("PatientID", reg.getPatientId());
 | ||
|  |         params.put("DeptCode", reg.getDeptCode());
 | ||
|  |         params.put("DoctCode", reg.getDoctCode());
 | ||
|  |         params.put("TID", reg.getTid());
 | ||
|  |         params.put("ClinicCode", reg.getClinicCode());
 | ||
|  |         params.put("ClinicFee", reg.getClinicFee());
 | ||
|  |         params.put("RegFee", reg.getRegFee());
 | ||
|  |         params.put("PayMoney", reg.getPayMoney());
 | ||
|  |         params.put("PayDate", reg.getPayDate());
 | ||
|  |         params.put("PayTime", reg.getPayTime());
 | ||
|  | 
 | ||
|  |         params.put("TransNo", reg.getTradeNo());
 | ||
|  |         params.put("BankTransNo", reg.getBankTransNo());
 | ||
|  |         params.put("PayDeviceID", "mobile");
 | ||
|  |         params.put("PayWay", merchantEnum.HIS_PAY_WAY);
 | ||
|  |         if (!ObjectUtils.isEmpty(reg.getSubDeptCode())) {
 | ||
|  |             params.put("DeptCode_YZKCode", reg.getSubDeptCode()); // 亚专科code
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         if (DateHelper.isToday(regDate)) { // 今日挂号
 | ||
|  |             return HisHelper.getJsonResult(HisEnum.AP_Regist, params);
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         // 预约挂号
 | ||
|  |         params.put("ReservationDate", regDate);
 | ||
|  |         return HisHelper.getJsonResult(HisEnum.AP_Reservation, params);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 分时段挂号--是否占号
 | ||
|  |      *
 | ||
|  |      * @param patientId 患者id
 | ||
|  |      * @param sourceId  号源id
 | ||
|  |      * @return true:是; false:否
 | ||
|  |      */
 | ||
|  |     public synchronized static JsonResult isOccupySource(String patientId, String sourceId) {
 | ||
|  |         Map<String, Object> params = new HashMap<>();
 | ||
|  | 
 | ||
|  |         params.put("PatientID", patientId);
 | ||
|  |         params.put("SourceId", sourceId);
 | ||
|  |         params.put("TransNo", CodeHelper.get32UUID());
 | ||
|  |         return HisHelper.getJsonResult(HisEnum.AP_Occupy_Source_New, params);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | }
 |