com.nkapps.billing.dao.PgDaoImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.nkapps.billing.dao.PgDaoImpl.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.nkapps.billing.dao;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.joda.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.nkapps.billing.models.BankStatementMunis;
import com.nkapps.billing.models.BankStatementMunisId;
import com.nkapps.billing.models.Click;
import com.nkapps.billing.models.ClickPayment;
import com.nkapps.billing.models.ClickPaymentId;
import com.nkapps.billing.models.ClickPojo;
import com.nkapps.billing.models.Munis;
import com.nkapps.billing.models.MunisPayment;
import com.nkapps.billing.models.MunisPaymentId;
import com.nkapps.billing.models.MunisPojo;
import com.nkapps.billing.models.Payment;
import com.nkapps.billing.models.Smst;
import com.nkapps.billing.models.SmstPayment;
import com.nkapps.billing.models.SmstPaymentId;
import com.nkapps.billing.models.SmstPojo;

/**
 *
 * @author nuraddin
 */
@Service("pgDao")
public class PgDaoImpl extends AbstractDao implements PgDao {

    @Autowired
    private PaymentDao paymentDao;

    @Override
    public void clickSave(ClickPojo clickPojo) throws Exception {
        Session session = getSession();
        Transaction transaction = session.beginTransaction();

        Click click = (Click) session.get(Click.class, clickPojo.getId());

        LocalDateTime dateTime = LocalDateTime.now();
        if (click == null) {
            click = new Click();
            click.setId(clickPojo.getId());
            click.setTransactionId(clickPojo.getClickTransId());
            click.setTin(clickPojo.getMerchantTransId());
            click.setPaymentDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(clickPojo.getSignTime()));
            click.setPaymentSum(clickPojo.getAmount());
            click.setDateCreated(dateTime);
            click.setDateUpdated(dateTime);

            session.save(click);

            Payment payment = new Payment();
            payment.setTin(click.getTin());
            payment.setPaymentNum(click.getTransactionId().toString());
            payment.setPaymentDate(click.getPaymentDate());
            payment.setPaymentSum(click.getPaymentSum()); //
            payment.setSourceCode((short) 3); // for click
            payment.setState((short) 1); // 
            payment.setClaim((short) 0); //
            payment.setDateCreated(dateTime);
            payment.setDateUpdated(dateTime);

            session.save(payment);

            ClickPayment cp = new ClickPayment();
            ClickPaymentId cpId = new ClickPaymentId();
            cpId.setClick(click);
            cpId.setPayment(payment);
            cp.setId(cpId);

            session.save(cp);

        } else {
            click.setDateUpdated(dateTime);
            session.update(click);
        }

        transaction.commit();
        session.close();
    }

    @Override
    public void smstSave(SmstPojo smstPojo) throws Exception {
        Session session = getSession();
        Transaction transaction = session.beginTransaction();

        Smst smst = (Smst) session.get(Smst.class, smstPojo.getId());

        LocalDateTime dateTime = LocalDateTime.now();
        if (smst == null) {
            smst = new Smst();
            smst.setId(smstPojo.getId());
            smst.setTransactionId(smstPojo.getSmstTransId());
            smst.setTin(smstPojo.getMerchantTransId());
            smst.setPaymentDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(smstPojo.getSignTime()));
            smst.setPaymentSum(smstPojo.getAmount());
            smst.setDateCreated(dateTime);
            smst.setDateUpdated(dateTime);

            session.save(smst);

            Payment payment = new Payment();
            payment.setTin(smst.getTin());
            payment.setPaymentNum(smst.getTransactionId().toString());
            payment.setPaymentDate(smst.getPaymentDate());
            payment.setPaymentSum(smst.getPaymentSum()); //
            payment.setSourceCode((short) 4); // for smst
            payment.setState((short) 1); // 
            payment.setClaim((short) 0); //
            payment.setDateCreated(dateTime);
            payment.setDateUpdated(dateTime);

            session.save(payment);

            SmstPayment sp = new SmstPayment();
            SmstPaymentId spId = new SmstPaymentId();
            spId.setSmst(smst);
            spId.setPayment(payment);
            sp.setId(spId);

            session.save(sp);

        } else {
            smst.setDateUpdated(dateTime);
            session.update(smst);
        }

        transaction.commit();
        session.close();
    }

    @Override
    public void munisSave(MunisPojo munisPojo) throws Exception {
        Session session = getSession();
        Transaction transaction = session.beginTransaction();

        Munis munis = (Munis) session.get(Munis.class, new BigInteger(munisPojo.getPaymentId()));

        LocalDateTime dateTime = LocalDateTime.now();
        if (munis == null) {
            munis = new Munis();
            munis.setId(new BigInteger(munisPojo.getPaymentId()));
            munis.setConfirmCode(munisPojo.getConfirmCode());
            munis.setConfirmMessage(munisPojo.getConfirmMessage());
            munis.setSysinfoData(munisPojo.getSysinfoData());
            munis.setSysinfoTime(munisPojo.getSysinfoTime());
            munis.setSysinfoBid(munisPojo.getSysinfoBid());
            munis.setSysinfoTid(munisPojo.getSysinfoTid());
            munis.setSysinfoSid(munisPojo.getSysinfoSid());
            munis.setSysinfoHash(munisPojo.getSysinfoHash());
            munis.setPayerBranch(munisPojo.getPayerBranch());
            munis.setPayerAccount(munisPojo.getPayerAccount());
            munis.setPayerName(munisPojo.getPayerName());
            munis.setPayerInn(munisPojo.getPayerInn());
            munis.setPayeeBranch(munisPojo.getPayeeBranch());
            munis.setPayeeAccount(munisPojo.getPayeeAccount());
            munis.setPayeeName(munisPojo.getPayeeName());
            munis.setPayeeInn(munisPojo.getPayeeInn());
            munis.setPurposeCode(munisPojo.getPurposeCode());
            munis.setPurposeText(munisPojo.getPurposeText());
            munis.setAmountCurrency(munisPojo.getAmountCurrency());
            munis.setAmountValue(new BigDecimal(munisPojo.getAmountValue()).divide(new BigDecimal("100"))); // tiyin convert to so'm
            munis.setDocumentNum(StringUtils.leftPad(munisPojo.getDocumentNum(), 10, "0"));
            munis.setDocumentData(new SimpleDateFormat("dd.MM.yyyy").parse(munisPojo.getDocumentData()));
            munis.setSettlementSupplier(munisPojo.getSettlementSupplier());
            munis.setSettlementCode(munisPojo.getSettlementCode());
            munis.setSubjectinfoGni(munisPojo.getSubjectinfoGni());
            munis.setSubjectinfoInn(munisPojo.getSubjectinfoInn());
            munis.setSubjectinfoCodeObj(munisPojo.getSubjectinfoCodeObj());
            munis.setInfoserviceInn(munisPojo.getInfoserviceInn());
            munis.setInfoserviceName(munisPojo.getInfoserviceName());
            munis.setInfoserviceCodeObj(munisPojo.getInfoserviceCodeObj());
            munis.setInfoserviceAddressObj(munisPojo.getInfoserviceAddressObj());
            munis.setDateCreated(dateTime);
            munis.setDateUpdated(dateTime);

            session.save(munis);

            Payment payment = paymentDao.findPayment(munis.getSubjectinfoInn(), munis.getDocumentNum(),
                    munis.getDocumentData(), munis.getAmountValue(), munis.getPayerInn(), (short) 1); // bank statement payment to search
            if (payment == null) {
                payment = new Payment();
                payment.setTin(munis.getSubjectinfoInn());
                payment.setPaymentNum(munis.getDocumentNum());
                payment.setPaymentDate(munis.getDocumentData());
                payment.setPaymentSum(munis.getAmountValue()); //
                payment.setTinDebtor(munis.getPayerInn());
                payment.setSourceCode((short) 2); // for munis
                payment.setState((short) 1); // 
                payment.setClaim((short) 0); //
                payment.setDateCreated(dateTime);
                payment.setDateUpdated(dateTime);

                session.save(payment);

                MunisPayment mp = new MunisPayment();
                MunisPaymentId mpId = new MunisPaymentId();
                mpId.setMunis(munis);
                mpId.setPayment(payment);
                mp.setId(mpId);

                session.save(mp);

            } else {
                BankStatementMunis bsm = new BankStatementMunis();
                BankStatementMunisId bsmId = new BankStatementMunisId();
                bsmId.setBankStatement(payment.getBankStatementPayment().getId().getBankStatement());
                bsmId.setMunis(munis);
                bsm.setId(bsmId);

                session.save(bsm);
            }

        } else {
            munis.setDateUpdated(dateTime);
            session.update(munis);
        }

        transaction.commit();
        session.close();
    }

}