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.
		
		
		
		
			
				
					
					
						
							174 lines
						
					
					
						
							7.4 KiB
						
					
					
				
			
		
		
	
	
							174 lines
						
					
					
						
							7.4 KiB
						
					
					
				package com.ynxbd.ali.helper;
 | 
						|
 | 
						|
import com.alibaba.fastjson.JSONArray;
 | 
						|
import com.alibaba.fastjson.JSONObject;
 | 
						|
import com.alipay.api.AlipayClient;
 | 
						|
import com.alipay.api.request.AlipayCommerceMedicalIndustrydataDepartmentUploadRequest;
 | 
						|
import com.alipay.api.request.AlipayCommerceMedicalIndustrydataHospitalUploadRequest;
 | 
						|
import com.alipay.api.response.AlipayCommerceMedicalIndustrydataDepartmentUploadResponse;
 | 
						|
import com.alipay.api.response.AlipayCommerceMedicalIndustrydataHospitalUploadResponse;
 | 
						|
import com.ynxbd.ali.config.AliConfig;
 | 
						|
import com.ynxbd.common.bean.Dept;
 | 
						|
import com.ynxbd.common.helper.common.ErrorHelper;
 | 
						|
import com.ynxbd.common.helper.common.JsonHelper;
 | 
						|
import com.ynxbd.wx.config.WeChatConfig;
 | 
						|
import lombok.extern.slf4j.Slf4j;
 | 
						|
 | 
						|
import java.net.URLEncoder;
 | 
						|
import java.util.List;
 | 
						|
import java.util.UUID;
 | 
						|
 | 
						|
@Slf4j
 | 
						|
public class AliUploadHelper {
 | 
						|
 | 
						|
    /**
 | 
						|
     * 上传医院信息
 | 
						|
     */
 | 
						|
    public static void uploadHosp() {
 | 
						|
        AlipayClient alipayClient = AliHelper.getAliClient();
 | 
						|
        AlipayCommerceMedicalIndustrydataHospitalUploadRequest request = new AlipayCommerceMedicalIndustrydataHospitalUploadRequest();
 | 
						|
 | 
						|
        JSONObject reqJson = new JSONObject();
 | 
						|
        reqJson.put("isv_pid", AliConfig.ISV_PARTNER_ID);
 | 
						|
        reqJson.put("request_id", UUID.randomUUID().toString());
 | 
						|
 | 
						|
        JSONArray hospArr = new JSONArray();
 | 
						|
        JSONObject hospInfoJson = new JSONObject();
 | 
						|
        hospInfoJson.put("hospital_name", AliConfig.HOSP_NAME);
 | 
						|
        hospInfoJson.put("hospital_id", AliConfig.HOSP_ID);
 | 
						|
        hospInfoJson.put("hospital_alias", AliConfig.HOSP_ALIAS);
 | 
						|
        hospInfoJson.put("hospital_province", AliConfig.HOSP_PROVINCE);
 | 
						|
        hospInfoJson.put("hospital_city", AliConfig.HOSP_CITY);
 | 
						|
        hospInfoJson.put("hospital_district", AliConfig.HOSP_DISTRICT);
 | 
						|
        hospInfoJson.put("hospital_addr", AliConfig.HOSP_ADDR);
 | 
						|
        hospInfoJson.put("hospital_lgt", AliConfig.HOSP_LGT);
 | 
						|
        hospInfoJson.put("hospital_lat", AliConfig.HOSP_LAT);
 | 
						|
        hospInfoJson.put("hospital_type", AliConfig.HOSP_TYPE);
 | 
						|
        hospInfoJson.put("hospital_grade", AliConfig.HOSP_GRADE);
 | 
						|
        hospInfoJson.put("hospital_logo", WeChatConfig.getHttpsBaseUrl() + "images/logo.png"); // logo
 | 
						|
 | 
						|
        hospArr.add(hospInfoJson);
 | 
						|
        reqJson.put("hospital_list", hospArr);
 | 
						|
 | 
						|
        log.info("[支付宝-医院信息]上传req={}", JsonHelper.toJsonString(reqJson));
 | 
						|
        request.setBizContent(JsonHelper.toJsonString(reqJson));
 | 
						|
        try {
 | 
						|
            AlipayCommerceMedicalIndustrydataHospitalUploadResponse response = alipayClient.execute(request);
 | 
						|
            log.info("[支付宝-医院信息]上传resp={}", JsonHelper.toJsonString(response));
 | 
						|
 | 
						|
            if (!response.isSuccess()) {
 | 
						|
                log.error("[支付宝医院信息]上传失败 code={}, msg={}, subMsg={}", response.getCode(), response.getMsg(), response.getSubMsg());
 | 
						|
            } else {
 | 
						|
                log.error("[支付宝医院信息]上传成功");
 | 
						|
            }
 | 
						|
        } catch (Exception e) {
 | 
						|
            ErrorHelper.println(e);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    public static void uploadDept(List<Dept> deptList, boolean isReserve) {
 | 
						|
        if (deptList == null || deptList.size() == 0) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        if (!AliConfig.IS_PUSH_MSG) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        String regFlag = isReserve ? "1" : "0"; // 0:今日挂号;1:预约挂号
 | 
						|
 | 
						|
        JSONArray deptArr = new JSONArray();
 | 
						|
        JSONObject deptInfoJson;
 | 
						|
        String url;
 | 
						|
        String deptCode, deptName;
 | 
						|
        String subDeptCode, subDeptName;
 | 
						|
        List<Dept> children;
 | 
						|
        for (Dept dept : deptList) {
 | 
						|
            deptCode = dept.getDeptCode();
 | 
						|
            deptName = dept.getDeptName();
 | 
						|
            if (deptCode == null || deptName == null) {
 | 
						|
                continue;
 | 
						|
            }
 | 
						|
            deptInfoJson = new JSONObject();
 | 
						|
            url = "deptCode=" + deptCode + "&deptName=" + deptName + "®Flag=" + regFlag;
 | 
						|
            try {
 | 
						|
                url = URLEncoder.encode(url, "UTF-8");
 | 
						|
            } catch (Exception e) {
 | 
						|
                ErrorHelper.println(e);
 | 
						|
            }
 | 
						|
            deptInfoJson.put("department_id", deptCode);
 | 
						|
            deptInfoJson.put("department_name", deptName);
 | 
						|
            deptInfoJson.put("department_type", "一级科室");
 | 
						|
            deptInfoJson.put("hospital_name", AliConfig.HOSP_NAME);
 | 
						|
            deptInfoJson.put("department_url", AliHelper.getLink("pages/home/department/department?" + url, null)); // 科室挂号服务跳转
 | 
						|
            deptArr.add(deptInfoJson);
 | 
						|
            if (deptArr.size() > 90) {
 | 
						|
                uploadDept(deptArr);
 | 
						|
                deptArr.clear();
 | 
						|
            }
 | 
						|
 | 
						|
            children = dept.getChildren();
 | 
						|
            if (children == null || children.size() == 0) {
 | 
						|
                continue;
 | 
						|
            }
 | 
						|
            for (Dept childDept : children) {
 | 
						|
                deptInfoJson = new JSONObject();
 | 
						|
                subDeptCode = childDept.getDeptCode();
 | 
						|
                subDeptName = childDept.getDeptName();
 | 
						|
                if (subDeptCode == null || subDeptName == null) {
 | 
						|
                    continue;
 | 
						|
                }
 | 
						|
 | 
						|
                url = "deptCode=" + deptCode + "&subDeptCode=" + subDeptCode + "&deptName=" + deptName + "&subDeptName=" + subDeptName + "®Flag=" + regFlag;
 | 
						|
                try {
 | 
						|
                    url = URLEncoder.encode(url, "UTF-8");
 | 
						|
                } catch (Exception e) {
 | 
						|
                    ErrorHelper.println(e);
 | 
						|
                }
 | 
						|
                deptInfoJson.put("department_id", deptCode + subDeptCode);
 | 
						|
                deptInfoJson.put("department_name", subDeptName);
 | 
						|
                deptInfoJson.put("department_type", "二级科室");
 | 
						|
                deptInfoJson.put("hospital_name", AliConfig.HOSP_NAME);
 | 
						|
                deptInfoJson.put("department_url", AliHelper.getLink("pages/home/department/department?" + url, null)); // 科室挂号服务跳转
 | 
						|
                deptArr.add(deptInfoJson);
 | 
						|
                if (deptArr.size() > 90) {
 | 
						|
                    uploadDept(deptArr);
 | 
						|
                    deptArr.clear();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    private static void uploadDept(JSONArray deptJson) {
 | 
						|
        if (deptJson == null || deptJson.size() == 0) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        AlipayClient alipayClient = AliHelper.getAliClient();
 | 
						|
        AlipayCommerceMedicalIndustrydataDepartmentUploadRequest request = new AlipayCommerceMedicalIndustrydataDepartmentUploadRequest();
 | 
						|
 | 
						|
        JSONObject reqJson = new JSONObject();
 | 
						|
        reqJson.put("isv_pid", AliConfig.ISV_PARTNER_ID);
 | 
						|
        reqJson.put("request_id", UUID.randomUUID().toString().replace("-", ""));
 | 
						|
 | 
						|
        reqJson.put("department_list", deptJson);
 | 
						|
 | 
						|
        if (AliConfig.IS_LOG) {
 | 
						|
            log.info("[支付宝-科室信息]上传入参:{}", JsonHelper.toJsonString(reqJson));
 | 
						|
        }
 | 
						|
 | 
						|
        request.setBizContent(JsonHelper.toJsonString(reqJson));
 | 
						|
        try {
 | 
						|
            AlipayCommerceMedicalIndustrydataDepartmentUploadResponse response = alipayClient.execute(request);
 | 
						|
            if (!response.isSuccess()) {
 | 
						|
                log.error("[支付宝-科室信息]上传失败 code={}, msg={}, subMsg={}", response.getCode(), response.getMsg(), response.getSubMsg());
 | 
						|
            } else {
 | 
						|
                log.info("[支付宝-科室信息]上传成功");
 | 
						|
            }
 | 
						|
        } catch (Exception e) {
 | 
						|
            ErrorHelper.println(e);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 |