Przeglądaj źródła

新增ca认证接口

yeshijie 8 lat temu
rodzic
commit
dfd03792d7

+ 14 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java

@ -42,7 +42,7 @@ public class PrescriptionController extends BaseController{
	}
	@RequestMapping(value = "prePayCompletion",method = RequestMethod.POST)
	@ApiOperation("接收预结算完成消息")
	@ApiOperation("接收预结算完成消息(废弃)")
	public Result prePayCompletion(@ApiParam(name="data",value="json串",defaultValue = "{\"CODE\":1,\"RECIPE_NO\":\"0\",\"ORDER_NO\":\"DB0537136\"}")
								   @RequestParam(value = "data",required = true) String data){
		try {
@ -230,6 +230,19 @@ public class PrescriptionController extends BaseController{
		}
	}
	@RequestMapping(value = "fadeRecipe",method = RequestMethod.POST)
	@ApiOperation("CA认证通过接口")
	public Result affirmCARecipe(@ApiParam(name="code",value="续方code",defaultValue = "")
								 @RequestParam(value = "code",required = true) String code){
		try {
			String re = prescriptionService.affirmCARecipe(code);
			return Result.success("挂号作废处方接口!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	/************************************ CA认证 ************************************************************/
	@RequestMapping(value = "RequestRealNameSoftCertAndSign",method = RequestMethod.POST)
	@ResponseBody

+ 34 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java

@ -542,7 +542,7 @@ public class PrescriptionService extends ZysoftBaseService{
        if(prescriptionDiagnosisList.size()>1){
            json.put("DIAGNOSE_SUB_CODE",prescriptionDiagnosisList.get(1).getCode());//"DIAGNOSE_CODE": "次诊断编码",
        }
        if(prescription.getCaCertData()==null){
        if(prescription.getCaCertData()!=null){
            json.put("ORIGINAL_DATA",prescription.getStrOriginalData());//原文
            json.put("ORIGINAL_DATA_MD5",prescription.getOriginalDataAbstract());//原文的MD5摘要
            json.put("CA_SIGN_DATA",prescription.getCaMessage());//签名值
@ -743,6 +743,39 @@ public class PrescriptionService extends ZysoftBaseService{
        return response;
    }
    /**
     * CA认证通过接口
     * @param code
     * @return
     */
    public String affirmCARecipe(String code) throws Exception{
        Prescription prescription = prescriptionDao.findByCode(code);
        String[] hospitalMapping = getHospitalMapping(prescription.getHospital()); //获取机构映射
        String hospital = hospitalMapping[0];
        String licence = hospitalMapping[1];
        Map<String,String> header = new HashMap<>();
        header.put("ORGCODE",hospital);
        header.put("LICENCE",licence);
        //拼接开方参数
        JSONObject json = new JSONObject();
        json.put("recipeNo",prescription.getRecipeNo());// "recipeNo": "医嘱号",
        if(prescription.getCaCertData()!=null){
            json.put("ORIGINAL_DATA",prescription.getStrOriginalData());//原文
            json.put("ORIGINAL_DATA_MD5",prescription.getOriginalDataAbstract());//原文的MD5摘要
            json.put("CA_SIGN_DATA",prescription.getCaMessage());//签名值
            json.put("CA_CERTMAIN_DATA",prescription.getCaCertData());//签名证书主体数据
            json.put("CA_DIGITAL_SIGN_STREAM_NO_UUID",prescription.getDigitalSignNo());//CA数字签名唯一流水号
        }else {
            throw new Exception("未找到ca认证数据");
        }
        String response = postSecond("affirmCARecipe","CA认证通过接口",null,json,header,false,2);
        return response;
    }
    /*********************************************请求智业接口数据 end**************************************************/

+ 378 - 294
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/ZyDictDataService.java

@ -1,351 +1,391 @@
package com.yihu.wlyy.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.entity.zydict.*;
import com.yihu.wlyy.repository.zydict.*;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by chenweida on 2017/8/10.
 * 每天1点同步 智业的字典数据
 * 智业的字典数据
 */
@Service
public class ZyDictDataService extends BaseService {
    private Logger logger = LoggerFactory.getLogger(ZyDictDataService.class);
    @Autowired
    private JwPrescriptionService jwPrescriptionService;
    @Autowired
    private HospitalDao hospitalDao;
    private ZyCommonDictDao zyCommonDictDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public void synchronizeZy_iv_subject_class_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_SUBJECT_CLASS_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_subject_class_dict.getDict()).append(" (class_code,class_name,upper_class,spell_code,wbzx_code) " );
                        sql.append("values('").append(dict.getString("CLASS_CODE")).append("','");
                        sql.append(dict.getString("CLASS_NAME")).append("','");
                        sql.append(dict.getString("UPPER_CLASS")).append("','");
                        sql.append(dict.getString("SPELL_CODE")).append("','");
                        sql.append(dict.getString("WBZX_CODE")).append("')");
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    private ZyIvDeptDictDao zyIvDeptDictDao;
    @Autowired
    private ZyIvDeptStaffAllotDictDao zyIvDeptStaffAllotDictDao;
    @Autowired
    private ZyIvDiagnoseClassDictDao zyIvDiagnoseClassDictDao;
    @Autowired
    private ZyIvDiagnoseDictDao zyIvDiagnoseDictDao;
    @Autowired
    private ZyIvOrgPhysicAllotDictDao zyIvOrgPhysicAllotDictDao;
    @Autowired
    private ZyIvPhysicDictDao zyIvPhysicDictDao;
    @Autowired
    private ZyIvStaffDictDao zyIvStaffDictDao;
    @Autowired
    private ZyIvStaffRegTypeAllotDictDao zyIvStaffRegTypeAllotDictDao;
    @Autowired
    private ZyIvSubjectClassDictDao zyIvSubjectClassDictDao;
    /**
     * 根据字典名称下载字典
     * @param dictName
     */
    public void dictByDictName(String dictName){
        switch (dictName){
            case IV_SUBJECT_CLASS_DICT:
                synchronizeZy_iv_subject_class_dict();
                break;
            case IV_STAFF_REG_TYPE_ALLOT_DICT:
                synchronizeZy_iv_staff_reg_type_allot_dict();
                break;
            case IV_STAFF_DICT:
                synchronizeZy_iv_staff_dict();
                break;
            case IV_PHYSIC_DICT:
                synchronizeZy_iv_physic_dict();
                break;
            case IV_ORG_PHYSIC_ALLOT_DICT:
                synchronizeZy_iv_org_physic_allot_dict();
                break;
            case IV_DIAGNOSE_CLASS_DICT:
                synchronizeZy_iv_diagnose_class_dict();
                break;
            case IV_DEPT_STAFF_ALLOT_DICT:
                synchronizeZy_iv_dept_staff_allot_dict();
                break;
            case "commonDict":
                synchronizeZyCommonDict();
                break;
            case IV_DEPT_DICT:
                synchronizeZy_iv_dept_dict();
                break;
            default:break;
        }
    }
    public void synchronizeZy_iv_staff_reg_type_allot_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_STAFF_REG_TYPE_ALLOT_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_staff_reg_type_allot_dict.getDict()).append(" (org_code,staff_code,register_type,register_type_name,register_fee) " );
                        sql.append("values('").append(dict.getString("ORG_CODE")).append("','");
                        sql.append(dict.getString("STAFF_CODE")).append("','");
                        sql.append(dict.getString("REGISTER_TYPE")).append("','");
                        sql.append(dict.getString("REGISTER_TYPE_NAME")).append("','");
                        sql.append(dict.getString("REGISTER_FEE")).append("')");
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
    public void allDict() {
        try {
            //同步 zy_common_dict
            synchronizeZyCommonDict();
            //同步 zy_iv_dept_dict
            synchronizeZy_iv_dept_dict();
            //同步 zy_iv_dept_staff_allot_dict
            synchronizeZy_iv_dept_staff_allot_dict();
            //同步 zy_iv_diagnose_dict
            synchronizeZy_iv_diagnose_dict();
            //同步 zy_iv_diagnose_class_dict
            synchronizeZy_iv_diagnose_class_dict();
            //同步 zy_iv_org_physic_allot_dict
            synchronizeZy_iv_org_physic_allot_dict();
            //同步 zy_iv_physic_dict
            synchronizeZy_iv_physic_dict();
            //同步 zy_iv_staff_dict
            synchronizeZy_iv_staff_dict();  //birthday    Date(529084800000+0800) 无法解析
            //同步 zy_iv_staff_reg_type_allot_dict
            synchronizeZy_iv_staff_reg_type_allot_dict();
            //同步 zy_iv_subject_class_dict
            synchronizeZy_iv_subject_class_dict();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void synchronizeZ_iv_staff_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_STAFF_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_staff_dict.getDict()).append(" (org_code,staff_code,staff_name,work_code,birthday,sex,spell_code,wbzx_code,identity_no,certificate_no) " );
                        sql.append("values('").append(dict.getString("ORG_CODE")).append("','");
                        sql.append(dict.getString("STAFF_CODE")).append("','");
                        sql.append(dict.getString("STAFF_NAME")).append("','");
                        sql.append(dict.getString("WORK_CODE")).append("','");
                        sql.append(dict.getString("BIRTHDAY")).append("','");
                        sql.append(dict.getString("SEX")).append("','");
                        sql.append(dict.getString("SPELL_CODE")).append("','");
                        sql.append(dict.getString("WBZX_CODE")).append("','");
                        sql.append(dict.getString("IDENTITY_NO")).append("','");
                        sql.append(dict.getString("CERTIFICATE_NO")).append("')");
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    private void synchronizeZy_iv_diagnose_dict() {
        logger.info("synchronized zy_iv_diagnose_dict start");
        String dictName = this.IV_DIAGNOSE_DICT;
        List<ZyIvDiagnoseDict> zyIvDiagnoseDicts = new ArrayList<>();
        //得到list
        zyIvDiagnoseDicts = commonGetOneDict(ZyIvDiagnoseDict.class, dictName);
        if (zyIvDiagnoseDicts != null && zyIvDiagnoseDicts.size() > 0) {
            //清空表
            zyIvDiagnoseDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_diagnose_dict  ,size:" + zyIvDiagnoseDicts.size());
            zyIvDiagnoseDictDao.save(zyIvDiagnoseDicts);
        }
        logger.info("synchronized zy_iv_diagnose_dict end");
    }
    private String changDate(String date){
        String str=date.replace("/Date(","").replace(")/","");
        String time = str.substring(0,str.length()-5);
        Date data = new Date(Long.parseLong(time));
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(data);
    @Transactional
    private void synchronizeZy_iv_subject_class_dict() {
        logger.info("synchronized zy_iv_subject_class_dict start");
        String dictName = this.IV_SUBJECT_CLASS_DICT;
        List<ZyIvSubjectClassDict> zyIvSubjectClassDicts = new ArrayList<>();
        //得到list
        zyIvSubjectClassDicts = commonGetOneDict(ZyIvSubjectClassDict.class, dictName);
        if (zyIvSubjectClassDicts.size() > 0) {
            //清空表
            zyIvSubjectClassDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_subject_class_dict  ,size:" + zyIvSubjectClassDicts.size());
            zyIvSubjectClassDictDao.save(zyIvSubjectClassDicts);
            logger.info("synchronized zy_iv_subject_class_dict end");
        }
    }
    public void synchronizeZy_iv_physic_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_PHYSIC_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_physic_dict.getDict()).append(" (physic_code,physic_name,physic_spec,subject_class,dose_unit,quantity_unit,pack_unit,min_dose,pack_spec, " );
                        sql.append("retail_price,physic_from,toxicology_type,basic_flag,valid_flag,spell_code,wbzx_code,sequence)");
                        sql.append("values('").append(dict.getString("PHYSIC_CODE")).append("','");//药品代码
                        sql.append(dict.getString("PHYSIC_NAME")).append("','");//'药品名称'
                        sql.append(dict.getString("PHYSIC_SPEC")).append("','");//'药品规格'
                        sql.append(dict.getString("SUBJECT_CLASS")).append("','");//'药品科目  科目类别字典中定义'
                        sql.append(dict.getString("DOSE_UNIT")).append("','");//'剂量单位 计量单位字典中定义'
                        sql.append(dict.getString("QUANTITY_UNIT")).append("','");///'数量单位  计量单位字典中定义'
                        sql.append(dict.getString("PACK_UNIT")).append("',");//'包装单位   计量单位字典中定义'
                        sql.append(dict.getDouble("MIN_DOSE")).append(",");//'最小剂量'
                        sql.append(dict.getDouble("PACK_SPEC")).append(",");//
                        sql.append(dict.getDouble("RETAIL_PRICE")).append(",'");//'零售价'
                        sql.append(dict.getString("PHYSIC_FROM")).append("','");//'药品剂型  药品剂型字典中定义'
                        sql.append(dict.getString("TOXICOLOGY_TYPE")).append("','");//'毒理分类  药品毒理分类字典中定义'
                        sql.append(dict.getString("BASIC_FLAG")).append("','");//'基本药物标志  0:否;1:是'
                        sql.append(dict.getString("VALID_FLAG")).append("','");//'有效标志 0:无效;1:有效'
                        sql.append(dict.getString("SPELL_CODE")).append("','");//'拼音首码'
                        sql.append(dict.getString("WBZX_CODE")).append("',");//'五笔首码'
                        if(dict.getInteger("SEQUENCE")==null){
                            sql.append(dict.getInteger("SEQUENCE")).append(")");//'排序号'
                        }else {
                            sql.append(dict.getString("SEQUENCE")).append(")");//'排序号'
                        }
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    @Transactional
    private void synchronizeZy_iv_staff_reg_type_allot_dict() {
        logger.info("synchronized zy_iv_staff_reg_type_allot_dict start");
        String dictName = this.IV_STAFF_REG_TYPE_ALLOT_DICT;
        List<ZyIvStaffRegTypeAllotDict> zyIvStaffRegTypeAllotDicts = new ArrayList<>();
        //得到list
        zyIvStaffRegTypeAllotDicts = commonGetOneDict(ZyIvStaffRegTypeAllotDict.class, dictName);
        if (zyIvStaffRegTypeAllotDicts != null && zyIvStaffRegTypeAllotDicts.size() > 0) {
            //清空表
            zyIvStaffRegTypeAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_staff_reg_type_allot_dict  ,size:" + zyIvStaffRegTypeAllotDicts.size());
            zyIvStaffRegTypeAllotDictDao.save(zyIvStaffRegTypeAllotDicts);
            logger.info("synchronized zy_iv_staff_reg_type_allot_dict end");
        }
    }
    public void synchronizeZy_iv_org_physic_allot_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_ORG_PHYSIC_ALLOT_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_org_physic_allot_dict.getDict()).append(" (org_code,physic_code) " );
                        sql.append("values('").append(dict.getString("ORG_CODE")).append("','");//'机构编码'
                        sql.append(dict.getString("PHYSIC_CODE")).append("')");//'药品代码'
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    @Transactional
    private void synchronizeZy_iv_staff_dict() {
        logger.info("synchronized zy_iv_staff_dict start");
        String dictName = this.IV_STAFF_DICT;
        List<ZyIvStaffDict> zyIvStaffDicts = new ArrayList<>();
        //得到list
        zyIvStaffDicts = commonGetOneDict(ZyIvStaffDict.class, dictName);
        //清空表
        if (zyIvStaffDicts != null && zyIvStaffDicts.size() > 0) {
            zyIvStaffDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_staff_dict  ,size:" + zyIvStaffDicts.size());
            zyIvStaffDictDao.save(zyIvStaffDicts);
            logger.info("synchronized zy_iv_staff_dict end");
        }
    }
    public void synchronizeZy_iv_diagnose_class_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_DIAGNOSE_CLASS_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_diagnose_class_dict.getDict()).append(" (class_sub_no,class_code,class_name,upper_class,valid_flag,spell_code,wbzx_code) " );
                        sql.append("values('").append(dict.getString("CLASS_SUB_NO")).append("','");//''类别子序号''
                        sql.append(dict.getString("CLASS_CODE")).append("','");//'类别代码'
                        sql.append(dict.getString("CLASS_NAME")).append("','");//'类别名称'
                        sql.append(dict.getString("UPPER_CLASS")).append("','");//'上级类别'
                        sql.append(dict.getString("VALID_FLAG")).append("','");//'有效标志  0 :无效;1:有效'
                        sql.append(dict.getString("SPELL_CODE")).append("','");//'拼音首码'
                        sql.append(dict.getString("WBZX_CODE")).append("')");//''五笔首码''
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    @Transactional
    private void synchronizeZy_iv_physic_dict() {
        logger.info("synchronized zy_iv_physic_dict start");
        String dictName = this.IV_PHYSIC_DICT;
        List<ZyIvPhysicDict> zyIvPhysicDicts = new ArrayList<>();
        //得到list
        zyIvPhysicDicts = commonGetOneDict(ZyIvPhysicDict.class, dictName);
        if (zyIvPhysicDicts != null && zyIvPhysicDicts.size() > 0) {
            //清空表
            zyIvPhysicDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_physic_dict  ,size:" + zyIvPhysicDicts.size());
            zyIvPhysicDictDao.save(zyIvPhysicDicts);
            logger.info("synchronized zy_iv_physic_dict end");
        }
    }
    public void synchronizeZy_iv_dept_staff_allot_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_DEPT_STAFF_ALLOT_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_dept_staff_allot_dict.getDict()).append(" (org_code,dept_code,staff_code) " );
                        sql.append("values('").append(dict.getString("ORG_CODE")).append("','");//'''机构编码'''
                        sql.append(dict.getString("DEPT_CODE")).append("','");//''科室编码''
                        sql.append(dict.getString("STAFF_CODE")).append("')");//'''员工编码'''
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
    @Transactional
    private void synchronizeZy_iv_org_physic_allot_dict() {
        logger.info("synchronized zy_iv_org_physic_allot_dict start");
        String dictName = this.IV_ORG_PHYSIC_ALLOT_DICT;
        List<ZyIvOrgPhysicAllotDict> zyIvOrgPhysicAllotDicts = new ArrayList<>();
        //得到list
        zyIvOrgPhysicAllotDicts = commonGetOneDict(ZyIvOrgPhysicAllotDict.class, dictName);
        if (zyIvOrgPhysicAllotDicts != null && zyIvOrgPhysicAllotDicts.size() > 0) {
            //清空表
            zyIvOrgPhysicAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_org_physic_allot_dict  ,size:" + zyIvOrgPhysicAllotDicts.size());
            zyIvOrgPhysicAllotDictDao.save(zyIvOrgPhysicAllotDicts);
        }
        logger.info("synchronized zy_iv_org_physic_allot_dict end");
    }
    @Transactional
    private void synchronizeZy_iv_diagnose_class_dict() {
        logger.info("synchronized zy_iv_diagnose_class_dict start");
        String dictName = this.IV_DIAGNOSE_CLASS_DICT;
        List<ZyIvDiagnoseClassDict> zIvDiagnoseClassDicts = new ArrayList<>();
        //得到list
        zIvDiagnoseClassDicts = commonGetOneDict(ZyIvDiagnoseClassDict.class, dictName);
        if (zIvDiagnoseClassDicts != null && zIvDiagnoseClassDicts.size() > 0) {
            //清空表
            zyIvDiagnoseClassDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_diagnose_class_dict  ,size:" + zIvDiagnoseClassDicts.size());
            zyIvDiagnoseClassDictDao.save(zIvDiagnoseClassDicts);
        }
        logger.info("synchronized zy_iv_diagnose_class_dict end");
    }
    @Transactional
    private void synchronizeZy_iv_dept_staff_allot_dict() {
        logger.info("synchronized zy_iv_dept_staff_allot_dict start");
        String dictName = this.IV_DEPT_STAFF_ALLOT_DICT;
        List<ZyIvDeptStaffAllotDict> syIvDeptStaffAllotDictz = new ArrayList<>();
        //得到list
        syIvDeptStaffAllotDictz = commonGetOneDict(ZyIvDeptStaffAllotDict.class, dictName);
        if (syIvDeptStaffAllotDictz != null && syIvDeptStaffAllotDictz.size() > 0) {
            //清空表
            zyIvDeptStaffAllotDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_dept_staff_allot_dict  ,size:" + syIvDeptStaffAllotDictz.size());
            zyIvDeptStaffAllotDictDao.save(syIvDeptStaffAllotDictz);
        }
        logger.info("synchronized zy_iv_dept_staff_allot_dict end");
    }
    public void synchronizeZyCommonDict() {
    @Transactional
    private void synchronizeZyCommonDict() {
        logger.info("synchronized zy_common_dict start");
        String[] dictNames = new String[]{
                this.IV_PHYSIC_FORM_DICT, this.IV_PHYSIC_INJECT_PLACE_DICT, this.IV_PHYSIC_SKIN_TEST_DICT,
                this.IV_RATE_TYPE_DICT, this.IV_RECIPE_FREQUENCY_DICT, this.IV_RECIPE_USAGE_DICT,
                this.IV_SEX_DICT, this.IV_PHYSIC_TOXICOLOGY_TYPE_DICT, this.IV_MEASURE_UNIT_DICT,
                this.IV_DEPT_TYPE_DICT};
        try{
            for (String dictName : dictNames) {
                String re = jwPrescriptionService.getDictForI(dictName);
                JSONObject jsonObject = JSONObject.parseObject(re);
                if(jsonObject.getInteger("status")==200){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if("1".equals(data.getString("CODE"))){
                        JSONArray returnData = data.getJSONArray("returnData");
                        System.out.println("returnData="+returnData.toString());
                        if(returnData.size()==0){
                            continue;
                        }
                        JSONArray dictArray = returnData.getJSONArray(0);
                        for(int i=0;i<dictArray.size();i++){
                            JSONObject dict = dictArray.getJSONObject(i);
                            StringBuffer sql = new StringBuffer("insert into ");
                            sql.append(TableName.zy_common_dict.getDict()).append(" (dict_name,code,name) " );
                            sql.append("values('").append(dict.getString("DICT_NAME")).append("','");
                            sql.append(dict.getString("CODE")).append("','");
                            sql.append(dict.getString("NAME")).append("')");
                            System.out.println("sql="+sql.toString());
                            jdbcTemplate.execute(sql.toString());
                        }
        List<ZyCommonDict> zyCommonDictz = new ArrayList<>();
        Boolean isFlush = true;
        for (String dictName : dictNames) {
            String json = null;
            try {
                //调用智业的接口得到字典
                json = jwPrescriptionService.getDictForI(dictName);
                JSONObject returnJson = JSONObject.fromObject(json);
                if (returnJson.getInt("status") != 200) {
                    throw new Exception("zy dict error status not 200");
                }
                if (returnJson.containsKey("data")) {
                    String dataString = returnJson.getString("data");
                    JSONArray dataJSONArray = JSONObject.fromObject(dataString).getJSONArray("returnData");
                    if (dataJSONArray.size() == 0) {
                        logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                        continue;
                    }
                    //下划线转驼峰
                    JSONArray newJA = new JSONArray();
                    JSONArray jsonArrayTemp = dataJSONArray.getJSONArray(0);
                    logger.info("zy dict data size " + jsonArrayTemp.size() + ",dictname:" + dictName);
                    for (int i = 0; i < jsonArrayTemp.size(); i++) {
                        JSONObject jo = jsonArrayTemp.getJSONObject(i);
                        JSONObject newJO = new JSONObject();
                        jo.keySet().stream().forEach(key -> {
                            Object value = jo.get(key);
                            String newKey = Tool.lineToHump(key.toString());
                            newJO.put(newKey, value);
                        });
                        newJA.add(newJO);
                    }
                    ZyCommonDict[] zyCommonDictArrays = (ZyCommonDict[]) JSONArray.toArray(newJA, ZyCommonDict.class);
                    zyCommonDictz.addAll(Arrays.asList(zyCommonDictArrays));
                } else {
                    throw new Exception("zy dict error no contain data");
                }
            } catch (Exception e) {
                e.printStackTrace();
                isFlush = false; //设置状态不能更新
                logger.error("dictName:" + dictName);
                logger.error("returnJson:" + json);
                logger.error(e.getMessage());
            }
        }
        //判断是否可以更新
        if (isFlush) {
            // 判断返回的数据是否大于0
            if (zyCommonDictz.size() > 0) {
                //清空表
                zyCommonDictDao.deleteAll();
                //新增数据
                logger.info("save table zy_common_dict  ,size:" + zyCommonDictz.size());
                zyCommonDictDao.save(zyCommonDictz);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        logger.info("synchronized zy_common_dict end");
    }
    public void synchronizeZy_iv_dept_dict() {
        try{
            String re = jwPrescriptionService.getDictForI(IV_DEPT_DICT);
            JSONObject jsonObject = JSONObject.parseObject(re);
            if(jsonObject.getInteger("status")==200){
                JSONObject data = jsonObject.getJSONObject("data");
                if("1".equals(data.getString("CODE"))){
                    JSONArray returnData = data.getJSONArray("returnData");
                    System.out.println("returnData="+returnData.toString());
                    if(returnData.size()==0){
                        return;
                    }
                    JSONArray dictArray = returnData.getJSONArray(0);
                    for(int i=0;i<dictArray.size();i++){
                        JSONObject dict = dictArray.getJSONObject(i);
                        StringBuffer sql = new StringBuffer("insert into ");
                        sql.append(TableName.zy_iv_dept_dict.getDict()).append(" (org_code,dept_code,dept_name,dept_type,upper_dept) " );
                        sql.append("values('").append(dict.getString("ORG_CODE")).append("','");//机构编码
                        sql.append(dict.getString("DEPT_CODE")).append("','");//'科室编码
                        sql.append(dict.getString("DEPT_NAME")).append("','");//'科室名称
                        sql.append(dict.getString("DEPT_TYPE")).append("','");//'科室类型  详见科室类型字典中定义
                        sql.append(dict.getString("UPPER_DEPT")).append("')");//'上级科室
                        System.out.println("sql="+sql.toString());
                        jdbcTemplate.execute(sql.toString());
                    }
    @Transactional
    private void synchronizeZy_iv_dept_dict() {
        logger.info("synchronized zy_iv_dept_dict start");
        String dictName = this.IV_DEPT_DICT;
        List<ZyIvDeptDict> zyIvDeptDicts = new ArrayList<>();
        //得到list
        zyIvDeptDicts = commonGetOneDict(ZyIvDeptDict.class, dictName);
        if (zyIvDeptDicts != null && zyIvDeptDicts.size() > 0) {
            //清空表
            zyIvDeptDictDao.deleteAll();
            //新增数据
            logger.info("save table zy_iv_dept_dict  ,size:" + zyIvDeptDicts.size());
            zyIvDeptDictDao.save(zyIvDeptDicts);
        }
        logger.info("synchronized zy_iv_dept_dict end");
    }
    /**
     * 得到单个字典
     *
     * @param clazz    class
     * @param dictName 字典名称
     */
    private List commonGetOneDict(Class clazz, String dictName) {
        String json = null;
        try {
            //调用智业的接口得到字典
            json = jwPrescriptionService.getDictForI(dictName);
            JSONObject returnJson = JSONObject.fromObject(json);
            if (returnJson.getInt("status") != 200) {
                throw new Exception("zy dict error status not 200");
            }
            if (returnJson.containsKey("data")) {
                String dataJSONStr = returnJson.getString("data");
                JSONObject joTemp = JSONObject.fromObject(dataJSONStr);
                JSONArray dataJSONArray = joTemp.getJSONArray("returnData");
                if (dataJSONArray.size() == 0) {
                    logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                    return null;
                } else {
                    dataJSONArray = dataJSONArray.getJSONArray(0);
                }
                logger.info("zy dict data size " + dataJSONArray.size() + ",dictname:" + dictName);
                //下划线转驼峰
                JSONArray newJA = new JSONArray();
                for (int i = 0; i < dataJSONArray.size(); i++) {
                    JSONObject jo = dataJSONArray.getJSONObject(i);
                    JSONObject newJO = new JSONObject();
                    jo.keySet().stream().forEach(key -> {
                        Object value = jo.get(key);
                        String newKey = Tool.lineToHump(key.toString());
                        newJO.put(newKey, value);
                    });
                    newJA.add(newJO);
                }
                return (List) JSONArray.toCollection(newJA, clazz);
            } else {
                throw new Exception("zy dict error no contain data");
            }
        }catch (Exception e){
            e.printStackTrace();
        } catch (Exception e) {
            logger.error("dictName:" + dictName);
            logger.error("returnJson:" + json);
            logger.error(e.getMessage());
        }
        return null;
    }
    /**
@ -371,7 +411,9 @@ public class ZyDictDataService extends BaseService {
    public static final String IV_STAFF_REG_TYPE_ALLOT_DICT = "IV_STAFF_REG_TYPE_ALLOT_DICT";//("员工挂号类型配置字典", "IV_STAFF_REG_TYPE_ALLOT_DICT"),
    public static final String IV_DEPT_STAFF_ALLOT_DICT = "IV_DEPT_STAFF_ALLOT_DICT";//("科室员工配置字典", "IV_DEPT_STAFF_ALLOT_DICT");
    /**
     * 字典表的枚举类
     */
    public enum TableName {
        zy_common_dict("通用字典", "zy_common_dict"),
@ -408,6 +450,7 @@ public class ZyDictDataService extends BaseService {
        public void setDict(String dict) {
            this.dict = dict;
        }
    }
    /**
@ -479,4 +522,45 @@ public class ZyDictDataService extends BaseService {
        }
        return "";
    }
    public static class Tool {
        private static Pattern linePattern = Pattern.compile("_(\\w)");
        /**
         * 下划线转驼峰
         */
        public static String lineToHump(String str) {
            str = str.toLowerCase();
            Matcher matcher = linePattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
        /**
         * 驼峰转下划线(简单写法,效率低于{@link #humpToLine2(String)})
         */
        public static String humpToLine(String str) {
            return str.replaceAll("[A-Z]", "_$0").toLowerCase();
        }
        private static Pattern humpPattern = Pattern.compile("[A-Z]");
        /**
         * 驼峰转下划线,效率比上面高
         */
        public static String humpToLine2(String str) {
            Matcher matcher = humpPattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
    }
}

+ 12 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java

@ -174,5 +174,17 @@ public class JwPrescriptionService {
        return response;
    }
    /**
     * ca认证接口
     * @param code 续方code
     * @return
     */
    public String affirmCARecipe(String code){
        String url = jwUrl + "/third/prescription/affirmCARecipe";
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("code", code));//续方code
        String response = httpClientUtil.post(url, params, "UTF-8");
        return response;
    }
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/consult/ConsultController.java

@ -993,7 +993,7 @@ public class ConsultController extends WeixinBaseController {
            consult.setType(8);//续方咨询
            consult.setAdminTeamId(adminTeamId);
            // 保存到数据库
//            int res = consultTeamService.addPrescriptionConsult(jwCode, "37c0657335f94ed38eeced22dbed8011","37c0657335f94ed38eeced22dbed8011",doctor,consult,reason,type);
//            int res = consultTeamService.addPrescriptionConsult(jwCode, "b02f132bfbfc45d287bcde18ad342522","b02f132bfbfc45d287bcde18ad342522",doctor,consult,reason,type);
            int res = consultTeamService.addPrescriptionConsult(jwCode, getRepUID(),getUID(),doctor,consult,reason,type);
            if (res == -1) {
                return error(-1, "该处方存在未审核的续方,无法进行续方咨询!");

+ 40 - 5
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/ZyDictController.java

@ -1,6 +1,6 @@
package com.yihu.wlyy.web.third;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import com.yihu.wlyy.service.ZyDictDataService;
import com.yihu.wlyy.service.third.jw.ZyDictService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.ApiOperation;
@ -8,9 +8,6 @@ import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/8/10.
 * 智业字典同步接口
@ -20,11 +17,12 @@ import java.util.Map;
public class ZyDictController extends BaseController {
    @Autowired
    private ZyDictService zyDictService;
    @Autowired
    private ZyDictDataService zyDictDataService;
    @ApiOperation("同步智业字典")
    @RequestMapping(value = "/synchronousDict", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ResponseBody
    public String synchronousDict(
            @ApiParam(name = "dictName", value = "字典名称", defaultValue = "")
            @RequestParam(value = "dictName", required = true) String dictName) {
@ -36,4 +34,41 @@ public class ZyDictController extends BaseController {
        }
    }
    @ApiOperation("下载智业所有字典")
    @RequestMapping(value = "/downLoadAllDict", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    public String downLoadAllDict(){
        try {
            zyDictDataService.allDict();
            return write(200, "下载智业所有字典!");
        } catch (Exception e) {
            return invalidUserException(e, -1, "下载智业所有字典");
        }
    }
    /**
     * IV_SUBJECT_CLASS_DICT
     * IV_STAFF_REG_TYPE_ALLOT_DICT
     * IV_STAFF_DICT
     * IV_PHYSIC_DICT
     * IV_ORG_PHYSIC_ALLOT_DICT
     * IV_DIAGNOSE_CLASS_DICT
     * IV_DEPT_STAFF_ALLOT_DICT
     * "commonDict"
     * IV_DEPT_DICT
     * @param dictName
     * @return
     */
    @ApiOperation("下载智业字典")
    @RequestMapping(value = "/downLoadDict", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    public String downLoadDict(@ApiParam(name = "dictName", value = "字典名称", defaultValue = "commonDict")
                               @RequestParam(value = "dictName", required = true) String dictName){
        try {
            zyDictDataService.dictByDictName(dictName);
            return write(200, "下载智业所有字典!");
        } catch (Exception e) {
            return invalidUserException(e, -1, "下载智业所有字典");
        }
    }
}