Explorar el Código

扫医保凭证、预交金充值成功通知

bing hace 2 años
padre
commit
84fb31d630

+ 28 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/a4endpoint/MedicineOrderDrugsEndpoint.java

@ -41,6 +41,28 @@ public class MedicineOrderDrugsEndpoint extends EnvelopRestEndpoint {
        return failed(map.get("failed").toString());
    }
    @GetMapping("/open/readCardInfo")
    @ApiOperation(value = "封装读卡参数,患者用医保凭证是改接口与getSettlementInfoList前调用", notes = "封装读卡参数")
    public Envelop readCardInfo(
            @ApiParam(name = "orgCode", value = "orgCode")
            @RequestParam(value = "orgCode", required = true) String orgCode,
            @ApiParam(name = "mdtrt_cert_type", value = "凭证类型01扫医保凭证02身份证03医保卡")
            @RequestParam(value = "mdtrt_cert_type", defaultValue = "01",required = false) String mdtrt_cert_type,
            @ApiParam(name = "cardNo", value = "卡识别码")
            @RequestParam(value = "cardNo", required = false) String cardNo,
            @ApiParam(name = "card_sn", value = "卡识别码")
            @RequestParam(value = "card_sn", required = false) String card_sn,
            @ApiParam(name = "idcard", value = "身份证")
            @RequestParam(value = "idcard", required = false) String idcard){
        try {
            return success("操作成功", medOrderService.readCardInfo(orgCode,cardNo,card_sn,mdtrt_cert_type,idcard));
        } catch (Exception e) {
            e.printStackTrace();
            return Envelop.getError(e.getMessage());
        }
    }
    @GetMapping("/open/getSettlementInfoList")
    @ApiOperation(value = "获取患者待结算信息", notes = "获取患者待结算信息")
    public Envelop getSettlementInfoList(
@ -62,11 +84,15 @@ public class MedicineOrderDrugsEndpoint extends EnvelopRestEndpoint {
    public Envelop getSettlementInfoFirst(
            @ApiParam(name = "recipe_no", value = "recipe_no")
            @RequestParam(value = "recipe_no", required = true) String recipe_no,
            @ApiParam(name = "mdtrt_cert_type", value = "凭证类型01扫医保凭证02身份证03医保卡")
            @RequestParam(value = "mdtrt_cert_type", defaultValue = "03",required = false) String mdtrt_cert_type,
            @ApiParam(name = "card_sn", value = "卡识别码")
            @RequestParam(value = "card_sn", required = false) String card_sn){
            @RequestParam(value = "card_sn", required = false) String card_sn,
            @ApiParam(name = "idcard", value = "身份证")
            @RequestParam(value = "idcard", required = false) String idcard){
        try {
            return success("操作成功", medOrderService.getSettlementInfoFirst(recipe_no,card_sn));
            return success("操作成功", medOrderService.getSettlementInfoFirst(recipe_no,card_sn,mdtrt_cert_type,idcard));
        } catch (Exception e) {
           e.printStackTrace();
            return Envelop.getError(e.getMessage());

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/JwService.java

@ -155,7 +155,7 @@ public class JwService {
        JSONArray insurVisitInfo = new JSONArray();
        JSONArray insurResult = new JSONArray(); //自费病人没有产生医保收费记录,insurResult节点不传自费结算信息
        msgBody.put("cardNo",ylzMedicalRelationDO.getCardNo());//病人卡号
        msgBody.put("settleDept",ylzMedicalRelationDO.getDeptCode());//结算科室编码
        msgBody.put("settleDept",ylzMedicalRelationDO.getHisDeptCode());//结算科室编码
        msgBody.put("settleOperator",ylzMedicalRelationDO.getCollector());//结算人员编码
        msgBody.put("visitNo","");//结算人员编码

+ 110 - 20
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/MedOrderService.java

@ -171,6 +171,78 @@ public class MedOrderService {
        return null;
    }
    public JSONObject readCardInfo(String orgCode,String cardNo ,String card_sn,String mdtrt_cert_type,String idcard) throws Exception {
        JSONObject result = new JSONObject();
        String sql = " select dp.* from t_mediicine_device de INNER JOIN t_mediicine_device_param dp on de.id = dp.device_id  " +
                "where de.del=1 and dp.del=1 and de.belong_community='"+orgCode+"' ";
        List<Map<String,Object>> deviceParams =  jdbcTemplate.queryForList(sql);
        if (deviceParams.size()==0){
            throw new Exception("药柜参数获取错误");
        }
        Map<String,Object> deviceParam = deviceParams.get(0);
        JSONObject strinObj = JSONObject.parseObject(deviceParam.get("yb_strin").toString());
        JSONObject netData = new JSONObject();
        netData.put("opter","010XXX");
        netData.put("msgid",strinObj.getString("outBizNo")+ DateUtil.getYyyymmddhhmmss(new Date()));
        netData.put("opmsgidter","123123");
        netData.put("fixmedins_code",strinObj.getString("outBizNo"));
        netData.put("opter_name","XX");
        netData.put("infver","V1.0");
        netData.put("opter_type","1");
        netData.put("mdtrtarea_admvs","350200");
        netData.put("fixmedins_name","XX");
        netData.put("signtype","SM2");
        netData.put("recer_sys_code","0");
        netData.put("dev_no",strinObj.getString("serialNo"));
        JSONObject input = new JSONObject();
        JSONObject inputDetail = new JSONObject();
        JSONObject dataDetail = new JSONObject();
        inputDetail.put("mdtrt_cert_type",mdtrt_cert_type);
        if ("01".equals(mdtrt_cert_type)){
        }else if ("02".equals(mdtrt_cert_type)){
            inputDetail.put("mdtrt_cert_no",idcard);
        }
        else if ("03".equals(mdtrt_cert_type)){//社保卡时需要传入卡识别码
            inputDetail.put("mdtrt_cert_no",cardNo);
            if (StringUtils.isNotBlank(card_sn)){
                inputDetail.put("card_sn",card_sn);
            }else{
                sql = " select dict_code,dict_value from wlyy_hospital_sys_dict where dict_name='ylz_card_sn' ";
                List<Map<String,Object>> AnalogFlags = jdbcTemplate.queryForList(sql);
                String AnalogFlag = "0";
                inputDetail.put("mdtrt_cert_no",cardNo);
                if (AnalogFlags.size()>0){
                    AnalogFlag = AnalogFlags.get(0).get("dict_code").toString();
                }
                if ("1".equals(AnalogFlag)) {//获取调式模拟数据
                    card_sn = AnalogFlags.get(0).get("dict_value").toString();
                    inputDetail.put("card_sn",card_sn);
                }else {
                    throw new Exception("卡识别码未传入");
                }
            }
        }
        input.put("data",inputDetail);
        dataDetail.put("input",input);
        dataDetail.put("net_data",netData);
        strinObj.put("func","fsi.terminal.readcard");
        strinObj.put("data",dataDetail);
        result.put("readcardParam",strinObj.toJSONString());
        WlyyHttpLogDO logDO = new WlyyHttpLogDO();
        logDO.setCode("fsi.terminal.readcard");
        logDO.setName("药柜医保读卡请求参数");
        logDO.setPatient(inputDetail.getString("mdtrt_cert_no"));
        logDO.setRequest(strinObj.toJSONString());
        logDO.setResponse(null);
        logDO.setCreateTime(new Date());
        httpLogDao.save(logDO);
        return result;
    }
    /**
     * 获取患者待结算信息
     * 医保个人信息、挂号接口封装
@ -220,7 +292,7 @@ public class MedOrderService {
     * @throws Exception
     */
    @Transactional(rollbackFor = Exception.class)
    public com.alibaba.fastjson.JSONArray getSettlementInfoFirst(String recipe_no,String card_sn) throws Exception {
    public com.alibaba.fastjson.JSONArray getSettlementInfoFirst(String recipe_no,String card_sn,String mdtrt_cert_type,String idcard) throws Exception {
        JSONArray result = new JSONArray();
        YlzMedicalRelationDO ylzMedicalRelationDO = ylzMedicailRelationDao.findByLog_no(recipe_no);
        if (null==ylzMedicalRelationDO){
@ -279,25 +351,37 @@ public class MedOrderService {
        JSONObject input = new JSONObject();
        JSONObject inputDetail = new JSONObject();
        JSONObject dataDetail = new JSONObject();
        inputDetail.put("mdtrt_cert_type","03");
        inputDetail.put("mdtrt_cert_no",cardNo);
        if (StringUtils.isNotBlank(card_sn)){
            inputDetail.put("card_sn",card_sn);
        }else {
            sql = " select dict_code,dict_value from wlyy_hospital_sys_dict where dict_name='ylz_card_sn' ";
            List<Map<String,Object>> AnalogFlags = jdbcTemplate.queryForList(sql);
            String AnalogFlag = "0";
            if (AnalogFlags.size()>0){
                AnalogFlag = AnalogFlags.get(0).get("dict_code").toString();
            }
            if ("1".equals(AnalogFlag)) {//获取调式模拟数据
                card_sn = AnalogFlags.get(0).get("dict_value").toString();
        inputDetail.put("mdtrt_cert_type",mdtrt_cert_type);
        if ("01".equals(mdtrt_cert_type)){
        }else if ("02".equals(mdtrt_cert_type)){
            inputDetail.put("mdtrt_cert_no",idcard);
        }
        else if ("03".equals(mdtrt_cert_type)){//社保卡时需要传入卡识别码
            inputDetail.put("mdtrt_cert_no",cardNo);
            if (StringUtils.isNotBlank(card_sn)){
                inputDetail.put("card_sn",card_sn);
            }else {
                throw new Exception("卡识别码未传入");
            }else{
                sql = " select dict_code,dict_value from wlyy_hospital_sys_dict where dict_name='ylz_card_sn' ";
                List<Map<String,Object>> AnalogFlags = jdbcTemplate.queryForList(sql);
                String AnalogFlag = "0";
                inputDetail.put("mdtrt_cert_no",cardNo);
                if (AnalogFlags.size()>0){
                    AnalogFlag = AnalogFlags.get(0).get("dict_code").toString();
                }
                if ("1".equals(AnalogFlag)) {//获取调式模拟数据
                    card_sn = AnalogFlags.get(0).get("dict_value").toString();
                    inputDetail.put("card_sn",card_sn);
                }else {
                    throw new Exception("卡识别码未传入");
                }
            }
        }
        ylzMedicalRelationDO.setCardSn(card_sn);
        if (StringUtils.isNotBlank(card_sn)){
            ylzMedicalRelationDO.setCardSn(card_sn);
        }if (StringUtils.isNotBlank(idcard)){
            ylzMedicalRelationDO.setIdcard(idcard);
        }
        ylzMedicailRelationDao.save(ylzMedicalRelationDO);
        input.put("data",inputDetail);
        dataDetail.put("input",input);
@ -331,8 +415,14 @@ public class MedOrderService {
               inputDetail.put("psn_no","");//人员编码  前端封装
               inputDetail.put("insutype","310");
               inputDetail.put("begntime",DateUtil.dateToStrLong(ylzMedicalRelationDO.getDate()));
               inputDetail.put("mdtrt_cert_type","03");
               inputDetail.put("mdtrt_cert_no",cardNo);
               if ("02".equals(mdtrt_cert_type)){
                   inputDetail.put("mdtrt_cert_no",idcard);
               }
               else{
                   inputDetail.put("mdtrt_cert_no",cardNo);
               }
               inputDetail.put("mdtrt_cert_type",mdtrt_cert_type);
               inputDetail.put("ipt_otp_no",ylzMedicalRelationDO.getRelationCode());
               inputDetail.put("atddr_no",ylzMedicalRelationDO.getAtddrNo());
               inputDetail.put("dr_name",ylzMedicalRelationDO.getDrName());
@ -1177,7 +1267,7 @@ public class MedOrderService {
     */
    public List<Map<String,Object>> getYjjChargeList(String cardNo,String startTime,String endTime) throws Exception {
        List<Map<String,Object>> list = new ArrayList<>();
        String sql = "select *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time from base_ylz_medical_recharge where ssc='"+cardNo+"' and charge_result<>'ing' ";
        String sql = "select *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time from base_ylz_medical_recharge where ssc='"+cardNo+"' ";
        if (StringUtils.isNotBlank(startTime)){
            sql +=" and create_time>='"+startTime+" 00:00:00' ";
        }

+ 9 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/YlzService.java

@ -52,6 +52,8 @@ public class YlzService {
    MedOrderService medOrderService;
    @Autowired
    HospitalDao hospitalDao;
    @Autowired
    MedicineServive medicineServive;
    private final String entranceUrl="http://10.90.32.3:22174/cityihealth/base/";
@ -360,6 +362,13 @@ public class YlzService {
                    if ("exp".equals(result)){
                    }else {
                        /**
                         * 支付状态确认 通知药柜结算状态是什么情况
                         */
                        JSONObject chargeNotice = new JSONObject();
                        chargeNotice.put("result",result);
                        chargeNotice.put("resultName",resultName);
                        medicineServive.sendSocketMessage(ylzMedicalRecharge.getEquNum()+"_T","medical_recharge",chargeNotice.toJSONString());
                        ylzMedicalRecharge.setChargeResult(result);
                        ylzMedicalRecharge.setChargeResultName(resultName);
                        ylzMedicalRechargeDao.save(ylzMedicalRecharge);

+ 37 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/YJJChargeResultOverTimeJob.java

@ -0,0 +1,37 @@
package com.yihu.jw.job;
import com.yihu.jw.util.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
/**
 * 药柜预交金充值超时job
 */
public class YJJChargeResultOverTimeJob implements Job {
    private static final Logger logger = LoggerFactory.getLogger(YJJChargeResultOverTimeJob.class);
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        logger.info("START========YJJChargeResultOverTimeJob========");
        try {
            String nowTime = DateUtil.getStringDate();
            String prTime = DateUtil.getPreTime(nowTime,"-5");
            String sql = " update base_ylz_medical_recharge set charge_result='overTime',charge_result_name='支付超时' where charge_result='ing' and  create_time<='"+prTime+"' ";
            jdbcTemplate.execute(sql);
            logger.info("END========YJJChargeResultOverTimeJob========");
        }catch (Exception e) {
            e.printStackTrace();
            logger.info("END========YJJChargeResultOverTimeJob ERROR: " + e.getMessage());
        }
    }
}

+ 24 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/web/quota/JobController.java

@ -281,6 +281,15 @@ public class JobController extends BaseController {
                    } else {
                        logger.info("data_ykupload_job_2  job exist");
                    }
                case "YJJChargeResultOverTimeJob" :
                    //互联网医院 监管平台上报
                    if (!quartzHelper.isExistJob("YJJChargeResultOverTimeJob")) {
                        String trigger = SystemConf.getInstance().getSystemProperties().getProperty("YJJChargeResultOverTimeJob");
                        quartzHelper.addJob(YJJChargeResultOverTimeJob.class, trigger, "YJJChargeResultOverTimeJob", new HashMap<String, Object>());
                        logger.info("YJJChargeResultOverTimeJob  job success");
                    } else {
                        logger.info("YJJChargeResultOverTimeJob  job exist");
                    }
                    break;
                default :
@ -900,4 +909,19 @@ public class JobController extends BaseController {
        }
    }
    @RequestMapping(value = "/testNow", method = RequestMethod.POST)
    @ApiOperation("立即执行")
    public String executeSignFamilyPayResultJob(String className) {
        try {
            String uuid = getUID();
            Class c1 = Class.forName(className);//com.yihu.jw.care.job.consult.FinishConsultJob
            quartzHelper.startNow(c1, uuid, null);
            quartzHelper.removeJob(uuid);
            return write(200, "启动成功");
        } catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 2 - 0
svr/svr-internet-hospital-job/src/main/resources/system.properties

@ -33,4 +33,6 @@ syn_physic_storage = 0 0 4 * * ? *
medicine_order_status=0 * * * * ? *
YJJChargeResultOverTimeJob=0 0/5 * * * ? *