CustomAccountMapper.java 2.53 KB
package pwc.taxtech.atms.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import pwc.taxtech.atms.MyMapper;
import pwc.taxtech.atms.entitiy.EnterpriseAccount;

@Mapper
public interface CustomAccountMapper extends MyMapper {

    @Select("SELECT ea.ID,ea.Code,ea.Name,ea.ParentCode,ea.FullName,"
            + "CASE WHEN am.StandardAccountCode='0000' THEN am.StandardAccountCode ELSE sa.Code END StdCode,"
            + "sa.Name StdName,sa.ParentCode StdParentCode "
            + "FROM (SELECT * FROM EnterpriseAccount where parentcode=#{parentCode} and Enterpriseaccountsetid=#{accountSetID}) ea "
            + "LEFT JOIN (SELECT * FROM AccountMapping WHERE OrganizationID=#{orgID} AND IndustryID=#{industryID} AND EnterpriseAccountSetID=#{accountSetID}) am ON ea.Code=am.EnterpriseAccountCode "
            + "LEFT JOIN (SELECT * FROM StandardAccount WHERE IndustryID=#{industryID}) sa ON am.StandardAccountCode=sa.Code "
            + "ORDER BY ea.CODE")
    @Results({
        @Result(id = true, column = "ID", property = "ID"),
        @Result(column = "Code", property = "code"),
        @Result(column = "Name", property = "name"),
        @Result(column = "ParentCode", property = "parentCode"),
        @Result(column = "FullName", property = "fullName"),
        @Result(column = "StdCode", property = "stdCode"),
        @Result(column = "StdName", property = "stdName")
        //@Result(column = "StdParentCode", property = "stdParentCode")
    })
    List<EnterpriseAccount> getMappingResult(@Param(value="accountSetID") String accountSetID, 
            @Param(value="industryID") String industryID, @Param(value="orgID") String orgID, 
            @Param(value="parentCode") String parentCode);
    
    
    
    @Select("SELECT COUNT(1) FROM AccountMapping "
            + "WHERE EnterpriseAccountCode=#{enterpirseAccountCode} "
            + "AND EnterpriseAccountSetID=#{enterpriseAccountSetID} "
            + "AND OrganizationID=#{organizationID} "
            + "AND IndustryID=#{organizationID} "
            + "AND StandardAccountCode<>'0000'")
    Long countStandardAccounts(@Param(value="enterpriseAccountSetID") String enterpriseAccountSetID, 
            @Param(value="enterpirseAccountCode") String enterpirseAccountCode, 
            @Param(value="industryID") String industryID, 
            @Param(value="organizationID") String organizationID);
}