Browse Source

Merge branch 'dev' of huangzhanpeng/wlyy_management into dev

trick9191 7 years ago
parent
commit
6505a20679

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

@ -225,6 +225,20 @@ public class PrescriptionController extends BaseController{
		}
	}
	@RequestMapping(value = "IsApplied",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("判断是否有实名证书")
	public Result isApplied(@ApiParam(name="strUserIdcardNum",value="用户身份证号") @RequestParam String strUserIdcardNum)
	{
		try {
			String re = caService.isApplied(strUserIdcardNum);
			return Result.success("判断是否有实名证书成功!",re);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	@RequestMapping(value = "GetRealNameSoftCertExpiredDatetime",method = RequestMethod.POST)
	@ResponseBody

+ 160 - 24
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionCAService.java

@ -2,6 +2,7 @@ package com.yihu.wlyy.service.service.prescription;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.service.common.SystemConfig;
import com.yihu.wlyy.service.common.util.MD5Util;
import com.yihu.wlyy.service.common.util.StringUtil;
import com.yihu.wlyy.service.common.util.WebserviceUtil;
import com.yihu.wlyy.service.service.LogService;
@ -19,6 +20,7 @@ import java.util.Map;
@Service
public class PrescriptionCAService {
    private String IS_APPLIED="XMCAF_SOFT_judgeRealNameSoftCertIsApplied"; //判断实名软证书是否已申请
    private String REQUEST_SIGN = "XMCAF_SOFT_requestRealNameSoftCertAndSign";//请求实名软证书并进行数字签名
    private String EXPIRED_DATETIME = "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime"; //获取实名软证书的过期时间
    private String MODIFY_PASSWD = "XMCAF_SOFT_ModifyRealNameSoftCertCalledPasswd"; //修改实名软证书调用保护口令
@ -26,12 +28,106 @@ public class PrescriptionCAService {
    private String caUrl = SystemConfig.getInstance().getCAUrl();
    private String caNamespace = SystemConfig.getInstance().getCANamespace();
    private String unifiedCallInterface = "XMCA6_UnifiedCallInterface";
    @Autowired
    private LogService logService;
    @Autowired
    private ObjectMapper objectMapper;
    private String getHeaderXml(String api)
    {
        return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
            "<root>\n" +
            "   <serverName>"+api+"</serverName>\n" +
            "   <format>xml</format>\n" +
            "   <callOperator></callOperator>\n" +
            "   <certificate></certificate>\n" +
            "   <srcIP>10.95.22.10</srcIP >\n" +
            "   <srcUserMac>60-D8-19-57-66-E3</srcUserMac>\n" +
            "   <srcSystemCode>1</srcSystemCode>\n" +
            "   <srcSystemName>厦门i健康</srcSystemName>\n" +
            "   <srcBusinessNodeCode>node01</srcBusinessNodeCode>\n" +
            "   <srcBusinessNodeName>审核</srcBusinessNodeName>\n" +
            "   <srcOperatorAccount>Zhuangsd</srcOperatorAccount>\n" +
            "   <srcBusinessStreamNO>11111</srcBusinessStreamNO>\n" +
            "   <srcDataExtProperty></srcDataExtProperty>\n" +
            "</root>";
    }
    /**
     * CA认证服务二次封装
     */
    private String postCAServer(String urlString,String namespace,String api, Map<String,String> params) throws Exception
    {
        String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                         "<root>\n";
        if(params!=null && params.size()>0)
        {
            for(String key : params.keySet())
            {
                msgBody += "    <"+key+">"+params.get(key)+"</"+key+">\n";
            }
        }
        msgBody += "</root>";
        String msgHeader = getHeaderXml(api);
        Map<String,String> p = new HashMap<>();
        p.put("msgHeader",msgHeader);
        p.put("msgBody",msgBody);
        return WebserviceUtil.post(urlString,namespace,unifiedCallInterface,p);
    }
    /**
     * 判断是否有实名证书
     **/
    public String isApplied(String strUserIdcardNum)  throws Exception
    {
        Boolean isSuccess = true;
        String re = "";
        String body = "";
        String error = "";
        String action = IS_APPLIED;
        try {
            Map<String,String> params = new HashMap<>();
            params.put("strUserIdcardNum",strUserIdcardNum);
            body = objectMapper.writeValueAsString(params);
            re = postCAServer(caUrl, caNamespace, action, params);
            if(StringUtil.isEmpty(re))
            {
                throw new Exception("返回为空!");
            }
            else{
                if(re.startsWith("error"))
                {
                    throw new Exception(re);
                }
            }
        }
        catch (Exception ex)
        {
            isSuccess = false;
            ex.printStackTrace();
            error = ex.getMessage();
        }
        //保存http日志
        logService.saveHttpLog(isSuccess,action,"判断是否有实名证书","POST",null,body,re,error,logService.caType);
        if(!StringUtil.isEmpty(error))
        {
            throw new Exception(error);
        }
        return re;
    }
    /**
     * 请求实名软证书并进行数字签名
     **/
@ -51,7 +147,7 @@ public class PrescriptionCAService {
            body = objectMapper.writeValueAsString(params);
            re = WebserviceUtil.post(caUrl,caNamespace,action, params);
            re = postCAServer(caUrl,caNamespace,action, params);
            if(StringUtil.isEmpty(re))
            {
@ -99,7 +195,7 @@ public class PrescriptionCAService {
            params.put("strUserIdcardNum",strUserIdcardNum);
            body = objectMapper.writeValueAsString(params);
            re = WebserviceUtil.post(caUrl,caNamespace,action, params);
            re = postCAServer(caUrl, caNamespace, action, params);
            if(StringUtil.isEmpty(re))
            {
@ -146,7 +242,7 @@ public class PrescriptionCAService {
            params.put("strNewCalledPasswd",strNewCalledPasswd);
            body = objectMapper.writeValueAsString(params);
            re = WebserviceUtil.post(caUrl,caNamespace,action, params);
            re = postCAServer(caUrl, caNamespace, action, params);
            if(StringUtil.isEmpty(re))
            {
@ -177,7 +273,6 @@ public class PrescriptionCAService {
        return re;
    }
    /**
     * 验证签名(带多服务器负载均衡)
     **/
@ -195,7 +290,7 @@ public class PrescriptionCAService {
            params.put("strOriginalData",strOriginalData);
            body = objectMapper.writeValueAsString(params);
            re = WebserviceUtil.post(caUrl,caNamespace,action, params);
            re = postCAServer(caUrl,caNamespace,action, params);
            if(StringUtil.isEmpty(re))
            {
@ -226,34 +321,75 @@ public class PrescriptionCAService {
        return re;
    }
    /*public static void main(String args[]) {
    public static void main(String args[]) {
        try {
            String caUrl = SystemConfig.getInstance().getCAUrl();
            String caNamespace = SystemConfig.getInstance().getCANamespace();
            /*//获取实名软证书的过期时间
            String api = "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime";
            String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<root>\n"+
                    "    <strUserIdcardNum>123456</strUserIdcardNum>\n" +
                    "</root>";*/
            /*//判断实名软证书是否已申请
            String api = "XMCAF_SOFT_judgeRealNameSoftCertIsApplied";
            String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<root>\n"+
                    "    <strUserIdcardNum>123456</strUserIdcardNum>\n" +
                    "</root>";*/
            //修改实名软证书调用保护口令
            String api = "XMCAF_SOFT_ModifyRealNameSoftCertCalledPasswd";
            String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<root>\n"+
                    "    <strUserIdcardNum>123456</strUserIdcardNum>\n" +
                    "   <strOldCalledPasswd>12345678</strOldCalledPasswd>\n" +
                    "   <strNewCalledPasswd>11111111</strNewCalledPasswd>\n" +
                    "</root>";
            //请求实名软证书并进行数字签名
            /*String orgData = "测试数据";
            String api = "XMCAF_SOFT_requestRealNameSoftCertAndSign";
            String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<root>\n"+
                    "   <strUserIdcardNum>123456</strUserIdcardNum>\n" +
                    "   <strRealNameSoftCertCalledPasswd>11111111</strRealNameSoftCertCalledPasswd>\n" +
                    "   <strOriginalData>"+ MD5Util.GetMD5Code(orgData)+"</strOriginalData>\n" +
                    "</root>";*/
            String msgHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                    "<root>\n" +
                    "   <serverName>"+api+"</serverName>\n" +
                    "   <format>xml</format>\n" +
                    "   <callOperator></callOperator>\n" +
                    "   <certificate></certificate>\n" +
                    "   <srcIP>10.95.22.10</srcIP >\n" +
                    "   <srcUserMac>60-D8-19-57-66-E3</srcUserMac>\n" +
                    "   <srcSystemCode>1</srcSystemCode>\n" +
                    "   <srcSystemName>厦门i健康</srcSystemName>\n" +
                    "   <srcBusinessNodeCode>node01</srcBusinessNodeCode>\n" +
                    "   <srcBusinessNodeName>审核</srcBusinessNodeName>\n" +
                    "   <srcOperatorAccount>Zhuangsd</srcOperatorAccount>\n" +
                    "   <srcBusinessStreamNO>11111</srcBusinessStreamNO>\n" +
                    "   <srcDataExtProperty></srcDataExtProperty>\n" +
                    "</root>";
            Map<String, String> params = new HashMap<>();
            params.put("strUserIdcardNum", "123456");
            params.put("strRealNameSoftCertCalledPasswd","11111111");
            params.put("strOriginalData","测试");
            params.put("srcBusinessStreamNO", "1");
            System.out.print("请求实名软证书并进行数字签名:" + WebserviceUtil.post(caUrl, caNamespace, "XMCAF_SOFT_requestRealNameSoftCertAndSign", params) + "\r\n");
*//*
            Map<String, String> params2 = new HashMap<>();
            params2.put("strUserIdcardNum", "123456");
            System.out.print("获取实名软证书的过期时间:" + WebserviceUtil.post(caUrl, caNamespace, "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime", params2) + "\r\n");
*//*
            *//*Map<String, String> params3 = new HashMap<>();
            params3.put("strSignData", "123456");
            params3.put("strCertData", "123456");
            params3.put("strOriginalData", "123456");
            System.out.print("验证签名:"+WebserviceUtil.post(caUrl, caNamespace, "XMCA3_JMSVR_verifySignOnMultiServer", params3)+"\r\n");
*//*
            params.put("msgBody", msgBody);
            params.put("msgHeader", msgHeader);
            System.out.print(WebserviceUtil.post(caUrl, caNamespace, "XMCA6_UnifiedCallInterface", params) + "\r\n");
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }*/
    }
}

+ 35 - 4
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/controller/SignController.java

@ -2,6 +2,7 @@ package com.yihu.wlyy.sign.controller;
import com.yihu.wlyy.sign.common.model.Result;
import com.yihu.wlyy.sign.common.util.DateUtil;
import com.yihu.wlyy.sign.service.LogService;
import com.yihu.wlyy.sign.service.SignZYService;
import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
@ -26,6 +27,9 @@ public class SignController {
	@Autowired
	private SignZYService signZYService;
	@Autowired
	private LogService logService;
	/******************************* 签约接口 ********************************************************/
	@RequestMapping(value = "CheckSignFamily",method = RequestMethod.POST)
@ -136,7 +140,9 @@ public class SignController {
			@RequestParam(value="end_time",required = true) String endTime){
		try {
			signZYService.loadSignFamilyBatch(startTime,endTime);
			signZYService.loadNewSignFamilyBatch(startTime,endTime);
			signZYService.loadNewSignFamilyBatch(startTime, endTime);
			logService.saveSignFamilyLog("0",true,"更新所有机构签约 startTime:"+startTime +" endTime:"+endTime,"");
			return Result.success("更新所有机构签约成功!");
		} catch (Exception ex) {
			if(ex instanceof ApiException)
@ -163,6 +169,7 @@ public class SignController {
		try {
			String re = signZYService.loadOrgSignFamily(startTime,endTime,hospital);
			logService.saveSignFamilyLog("0",true,"更新所有机构"+hospital+"签约 startTime:"+startTime +" endTime:"+endTime,re);
			return Result.success(re);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
@ -308,10 +315,16 @@ public class SignController {
	@RequestMapping(value = "clearExpensesStatus",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("清洗扣费状态【临时】")
	public Result clearExpensesStatus(@RequestParam Integer page) {
	public Result clearExpensesStatus(@RequestParam Integer page,@RequestParam Integer size) {
		try {
			signZYService.clearExpensesStatus(page);
			int min = page*10;
			int max = (page+1)*10;
			for(int i=max-1;i>=min;i--)
			{
				System.out.print("start clearExpensesStatus ,page:"+i+" size:"+size);
				signZYService.clearExpensesStatus(i, size);
				logService.saveSignFamilyLog("0", true, "清洗扣费状态,page:"+i+" size:"+size, "");
			}
			return Result.success("清洗扣费状态完成!");
		} catch (Exception ex) {
			if(ex instanceof ApiException)
@ -326,5 +339,23 @@ public class SignController {
	}
	@RequestMapping(value = "clearReCharge",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("重采退费【临时】")
	public Result clearReCharge() {
		try {
			signZYService.clearReCharge();
			return Result.success("重采退费完成!");
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
}

+ 6 - 0
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/dao/SignFamilyDao.java

@ -74,4 +74,10 @@ public interface SignFamilyDao extends PagingAndSortingRepository<SignFamily, Lo
	 */
	@Query("select a from SignFamily a where a.status>0 and a.expensesStatus='0' and a.signYear='2017'")
	List<SignFamily> findNoExpenses(Pageable pageable);
	/**
	 * 【临时】退费
	 */
	@Query("select a from SignFamily a where a.status>0 and a.expensesStatus='3' and a.signYear='2017'")
	List<SignFamily> findReCharge();
}

+ 15 - 12
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/service/LogService.java

@ -96,19 +96,22 @@ public class LogService {
    {
        try
        {
            SignFamilyLog obj = new SignFamilyLog();
            obj.setAction(action);
            obj.setContent(content);
            obj.setCreateTime(new Date());
            obj.setError(msg);
            if (!isSuccess) {
                obj.setStatus("0");
            } else {
                obj.setStatus("1");
            //成功日志是否保存
            Boolean saveSuccessLog = systemDictService.getSaveSuccessLog();
            if(!isSuccess || saveSuccessLog || action.equals("0")) {
                SignFamilyLog obj = new SignFamilyLog();
                obj.setAction(action);
                obj.setContent(content);
                obj.setCreateTime(new Date());
                obj.setError(msg);
                if(!isSuccess) {
                    obj.setStatus("0");
                }
                else {
                    obj.setStatus("1");
                }
                signFamilyLogDao.save(obj);
            }
            signFamilyLogDao.save(obj);
        }
        catch (Exception ex)
        {

+ 43 - 3
patient-co-service/wlyy_sign/src/main/java/com/yihu/wlyy/sign/service/SignZYService.java

@ -1804,10 +1804,10 @@ public class SignZYService {
    /**
     * 清洗扣费状态【临时】
     */
    public void clearExpensesStatus(int page) throws Exception
    public void clearExpensesStatus(int page,int size) throws Exception
    {
        Sort sort = new Sort(Sort.Direction.DESC, "signSource");
        PageRequest pageRequest = new PageRequest(page, 10000,sort);
        PageRequest pageRequest = new PageRequest(page, size,sort);
        //获取未扣费签约
        List<SignFamily> list = signFamilyDao.findNoExpenses(pageRequest);
        if(list!=null && list.size()>0)
@ -1816,15 +1816,55 @@ public class SignZYService {
            {
                try {
                    String idcard = sign.getIdcard();
                    loadSignFamilyByIdcard(idcard);
                    String[] hm = getHospitalMapping(null);      //获取机构映射
                    //获取数据
                    String responseSign = zysoftService.getSickCurrnetFamilySignInfo(idcard, hm[0], hm[1]);
                    System.out.print(responseSign);
                    Map<String,String> signInfo = zysoftService.getJwOne(responseSign);
                    if(signInfo!=null && !StringUtil.isEmpty(signInfo.get("CHARGE_TIME")))
                    {
                        loadSignFamilyByIdcard(idcard);
                        System.out.print("idcard:" + idcard + " had charged!\r\n");
                    }
                    else{
                        sign.setExpensesStatus("6");
                        signFamilyDao.save(sign);
                    }
                }
                catch (Exception ex)
                {
                    System.out.print("idcard faild!" +  ex.getCause());
                    ex.printStackTrace();
                }
            }
        }
    }
    /**
     * 重采退费【临时】
     */
    public void clearReCharge() throws Exception
    {
        //获取退费签约
        List<SignFamily> list = signFamilyDao.findReCharge();
        if(list!=null && list.size()>0)
        {
            System.out.print("clearReCharge num:"+list.size()+"\r\n");
            for(SignFamily sign :list)
            {
                try {
                    String idcard = sign.getIdcard();
                    loadSignFamilyByIdcard(idcard);
                }
                catch (Exception ex)
                {
                    ex.printStackTrace();
                }
            }
        }
    }
}