Bläddra i källkod

续方基卫线下缴费

wujunjie 7 år sedan
förälder
incheckning
4e2a7c05ba

+ 1 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionPay.java

@ -17,7 +17,7 @@ public class PrescriptionPay extends IdEntity {
    private String code;//接入应用业务流水号outChargeNo
    private String prescriptionCode;//开处方的医生code 关联 wlyy_prescription
    private Integer type;//1 医保支付
    private Integer type;//1 医保支付 2基卫线下支付
    private Date outChargeTime;//接入应用时间
    private String channel;//支付方式
    private String chargeNo;//支付平台流水号

+ 1 - 1
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/prescription/PrescriptionPay.java

@ -17,7 +17,7 @@ public class PrescriptionPay extends IdEntity {
	
	private String code;//接入应用业务流水号outChargeNo
	private String prescriptionCode;//开处方的医生code 关联 wlyy_prescription
	private Integer type;//1 医保支付
	private Integer type;//1 医保支付 2基卫线下支付
	private Date outChargeTime;//接入应用时间
	private String channel;//支付方式
	private String chargeNo;//支付平台流水号

+ 48 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/prescription/PrescriptionPay.java

@ -17,7 +17,7 @@ public class PrescriptionPay extends IdEntity {
    private String code;//接入应用业务流水号outChargeNo
    private String prescriptionCode;//开处方的医生code 关联 wlyy_prescription
    private Integer type;//1 医保支付
    private Integer type;//1 医保支付 2基卫线下支付
    private Date outChargeTime;//接入应用时间
    private String channel;//支付方式
    private String chargeNo;//支付平台流水号
@ -58,6 +58,53 @@ public class PrescriptionPay extends IdEntity {
    private String mxlist;//处方明细
    private Date createTime;//续方确认支付时间
    private Date czrq;//续方记录最后操作时间
    //    易联众新增查询返回字段v1.3.7
    private String medOrgNo;//医疗机构编号
    private String medOrgName;//医疗机构名称
    private Date traceTime;//交易成功时间
    private String traceNo;//支付平台跟踪号
    private String principalCardNo;//实际签约卡号
    public String getMedOrgNo() {
        return medOrgNo;
    }
    public void setMedOrgNo(String medOrgNo) {
        this.medOrgNo = medOrgNo;
    }
    public String getMedOrgName() {
        return medOrgName;
    }
    public void setMedOrgName(String medOrgName) {
        this.medOrgName = medOrgName;
    }
    public Date getTraceTime() {
        return traceTime;
    }
    public void setTraceTime(Date traceTime) {
        this.traceTime = traceTime;
    }
    public String getTraceNo() {
        return traceNo;
    }
    public void setTraceNo(String traceNo) {
        this.traceNo = traceNo;
    }
    public String getPrincipalCardNo() {
        return principalCardNo;
    }
    public void setPrincipalCardNo(String principalCardNo) {
        this.principalCardNo = principalCardNo;
    }
    public Integer getAccountBalance() {
        return accountBalance;

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

@ -28,6 +28,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -1243,23 +1244,79 @@ public class PrescriptionService extends ZysoftBaseService{
        String errMsg = null;
        try{
            JSONObject json = JSONObject.parseObject(data);
            Integer code = json.getInteger("CODE");
            Integer code = json.getInteger("code");
            if(code==1){
                String orderNo = json.getString("ORDER_NO");//挂号编号
                String recipeNo = json.getString("RECIPE_NO");//处方编号
                String orderNo = json.getString("orderNo");//挂号编号
                String recipeNo = json.getString("recipeNo");//处方编号
            
                Prescription prescription = prescriptionDao.findByVisitNoAndRecipeNo(orderNo,recipeNo);
                if(prescription.getStatus().equals(PrescriptionLog.PrescriptionLogStatus.pay_success.getValue())){
                
                    if(2 == prescription.getDispensaryType()){//如果是快递配送,则直接修改成配送中
                        prescription.setStatus(PrescriptionLog.PrescriptionLogStatus.expressageing.getValue());
                    } else{
                        prescription.setStatus(PrescriptionLog.PrescriptionLogStatus.wait_expressage.getValue());
                    }
                
                    prescription.setJwPayStatus(1);//0为未结算,1为结算成功,默认为0
                    prescription.setDrugDeliveryTime(new Date());
                    prescriptionDao.save(prescription);
                
                    //新增基卫线下支付记录
                    PrescriptionPay pay = new PrescriptionPay();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    String uuid = sdf.format(new Date()) + UUID.randomUUID().toString().replaceAll("-", "").substring(0, 4);
                    pay.setCode(uuid); //接入应用业务流水号outChargeNo
                    pay.setPrescriptionCode(prescription.getCode());//开处方的医生code 关联 wlyy_prescription
                    pay.setType(2);//1 医保支付 2基卫线下支付
                    pay.setOutChargeTime(json.containsKey("outChargeTime")?format.parse(json.getString("outChargeTime")):null);//支付日期
                    pay.setChannel("offline");//支付方式
                    pay.setChargeNo(json.containsKey("chargeNo")?json.getString("chargeNo"):null);//支付平台流水号
                    pay.setChargeTime(json.containsKey("chargeTime")?format.parse(json.getString("chargeTime")):null);//支付平台交易成功时间
                    pay.setBillNo(json.containsKey("billNo")?json.getString("billNo"):null);//待结算费用单据号
                    pay.setCardNo(json.containsKey("cardNo")?json.getString("cardNo"):null);//医保卡号
                    pay.setTotalAmount(json.containsKey("totalAmount")?json.getInteger("totalAmount"):null);//交易总金额
                    pay.setInsuranceAmount(json.containsKey("insuranceAmount")?json.getInteger("insuranceAmount"):null);//医保支付金额
                    pay.setSelfPayAmount(json.containsKey("selfPayAmount")?json.getInteger("selfPayAmount"):null);//自付金额
                    pay.setOpenid(null);//用户openID
                    pay.setUserName(json.containsKey("userName")?json.getString("userName"):null);//用户名字
                    pay.setIdType("01"); //证件类型
                    pay.setIdNo(json.containsKey("idNo")?json.getString("idNo"):null);//证件号码
                    pay.setTradeStatus("1");//交易状态
                    pay.setMiSettleNo(json.containsKey("miSettleNo")?json.getString("miSettleNo"):null);//医保收费单据号
                    pay.setMiRegisterNo(json.containsKey("miRegisterNo")?json.getString("miRegisterNo"):null); //医保挂号
                    pay.setMiCollectDate(json.containsKey("miCollectDate")?format.parse(json.getString("miCollectDate")):null);//收费日期
                    pay.setMiCollectTime(json.containsKey("miCollectTime")?format.parse(json.getString("miCollectTime")):null);//收费时间
                    pay.setMiCollectorName(json.containsKey("miCollectorName")?json.getString("miCollectorName"):null);//收费人姓名
                    pay.setMiTotalFee(json.containsKey("miTotalFee")?json.getInteger("miTotalFee"):null);//本次报销总额
                    pay.setSelfPay(json.containsKey("selfPay")?json.getInteger("selfPay"):null);//个人现金支付
                    pay.setAccountPay(json.containsKey("accountPay")?json.getInteger("accountPay"):null);//个人账户支付
                    pay.setHeathPay(json.containsKey("heathPay")?json.getInteger("heathPay"):null);//健康账户支付
                    pay.setCadresPay(json.containsKey("cadresPay")?json.getInteger("cadresPay"):null);//公务员补助
                    pay.setFundPay(json.containsKey("fundPay")?json.getInteger("fundPay"):null);//基金支付
                    pay.setHealthCarePay(json.containsKey("healthCarePay")?json.getInteger("healthCarePay"):null);//保健基金支付
                    pay.setCommercePay(json.containsKey("commercePay")?json.getInteger("commercePay"):null);//商业保险支付
                    pay.setFamilyPay(json.containsKey("familyPay")?json.getInteger("familyPay"):null);//共济账户支付
                    pay.setCivilPay(json.containsKey("civilPay")?json.getInteger("civilPay"):null);//民政补助金额
                    pay.setCivilZone(json.containsKey("civilZone")?json.getString("civilZone"):null);//民政行政区号
                    pay.setBdrugPay(json.containsKey("bdrugPay")?json.getInteger("bdrugPay"):null);//乙类支付金额
                    pay.setUnlessAmount(json.containsKey("unlessAmount")?json.getInteger("unlessAmount"):null);//非医保费用
                    pay.setExceedAmount(json.containsKey("exceedAmount")?json.getInteger("exceedAmount"):null);//超封顶线金额
                    pay.setAccountBalance(json.containsKey("accountBalance")?json.getInteger("accountBalance"):null);//个人账户余额
                    pay.setHealthBalance(json.containsKey("healthBalance")?json.getInteger("healthBalance"):null);//健康账户余额
                    pay.setRecipeContent(json.containsKey("recipeContent")?json.getString("recipeContent"):null);//处方主信息
                    pay.setZdlist(json.containsKey("zdlist")?json.getString("zdlist"):null);//诊断明细
                    pay.setMxlist(json.containsKey("mxlist")?json.getString("mxlist"):null);//处方明细
                    pay.setCreateTime(new Date());//续方确认支付时间
                    pay.setCzrq(new Date());//续方记录最后操作时间
                    //    易联众新增查询返回字段v1.3.7
                    pay.setMedOrgNo(json.containsKey("medOrgNo")?json.getString("medOrgNo"):null);//医疗机构编号
                    pay.setMedOrgName(json.containsKey("medOrgName")?json.getString("medOrgName"):null);//医疗机构名称
                    pay.setTraceTime(json.containsKey("traceTime")?format.parse(json.getString("traceTime")):null);//交易成功时间
                    pay.setTraceNo(json.containsKey("traceNo")?json.getString("traceNo"):null);//支付平台跟踪号
                    pay.setPrincipalCardNo(json.containsKey("cardNo")?json.getString("cardNo"):null);//实际签约卡号
                    prescriptionPayDao.save(pay);
                    //新增log表
                    PrescriptionLog log = new PrescriptionLog();
                    log.setPrescriptionCode(prescription.getCode());
@ -1278,42 +1335,44 @@ public class PrescriptionService extends ZysoftBaseService{
                        prescriptionLogDao.save(log);
                    } else{
                        log.setStatus(PrescriptionLog.PrescriptionLogStatus.wait_expressage.getValue());
                        log.setRemark("配药成功");
                        log.setRemark("等待领药");
                        prescriptionLogDao.save(log);
                    
                        //健管师配送
                        PrescriptionExpressage expressage = prescriptionExpressageDao.findByPrescriptionCode(prescription.getCode());
                        if(StringUtils.isNotBlank(expressage.getExpressageCode())){
                            Message message = new Message();
                            message.setCzrq(new Date());
                            message.setCreateTime(new Date());
                            message.setRead(1);//设置未读
                            message.setOver("1");
                            message.setReceiver(expressage.getExpressageCode());
                            message.setSender("system");
                            message.setCode(getCode());
                            message.setSenderName("系统");
                            message.setTitle("居民"+prescription.getPatientName()+"的续方订单待取药");
                            message.setContent("您有一条新的续方订单待取药!");
                            message.setType(7);//续方订单待取药
                            message.setReadonly(1);//是否只读消息
                            message.setDel("1");
                            message.setRelationCode(prescription.getCode());
                            message.setPrescriptionStatus("0");//待取药
                            message.setData(prescription.getAdminTeamId()+"");
                            messageDao.save(message);
                        }
                    
                        //判断提示健管师有续方代配送,居民待取药
                        JSONObject message = new JSONObject();
                        message.put("title","dispensingComplete");
                        message.put("state",1);
                        message.put("prescription",prescription.getCode());
                        message.put("mes","success");
                        if(3 == prescription.getDispensaryType()){//健管师配送
                            PrescriptionExpressage expressage = prescriptionExpressageDao.findByPrescriptionCode(prescription.getCode());
                            if(StringUtils.isNotBlank(expressage.getExpressageCode())){
                                Message message = new Message();
                                message.setCzrq(new Date());
                                message.setCreateTime(new Date());
                                message.setRead(1);//设置未读
                                message.setOver("1");
                                message.setReceiver(expressage.getExpressageCode());
                                message.setSender("system");
                                message.setCode(getCode());
                                message.setSenderName("系统");
                                message.setTitle("居民"+prescription.getPatientName()+"的续方订单待取药");
                                message.setContent("您有一条新的续方订单待取药!");
                                message.setType(7);//续方订单待取药
                                message.setReadonly(1);//是否只读消息
                                message.setDel("1");
                                message.setRelationCode(prescription.getCode());
                                message.setPrescriptionStatus("0");//待取药
                                message.setData(prescription.getAdminTeamId()+"");
                                messageDao.save(message);
                            }
                            //判断提示健管师有续方代配送,居民待取药
                            JSONObject message = new JSONObject();
                            message.put("title","dispensingComplete");
                            message.put("state",1);
                            message.put("prescription",prescription.getCode());
                            message.put("mes","success");
//                redisTemplate.convertAndSend(channelTopic,message.toString());
//                redisTemplate.watch(channelTopic);
                        redisTemplate.opsForList().leftPush(channelTopic,message.toString());
                            redisTemplate.opsForList().leftPush(channelTopic,message.toString());
//                redisTemplate.unwatch();
                        }
                    }
                
                }else {