Browse Source

fix 新增医生排班接口

DYH2020 2 năm trước cách đây
mục cha
commit
24a0f74d4b

+ 42 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/enums/DatePeriodEnum.java

@@ -0,0 +1,42 @@
+package com.ywt.alipaympapi.models.enums;
+
+/**
+ * 时间段
+ */
+public enum DatePeriodEnum {
+    UNKNOWN("", 0),
+    ALL_DAY("全天", 1),
+    MORNING("上午", 2),
+    AFTERNOON("下午", 3),
+    NIGHT("夜间", 4),
+    AFTER_MIDNIGHT("下半夜", 5),
+    MIDNOON("午间", 6),
+    ;
+
+    private final String displayName;
+
+    private final int value;
+
+    DatePeriodEnum(String displayName, int value) {
+        this.displayName = displayName;
+        this.value = value;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static DatePeriodEnum valueOf(int value) {
+        for (DatePeriodEnum datePeriodEnum : DatePeriodEnum.values()) {
+            if (datePeriodEnum.getValue() == value) {
+                return datePeriodEnum;
+            }
+        }
+        return UNKNOWN;
+    }
+}
+

+ 289 - 21
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvRegisterServiceImpl.java

@@ -2,6 +2,7 @@ package com.ywt.alipaympapi.service.impl;
 
 import com.ywt.alipaympapi.core.ConstantDef;
 import com.ywt.alipaympapi.core.utils.*;
+import com.ywt.alipaympapi.models.enums.DatePeriodEnum;
 import com.ywt.alipaympapi.models.enums.SexEnum;
 import com.ywt.alipaympapi.models.union_reg.HospitalCustomInfo;
 import com.ywt.alipaympapi.service.IsvRegisterService;
@@ -16,9 +17,8 @@ import com.ywt.gapi.taihe.register.CancelRegisteredRequest;
 import com.ywt.gapi.taihe.register.CancelRegisteredResponse;
 import com.ywt.gapi.taihe.register.TaiheRegisterServiceGrpc;
 import com.ywt.gapi.third.taihe.*;
-import com.ywt.gapi.user.DoctorServiceGrpc;
-import com.ywt.gapi.user.GetDoctorByHisCodeRequest;
-import com.ywt.gapi.user.GetDoctorByHisCodeResponse;
+import com.ywt.gapi.user.*;
+import com.ywt.model.BaseResponse;
 import com.ywt.model.PageVO;
 import com.ywt.model.Pagination;
 import com.ywt.request.queue.QueryQueueListRequest;
@@ -67,6 +67,9 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
                 .setSubHospitalId(subHospitalId)
                 .build();
         HospitalDeptListResponse res = systemServiceBlockingStub.getHospitalDeptList(req);
+        if (res.getResult().getCode() != ResultCode.SUCCEED) {
+            throw new AppMessageException(res.getResult().getInfo());
+        }
         Result result = res.getResult();
         if (result.getCode() == ResultCode.SUCCEED) {
             deptList = res.getHospitalDeptListList();
@@ -135,7 +138,7 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
      *                    都不为负值时,按照传入的 offset 计算开始结束日期。
      */
     private List<QueryDepDoctorListResponseData> getScheduleListCommon(int hospitalId, String deptCode, String doctorCode,
-                                                      String serviceCode, int startOffset, int endOffset) throws AppMessageException {
+                                                                       String serviceCode, int startOffset, int endOffset) throws AppMessageException {
         String redisKeyPattern = "ALI_SCHEDULE_LIST_%s_%s_%d_%s";
         String key = String.format(redisKeyPattern, deptCode, doctorCode, hospitalId, serviceCode);
         if (startOffset >= 0 && endOffset >= 0) {
@@ -146,7 +149,7 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
         if (!StringHelper.isNullOrWhiteSpace(value)) {
             Map<String, Object> cacheMap = JsonSerializer.from(value, Map.class);
             if (cacheMap != null && !Checker.isNone(cacheMap.get("list"))) {
-                return (List<QueryDepDoctorListResponseData>)cacheMap.get("list");
+                return (List<QueryDepDoctorListResponseData>) cacheMap.get("list");
             }
         }
 
@@ -189,8 +192,8 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
         return lst;
     }
 
-    private List<QueryDepDoctorListResponseData>  getConvertedScheduleList(int hospitalId, int startOffset, int endOffset, String deptCode,
-                                                               String doctorCode, String serviceCode) {
+    private List<QueryDepDoctorListResponseData> getConvertedScheduleList(int hospitalId, int startOffset, int endOffset, String deptCode,
+                                                                          String doctorCode, String serviceCode) {
         Calendar calendar = Calendar.getInstance();
         if (startOffset > 0) {
             calendar.add(Calendar.DATE, startOffset);
@@ -217,7 +220,7 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
             scheduleList = new LinkedList<>();
         }
         List<QueryDepDoctorListResponseData> all = new ArrayList<>();
-        for (int i = startOffset; i < endOffset ; i++) {
+        for (int i = startOffset; i < endOffset; i++) {
             Calendar c = Calendar.getInstance();
             int offset = i;
             if (offset > 0) {
@@ -236,7 +239,7 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
      * 排班记录转为Map
      */
     private List<QueryDepDoctorListResponseData> convertToScheduleMap(List<Schedule> scheduleList, Calendar calendar, String strDate,
-                                                     int offset, int hospitalId) {
+                                                                      int offset, int hospitalId) {
         Map<Integer, QueryDepDoctorListResponseData> doctorSet = new HashMap<>();
 
         GetDoctorByHisCodeResponse getDoctorByHisCodeResponse;
@@ -285,13 +288,13 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
 //                    continue;
 //                }
 //            }
-            if (s.getScheduleStatus() != 1){
+            if (s.getScheduleStatus() != 1) {
                 continue;
             }
             QueryDepDoctorListResponseData item = doctorSet.get(doctorId);
-            if (Checker.isNone(item)){
+            if (Checker.isNone(item)) {
                 item = new QueryDepDoctorListResponseData();
-                item.setDoctorId(doctorId+"");
+                item.setDoctorId(doctorId + "");
                 item.setName(s.getDoctorName());
                 item.setDesc(s.getDoctorSpec());
                 item.setPicUrl(avatar);
@@ -307,22 +310,24 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
                 item.setDeptCode(s.getDeptCode());
             }
             List<OrderSource> orderSourceList = item.getOrderSources();
-            if (Checker.isNone(orderSourceList)){
+            if (Checker.isNone(orderSourceList)) {
                 orderSourceList = new ArrayList<>();
             }
             OrderSource os = new OrderSource();
             //号源id
             os.setOrderSourceId(s.getScheduleItemCode());
             //号源开始时间段
-            os.setStartTime(s.getDatePeriod()+"");
+            os.setStartTime(s.getDatePeriod() + "");
             //号源截止时间段
             os.setEndTime(s.getDatePeriodName());
             //挂号费用
-            os.setCost(s.getFee()+"");
+            os.setCost(s.getFee() + "");
             //剩余数量
             os.setRemain(Checker.getIntegerValue(s.getAvailableLeftNum()));
             //true:确认挂号时支付,false:就诊时支付
             os.setOnlinePay(true);
+            os.setDatePeriodName(s.getDatePeriodName());
+            os.setServiceDate(s.getServiceDate());
             orderSourceList.add(os);
 
             doctorSet.put(doctorId, item);
@@ -332,7 +337,7 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
         for (Integer doctorIdInt : doctorIdSet) {
             QueryDepDoctorListResponseData data = doctorSet.get(doctorIdInt);
             List<OrderSource> sourceList = data.getOrderSources();
-            if (!Checker.isNone(sourceList)){
+            if (!Checker.isNone(sourceList)) {
                 int remain = sourceList.stream().mapToInt(OrderSource::getRemain).sum();
                 data.setRemain(remain);
             }
@@ -350,10 +355,244 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
     }
 
     @Override
-    public List<QueryDoctorOrderSourceListResponseData> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request) {
+    public List<QueryDoctorOrderSourceListResponseData> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request) throws Exception {
+        int hospitalId = BizUtil.getCurrentHospitalId();
+        String deptCode = request.getDepCode();
+        String doctorCode = request.getDoctorCode();
+        String serviceDate = request.getServiceDate();
+        Integer period = request.getPeriod();
+        if (StringHelper.isNullOrWhiteSpace(deptCode)) {
+            throw new AppMessageException("科室不存在");
+        }
+        if (StringHelper.isNullOrWhiteSpace(doctorCode)) {
+            throw new AppMessageException("医生不存在");
+        }
+        if (hospitalId <= 0) {
+            hospitalId = BizUtil.getHospitalIdByTerminalId(BizUtil.getCurrentTerminalWrapped());
+        }
+        List<Map<String, Object>> dataList = new LinkedList<>();
+        if (!StringHelper.isNullOrWhiteSpace(serviceDate)) {
+            Date date = DateUtil.parseDate(serviceDate, "yyyy-MM-dd");
+            if (date == null) {
+                throw new AppMessageException("invalid serviceDate");
+            }
+            //查询医生某一天的排班分时信息
+            if (period == null) {
+                throw new AppMessageException("请选择时段");
+            }
+            if (DatePeriodEnum.valueOf(period) == null) {
+                throw new AppMessageException("时段不存在");
+            }
+            String strDate = DateUtil.formatDate(date, "yyyy-MM-dd");
+            Map<String, Object> map = getScheduleTimeInfoResponse(deptCode, doctorCode, strDate, period, hospitalId);
+            if (map != null) {
+                dataList.add(map);
+            }
+        } else {
+            //取医生8天排班的分时信息
+            int[] periods = {DatePeriodEnum.MORNING.getValue(), DatePeriodEnum.AFTERNOON.getValue()};
+            Calendar calendar = Calendar.getInstance();
+
+            for (int offset = 0; offset < 8; offset++) {
+                calendar.add(Calendar.DATE, 1);
+                String strDate = DateUtil.formatDate(calendar.getTime(), "yyyy-MM-dd");
+
+                for (int p : periods) {
+                    Map<String, Object> map = getScheduleTimeInfoResponse(deptCode, doctorCode, strDate, p, hospitalId);
+
+                    if (map != null) {
+                        dataList.add(map);
+                    }
+                }
+            }
+        }
+        String deptName = "";
+        String doctorName = "";
+        String avatar = "";
+        String doctorTitle = "";
+        String doctorSpec = "";
+        double fee = 0;     //单位:元
+        int regFee = 0;     //单位:分
+        int treatFee = 0;   //单位:分
+        int amount = 0;     //单位:分
+        String feeStr = "";
+        String regFeeStr = "";
+        String treatFeeStr = "";
+        int doctorId = 0;
+
+        if (dataList.size() > 0) {
+            Map<String, Object> map = dataList.get(0);
+            String strDate = map.get("serviceDate").toString();
+            GetScheduleListRequest getScheduleListRequest = GetScheduleListRequest.newBuilder()
+                    .setDeptCode(deptCode)
+                    .setDoctorCode(doctorCode)
+                    .setServiceDate(strDate)
+                    .setHospitalId(hospitalId)
+                    .build();
+            GetScheduleListResponse getScheduleListResponse = taiheServiceBlockingStub.getScheduleList(getScheduleListRequest);
+
+            if (getScheduleListResponse.getCode() == ResultCode.SUCCEED_VALUE) {
+                List<Schedule> scheduleList = getScheduleListResponse.getSchedulesList();
+                if (scheduleList.size() > 0) {
+                    Schedule schedule = scheduleList.stream().filter(s -> s.getDatePeriod() == Checker.getIntegerValue(period)).findFirst().orElse(null);
+                    if (schedule != null) {
+                        deptName = schedule.getDeptName();
+                        doctorName = schedule.getDoctorName();
+                        avatar = schedule.getAvatar();
+                        doctorTitle = schedule.getDoctorTitle();
+                        doctorSpec = schedule.getDoctorSpec();
+                        amount = schedule.getFee();
+                        fee = schedule.getFee() / 100d;
+                        regFee = schedule.getRegFee();
+                        treatFee = schedule.getCheckupFee();
+                    } else {
+                        throw new AppMessageException("当前时间段没有匹配的排班数据");
+                    }
+                }
+            }
+        }
+
+        GetDoctorByHisCodeResponse getDoctorByHisCodeResponse = getDoctorByHisCode(doctorCode, hospitalId);
+        if (getDoctorByHisCodeResponse.getResult().getCode() == ResultCode.SUCCEED) {
+            if (!StringHelper.isNullOrWhiteSpace(getDoctorByHisCodeResponse.getAvatar())) {
+                avatar = getDoctorByHisCodeResponse.getAvatar();
+            } else {
+                avatar = ConstantDef.DOCTOR_AVATAR_URL;
+            }
+
+            doctorId = getDoctorByHisCodeResponse.getDoctorId();
+        }
+
+        if (systemSrv.checkIsNetDept(deptCode, hospitalId)) {
+            //南方医院太和分院(互联网医院名医诊区)
+            // v3.2.0 线下就诊费用单独设置
+            // v3.3.8 即使咨询关闭,仍然可以线下问诊,问诊费用要正常显示
+            DoctorRequest doctorRequest = DoctorRequest.newBuilder()
+                    .setUserid(doctorId)
+                    .build();
+            DoctorInfoResponse doctorInfoResponse = doctorServiceBlockingStub.getDoctorInfo(doctorRequest);
+            if (doctorInfoResponse.getResult().getCode() != ResultCode.SUCCEED) {
+                throw new AppMessageException(String.format("无法获取医生信息: %s", doctorInfoResponse.getResult().getInfo()));
+            }
+            // 线下就诊费用跟问诊费分开,线下就诊费用读取 offline_fee 字段
+            int consultFee = Checker.getIntegerValue(doctorInfoResponse.getInfo().getOfflineFee());
+            amount = consultFee;
+            fee = consultFee / 100d;
+            regFee = 0;
+            treatFee = 0;
+        }
+
+//        amount = 1;
+//        fee = 0.01;
+//        regFee = 0;
+//        treatFee = 1;//测试
+
+        feeStr = String.format("¥%.2f", fee);
+        regFeeStr = String.format("¥%.2f", regFee / 100d);
+        treatFeeStr = String.format("¥%.2f", treatFee / 100d);
+
+        Map<String, Object> data = new HashMap<>();
+        data.put("list", dataList);
+        data.put("hospitalName", BizUtil.getHospitalNameByIdSimply(hospitalId));
+        data.put("deptCode", deptCode);
+        data.put("deptName", deptName);
+        data.put("doctorCode", doctorCode);
+        data.put("doctorName", doctorName);
+        data.put("avatar", avatar);
+        data.put("doctorTitle", doctorTitle);
+        data.put("doctorSpec", doctorSpec);
+        data.put("amount", amount);
+        data.put("fee", fee);
+        data.put("regFee", regFee);
+        data.put("treatFee", treatFee);
+        data.put("feeStr", feeStr);
+        data.put("regFeeStr", regFeeStr);
+        data.put("treatFeeStr", treatFeeStr);
+        data.put("doctorId", doctorId);        //医生ID
+
+        // todo:20210527 为了提高预约挂号速度,弄一个列表用作缓冲
+//        String userKey = String.format(ConstantDef.YWT_COVID19_LIST_KEY, userService.getCurrentOpenId());
+//        if (!checkExistYwtCovid19ListKey(userKey)) {
+//            return response.failedWithParameterError("请稍后再查询,谢谢!");
+//        }
+        return null;
+    }
+
+    /**
+     * 得到分时排班信息
+     *
+     * @param deptCode
+     * @param doctorCode
+     * @param serviceDate
+     * @param period
+     * @return
+     */
+    private Map<String, Object> getScheduleTimeInfoResponse(String deptCode, String doctorCode, String serviceDate,
+                                                            int period, int hospitalId) {
+        List<Map<String, Object>> lst = new LinkedList<>();
+
+        GetScheduleTimeInfoRequest getScheduleTimeInfoRequest = GetScheduleTimeInfoRequest.newBuilder()
+                .setDeptCode(deptCode)
+                .setDoctorCode(doctorCode)
+                .setServiceDate(serviceDate)
+                .setDatePeriod(period)
+                .setHospitalId(hospitalId)
+                .build();
+        GetScheduleTimeInfoResponse getScheduleTimeInfoResponse = taiheServiceBlockingStub.getScheduleTimeInfo(getScheduleTimeInfoRequest);
+
+        if (getScheduleTimeInfoResponse.getCode() == ResultCode.SUCCEED_VALUE) {
+            List<ScheduleTimeInfo> scheduleTimeInfoList = getScheduleTimeInfoResponse.getScheduleTimeInfosList();
+            Calendar calendar = Calendar.getInstance();
+            String strDate = DateUtil.formatDate(calendar.getTime(), "yyyy-MM-dd");
+            String strTime = DateUtil.formatDate(calendar.getTime(), "HHmm");
+            int time = Integer.parseInt(strTime);
+
+            String strEndTime;
+            String flag;
+            int tmp;
+            int left;
+
+            for (ScheduleTimeInfo scheduleTimeInfo : scheduleTimeInfoList) {
+                flag = scheduleTimeInfo.getAvailableFlag();
+                left = scheduleTimeInfo.getAvailableLeftNum();
+
+                if (strDate.equals(serviceDate) && !StringHelper.isNullOrWhiteSpace(scheduleTimeInfo.getEndTime())) {
+                    strEndTime = scheduleTimeInfo.getEndTime();
+                    tmp = Integer.parseInt(strEndTime.replace(":", ""));
+
+                    if (tmp < time) {
+                        left = 0;
+                        flag = "N";
+                    }
+                }
+
+                Map<String, Object> map = new HashMap<>();
+                map.put("scheduleItemCode", scheduleTimeInfo.getScheduleItemCode());
+                map.put("startTime", scheduleTimeInfo.getStartTime());
+                map.put("endTime", scheduleTimeInfo.getEndTime());
+                map.put("availableTotalNum", scheduleTimeInfo.getAvailableTotalNum());
+                map.put("availableLeftNum", left);
+                map.put("availableFlag", flag);
+                map.put("availableNumStr", scheduleTimeInfo.getAvailableNumStr());
+
+                lst.add(map);
+            }
+        }
+
+        if (lst.size() > 0) {
+            Map<String, Object> dateMap = new HashMap<>();
+            dateMap.put("serviceDate", serviceDate);
+            dateMap.put("period", period);
+            dateMap.put("datePeriod", DatePeriodEnum.valueOf(period).getDisplayName());
+            dateMap.put("schedule", lst);
+
+            return dateMap;
+        }
+
         return null;
     }
 
+
     @Override
     public OrderConfirmResponseData orderConfirm(OrderConfirmRequest request) {
         log.info("IsvRegisterServiceImpl#orderConfirm--OrderConfirmRequest:{}", JsonSerializer.toJson(request));
@@ -526,16 +765,45 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
             list.add(reportItem);
         }
         return list;
-
     }
 
     @Override
-    public QueryDoctorInfoResponseData queryDoctorInfo(QueryDoctorInfoRequest request) {
-        return null;
+    public QueryDoctorInfoResponseData queryDoctorInfo(QueryDoctorInfoRequest request) throws Exception {
+        int doctorId = Integer.parseInt(Checker.getStringValue(request.getDoctorId(), "0"));
+        int hospitalId = BizUtil.getCurrentHospitalId();
+        if (doctorId < 1) {
+            throw new AppMessageException("invalid doctorId");
+        }
+        QueryDoctorInfoResponseData responseData = new QueryDoctorInfoResponseData();
+
+        GetDoctorRequest req = GetDoctorRequest.newBuilder().setDoctorId(doctorId).build();
+        GetDoctorResponse resp = doctorServiceBlockingStub.getDoctor(req);
+        Result result = resp.getResult();
+
+        if (result.getCode() != ResultCode.SUCCEED) {
+            throw new AppMessageException(result.getInfo());
+        }
+        DoctorInfo info = resp.getDoctorInfo();
+        responseData.setDoctorId(info.getDoctorid() + "");//医生id
+        responseData.setName(info.getName());//医生姓名
+        responseData.setLevel(info.getTitle());//医生职级
+        responseData.setPicUrl(info.getAvatar());//医生头像地址
+        responseData.setDescription(info.getBriefIntro());//医生简介
+        responseData.setSpecialty(info.getSpecialty());//擅长领域
+        responseData.setDistrictName(systemSrv.getHospitalNameById(hospitalId));//院区名称
+
+        List<Department> departmentList = new ArrayList<>();
+        Department department = new Department();
+        department.setName(info.getDept());
+        department.setDepartmentId(info.getDeptIds());
+        departmentList.add(department);
+        responseData.setDepartments(departmentList);
+        return responseData;
     }
 
+
     @Override
-    public PageVO<QueryDoctorListResponseData> queryDoctorList(QueryDoctorListRequest request) {
+    public PageVO<QueryDoctorListResponseData> queryDoctorList(QueryDoctorListRequest request) throws Exception {
         log.info("IsvRegisterServiceImpl#queryDoctorList--QueryDoctorListRequest:{}", JsonSerializer.toJson(request));
         int pageIndex = request.getPageIndex();
         int pageSize = request.getPageSize();

+ 38 - 22
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/PlanController.java

@@ -1,26 +1,14 @@
 package com.ywt.alipaympapi.controller;
 
+import com.ywt.alipaympapi.service.IsvRegisterService;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.Code;
 import com.ywt.model.PageVO;
 import com.ywt.model.ResponseVO;
 import com.ywt.request.queue.QueryQueueListRequest;
-import com.ywt.request.register.QueryDepDoctorListRequest;
-import com.ywt.request.register.QueryDepOrderSourceRemainRequest;
-import com.ywt.request.register.QueryDepartmentListRequest;
-import com.ywt.request.register.QueryDoctorListRequest;
-import com.ywt.request.register.QueryDoctorInfoRequest;
-import com.ywt.request.register.QueryDoctorOrderSourceListRequest;
-import com.ywt.request.register.QueryHospitalDistrictListRequest;
+import com.ywt.request.register.*;
 import com.ywt.response.queue.QueryQueueListResponse;
-import com.ywt.response.register.QueryDepDoctorListResponseData;
-import com.ywt.response.register.QueryDepOrderSourceRemainResponseData;
-import com.ywt.response.register.QueryDepartmentListResponseData;
-import com.ywt.response.register.QueryDoctorListResponseData;
-import com.ywt.response.register.QueryDoctorInfoResponseData;
-import com.ywt.response.register.QueryDoctorOrderSourceListResponseData;
-import com.ywt.response.register.QueryHospitalDistrictListResponseData;
-import com.ywt.alipaympapi.service.IsvRegisterService;
+import com.ywt.response.register.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -75,9 +63,9 @@ public class PlanController {
      * @return
      */
     @PostMapping("isvRequest.order.depDoctorList")
-    public ResponseVO<PageVO<QueryDepDoctorListResponseData>> queryDepDoctorList(QueryDepDoctorListRequest request) throws Exception {
+    public ResponseVO<PageVO<QueryDepDoctorListResponseData>> queryDepDoctorList(QueryDepDoctorListRequest request) {
         try {
-            return ResponseVO.success( isvRegisterService.queryDepDoctorList(request));
+            return ResponseVO.success(isvRegisterService.queryDepDoctorList(request));
         } catch (AppMessageException e) {
             return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
         } catch (Exception e) {
@@ -94,7 +82,14 @@ public class PlanController {
      */
     @PostMapping("isvRequest.order.doctorOrderSourceList")
     public ResponseVO<List<QueryDoctorOrderSourceListResponseData>> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request) {
-        return ResponseVO.success(isvRegisterService.queryDoctorOrderSourceList(request));
+        try {
+            return ResponseVO.success(isvRegisterService.queryDoctorOrderSourceList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("PlanController#queryDoctorOrderSourceList(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**
@@ -115,8 +110,15 @@ public class PlanController {
      * @return
      */
     @PostMapping("isvRequest.queue.queryList")
-    public ResponseVO<List<QueryQueueListResponse>> queryQueueList(QueryQueueListRequest request) throws Exception {
-        return ResponseVO.success(isvRegisterService.queryQueueList(request));
+    public ResponseVO<List<QueryQueueListResponse>> queryQueueList(QueryQueueListRequest request) {
+        try {
+            return ResponseVO.success(isvRegisterService.queryQueueList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("PlanController#queryQueueList(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**
@@ -127,7 +129,14 @@ public class PlanController {
      */
     @PostMapping("isvRequest.doctor.doctorInfo")
     public ResponseVO<QueryDoctorInfoResponseData> queryDoctorInfo(QueryDoctorInfoRequest request) {
-        return ResponseVO.success(isvRegisterService.queryDoctorInfo(request));
+        try {
+            return ResponseVO.success(isvRegisterService.queryDoctorInfo(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("PlanController#queryDoctorInfo(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**
@@ -138,6 +147,13 @@ public class PlanController {
      */
     @PostMapping("isvRequest.other.doctorList")
     public ResponseVO<PageVO<QueryDoctorListResponseData>> queryDoctorDepartmentList(QueryDoctorListRequest request) {
-        return ResponseVO.success(isvRegisterService.queryDoctorList(request));
+        try {
+            return ResponseVO.success(isvRegisterService.queryDoctorList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("PlanController#queryDoctorDepartmentList(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 }

+ 3 - 3
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/IsvRegisterService.java

@@ -43,7 +43,7 @@ public interface IsvRegisterService {
      * @param request
      * @return 查询结果
      **/
-    List<QueryDoctorOrderSourceListResponseData> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request);
+    List<QueryDoctorOrderSourceListResponseData> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request) throws Exception;
 
     /**
      * 挂号确认
@@ -100,7 +100,7 @@ public interface IsvRegisterService {
      * @param request
      * @return
      */
-    QueryDoctorInfoResponseData queryDoctorInfo(QueryDoctorInfoRequest request);
+    QueryDoctorInfoResponseData queryDoctorInfo(QueryDoctorInfoRequest request) throws Exception;
 
     /**
      * 医生科室列表查询
@@ -108,5 +108,5 @@ public interface IsvRegisterService {
      * @param request
      * @return
      */
-    PageVO<QueryDoctorListResponseData> queryDoctorList(QueryDoctorListRequest request);
+    PageVO<QueryDoctorListResponseData> queryDoctorList(QueryDoctorListRequest request) throws Exception;
 }

+ 91 - 37
onemini-hospital-sdk/src/main/java/com/ywt/model/BaseResponse.java

@@ -6,108 +6,162 @@ import java.io.Serializable;
  * @author Created by huangguoping.
  */
 public class BaseResponse implements Serializable {
+    public static final int SUCCEED = 0;//成功
     /**
-     * 成功
+     * 参数错误
      */
-    public static final int SUCCEED = 0;
+    public static final int PARAMETER_ERROR = 1;//参数错误
     /**
-     * 参数错误
+     * 签名错误
      */
-    public static final int PARAMETER_ERROR = 1;
+    public static final int SIGN_EEROR = 2;//签名错误
     /**
      * 应用级别错误
      */
-    public static final int APP_ERROR = 2;
+    public static final int APP_ERROR = 3;//应用级别错误
     /**
      * 应用级别异常
      */
-    public static final int APP_EXCEPTION = 3;
+    public static final int APP_EXCEPTION = 4;//应用级别异常
+    /**
+     * 其他错误
+     */
+    public static final int OTHER_ERROR = 5;//其他错误
+
     /**
      * 不合法的权限
      */
-    public static final int NO_RIGHT = 4;
+    public static final int NO_RIGHT = 6;//不合法的权限
+
     /**
-     * 其他错误
+     * 未登录
+     */
+    public static final int NOT_LOGGED_IN = 7;
+
+    /**
+     * 支付金额错误
+     */
+    public static final int PAYMENT_AMOUNT_ERROR = 8;
+
+    /**
+     * 对象不存在
+     */
+    public static final int OBJECT_IS_NOT_EXISTS = 9;
+
+    /**
+     * 特殊业务错误码,主要给前端做业务判断
      */
-    public static final int OTHER_ERROR = 5;
+    public static final int SPEC_BIZ_ERR_CODE = 10;
 
     private int code;
-    private String info;
+    private String info = "";
+    private Object data;
+
+    public int getCode() {
+        return code;
+    }
+
+    public BaseResponse setCode(int code) {
+        this.code = code;
+        return this;
+    }
+
+    public String getInfo() {
+        return info;
+    }
 
-    public BaseResponse succeed(){
+    public BaseResponse setInfo(String info) {
+        this.info = info;
+        return this;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    public BaseResponse succeed() {
         this.code = BaseResponse.SUCCEED;
         this.info = "处理成功";
         return this;
     }
 
-    public BaseResponse succeed(String info){
+    public BaseResponse succeed(String info) {
         this.code = BaseResponse.SUCCEED;
         this.info = info;
         return this;
     }
 
-    public BaseResponse failed(int code){
-        this.code = code;
+    public BaseResponse succeed(Object data) {
+        this.code = BaseResponse.SUCCEED;
+        this.info = "处理成功";
+        this.data = data;
         return this;
     }
 
-    public BaseResponse failed(int code, String info){
-        this.code = code;
+    public BaseResponse succeed(String info, Object data) {
+        this.code = BaseResponse.SUCCEED;
         this.info = info;
+        this.data = data;
         return this;
     }
 
-    public int getCode() {
-        return code;
-    }
-
-    public BaseResponse setCode(int code) {
+    public BaseResponse failed(int code) {
         this.code = code;
         return this;
     }
 
-    public String getInfo() {
-        return info;
+    public BaseResponse failed(int code, String info) {
+        this.code = code;
+        this.info = info;
+        return this;
     }
 
-    public BaseResponse setInfo(String info) {
+    public BaseResponse failed(int code, String info, Object data) {
+        this.code = code;
         this.info = info;
+        this.data = data;
         return this;
     }
 
-    public BaseResponse parameterErrorFailed(){
+    public BaseResponse failedWithParameterError(){
         this.code = BaseResponse.PARAMETER_ERROR;
-        this.info = "参数误";
+        this.info = "参数误";
         return this;
     }
 
-    public BaseResponse parameterErrorFailed(String info){
+    public BaseResponse failedWithParameterError(String info){
         this.code = BaseResponse.PARAMETER_ERROR;
         this.info = info;
         return this;
     }
 
-    public BaseResponse otherErrorFailed(){
-        this.code = BaseResponse.OTHER_ERROR;
-        this.info = "数据处理失败";
+    public BaseResponse failedWithAppError(){
+        this.code = BaseResponse.APP_ERROR;
+        this.info = "暂时无法处理数据,请稍后重试";
         return this;
     }
 
-    public BaseResponse otherErrorFailed(String info){
-        this.code = BaseResponse.OTHER_ERROR;
+    public BaseResponse failedWithAppError(String info){
+        this.code = BaseResponse.APP_ERROR;
         this.info = info;
         return this;
     }
 
-    public BaseResponse appErrrorFailed(){
-        this.code = BaseResponse.APP_ERROR;
-        this.info = "数据处理失败";
+    public BaseResponse error() {
+        this.code = BaseResponse.APP_EXCEPTION;
+        this.info = "系统开小差,请稍后重试";
         return this;
     }
 
-    public BaseResponse appExceptionFailed(){
+    public BaseResponse error(String info) {
         this.code = BaseResponse.APP_EXCEPTION;
-        this.info = "数据处理失败";
+        this.info = info;
         return this;
     }
+
+
 }

+ 4 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/register/QueryDoctorOrderSourceListRequest.java

@@ -17,9 +17,13 @@ public class QueryDoctorOrderSourceListRequest implements IsvListRequest<QueryDo
 
     private String appId;//医院小程序的AppId
     private String depId;//科室ID
+    private String depCode;//科室code
     private String doctorId;//医生唯一识别号
+    private String doctorCode;//医生code
     private String startTime;//号源开始时间(yyyy-MM-dd)
     private String endTime;//号源截止时间(yyyy-MM-dd)
+    private String serviceDate;
+    private int period;
 
     @Override
     public String serviceName() {

+ 2 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/register/OrderSource.java

@@ -14,4 +14,6 @@ public class OrderSource {
     private String cost;//挂号费用
     private Integer remain;//剩余数量
     private Boolean onlinePay;//true:确认挂号时支付,false:就诊时支付
+    private String serviceDate;//时间(eg:2022-09-20)
+    private String datePeriodName;//时间段(eg:下午)
 }