package pwc.taxtech.atms.invoice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.session.RowBounds; import pwc.taxtech.atms.MyVatMapper; import pwc.taxtech.atms.vat.dpo.OutputInvoiceDto; import pwc.taxtech.atms.vat.dpo.OutputVATInvoiceInfoDto; import pwc.taxtech.atms.vat.dpo.QueryOutputDto; import pwc.taxtech.atms.vat.entity.OutputInvoice; import pwc.taxtech.atms.vat.entity.OutputInvoiceExample; import pwc.taxtech.atms.vat.entity.OutputInvoiceKey; import java.util.List; @Mapper public interface OutputInvoiceMapper extends MyVatMapper { /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ long countByExample(OutputInvoiceExample example); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int deleteByExample(OutputInvoiceExample example); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int deleteByPrimaryKey(OutputInvoiceKey key); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int insert(OutputInvoice record); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int insertSelective(OutputInvoice record); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ List<OutputInvoice> selectByExampleWithRowbounds(OutputInvoiceExample example, RowBounds rowBounds); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ List<OutputInvoice> selectByExample(OutputInvoiceExample example); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ OutputInvoice selectByPrimaryKey(OutputInvoiceKey key); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int updateByExampleSelective(@Param("record") OutputInvoice record, @Param("example") OutputInvoiceExample example); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int updateByExample(@Param("record") OutputInvoice record, @Param("example") OutputInvoiceExample example); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int updateByPrimaryKeySelective(OutputInvoice record); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table PWC_INVOICE.OUTPUT_INVOICE * * @mbg.generated */ int updateByPrimaryKey(OutputInvoice record); @Select("SELECT " + " o.PERIOD_ID as periodId, " + " o.INVOICE_TYPE as invoiceType, " + " o.CLASS_CODE as classCode, " + " o.INVOICE_NUMBER as invoiceNumber, " + " o.BUYER_NAME as buyerName, " + " o.BUYER_TAX_NUMBER as buyerTaxNumber, " + " o.BANK_ACCOUNT as bankAccount, " + " o.PHONE_NUM as phoneNum, " + " o.INVOICE_DATE as invoiceDate, " + " oi.CODE_VERSION as codeVersion, " + " oi.PRODUCT_NAME as productName, " + " oi.DOCUMENT_NUM as documentNum, " + " oi.PRODUCT_STANDARD as productStandard, " + " oi.UNIT as unit, " + " oi.QUANTITY as quantity, " + " oi.UNIT_PRICE as unitPrice, " + " oi.AMOUNT as amount, " + " oi.TAX_RATE as taxRate, " + " oi.TAX_AMOUNT as taxAmount, " + " oi.TAX_CLASS_CODE as taxClassCode " + "FROM " + " OUTPUT_VAT_INVOICE o, " + " OUTPUT_VAT_INVOICE_ITEM oi, " + " (SELECT " + " INVOICE_ID, MIN(SeqNo) MIN_SEQ_NO " + " FROM " + " OUTPUT_VAT_INVOICE_ITEM " + " GROUP BY InvoiceID) m " + "WHERE " + " o.INVOICE_ID = oi.INVOICE_ID " + " AND o.INVOICE_ID = m.INVOICE_ID " + " AND oi.SEQ_NO = m.MIN_SEQ_NO " + " AND o.PERIOD_ID = #{period}" + " UNION SELECT " + " o2.periodID, " + " NULL AS invoiceType, " + " '' AS classCode, " + " '' AS invoiceNumber, " + " '' AS buyerName, " + " '' AS buyerTaxNumber, " + " '' AS bankAccount, " + " '' AS phoneNum, " + " NULL AS invoiceDate, " + " oi2.codeVersion, " + " oi2.productName, " + " oi2.documentNum, " + " oi2.productStandard, " + " oi2.unit, " + " oi2.quantity, " + " oi2.unitPrice, " + " oi2.amount, " + " oi2.taxRate, " + " oi2.taxAmount, " + " oi2.taxClassCode " + "FROM " + " OUTPUT_VAT_INVOICE o2, " + " OUTPUT_VAT_INVOICE_ITEM oi2, " + " (SELECT " + " INVOICE_ID, MIN(SEQ_NO) MIN_SEQ_NO " + " FROM " + " OUTPUT_VAT_INVOICE_ITEM " + " GROUP BY INVOICE_ID) m2 " + "WHERE " + " o2.INVOICE_ID = oi2.INVOICE_ID " + " AND o2.INVOICE_ID = m2.INVOICE_ID " + " AND oi2.SEQ_NO != m2.MIN_SEQ_NO " + " AND o2.PERIOD_ID = #{period}" + " ") List<OutputVATInvoiceInfoDto> queryOutputDetailWithItem(Integer period); List<OutputInvoiceDto> getOutputInvoiceWithDetail(); List<OutputVATInvoiceInfoDto> selectOutputInvoiceInfoLeftJoinItem(QueryOutputDto queryDto); }