springboot mybatis 配置多源数据库mysql+sqlserver

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014161595/article/details/88052776

1.添加驱动包

<!-- mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
           <version>1.3.2</version>            
       </dependency>
       <!-- log4j日志 -->
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
    </dependency>
       <!-- mysql driver -->
       <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.2</version>
    </dependency>

其中sqlserver驱动包从官网下载解压后,放到指定位置

2.application.properties配置

##########多数据源配置开始##########
#mis数据源1配置 
spring.datasource.pit-mis.jdbc-url=jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8
spring.datasource.pit-mis.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.pit-mis.username=root
spring.datasource.pit-mis.password=密码
#mis数据源1的连接池配置
spring.datasource.pit-mis.type=com.mchange.v2.c3p0.ComboPooledDataSource

#k3数据源2配置 
spring.datasource.pit-dyk3.jdbc-url=jdbc:sqlserver://ip:1433;DatabaseName=数据库名
spring.datasource.pit-dyk3.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.pit-dyk3.username=
spring.datasource.pit-dyk3.password=
#k3数据源2的连接池配置
spring.datasource.pit-dyk3.type=com.mchange.v2.c3p0.ComboPooledDataSource

#(使用DBCP2连接池,也是springboot支持的连接池之一)org.apache.commons.dbcp2.BasicDataSource
#连接池配置
spring.datasource.max-wait-millis=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.connection-properties=characterEncoding=utf8

#扫描pojo类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写pojo类的全路径名了
spring.mybatis.pit-mis.type-aliases-package=pit.dao
spring.mybatis.pit-dyk3.type-aliases-package=pit.dyk3.dao
#mybatis mapper文件的位置
spring.mybatis.pit-mis=classpath:pit/mapper/*.xml
spring.mybatis.pit-dyk3=classpath:pit/mapper/sqlserver/*.xml
#mybatis.config-location=classpath:config/mybatis-config.xml
##########多数据源配置结束##########

3.将配置注入给spring

package pit.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:application.properties")
public class PropertiesConfig {
    @Autowired
    private Environment env;

    public Environment getEnv() {
        return env;
    }

    public void setEnv(Environment env) {
        this.env = env;
    }
    
}
 

4.数据源1配置

package pit.config;

import java.io.IOException;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

@Configuration
@MapperScan(basePackages={"pit.dao"},sqlSessionFactoryRef="misSqlSessionFactory")
public class MisDatasourceConfig {
    @Autowired
    private Environment env;
    
    @Bean(name="misDatasource")
    @ConfigurationProperties(prefix="spring.datasource.pit-mis")
    public DataSource misDataSource(){
        return DataSourceBuilder.create().build();
    }
    
    @Bean(name="misSqlSessionFactory")
    public SqlSessionFactory createMisSqlSessionFactory(){
        SqlSessionFactoryBean sf=new SqlSessionFactoryBean();
        sf.setDataSource(misDataSource());
        sf.setTypeAliasesPackage(env.getProperty("spring.mybatis.pit-mis.type-aliases-package"));
        try {
            sf.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("spring.mybatis.pit-mis")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            return sf.getObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    @Bean
    public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
    SqlSessionTemplate template = new SqlSessionTemplate(createMisSqlSessionFactory());
    return template;
    }
    @Bean(name="misTransactionManager")
    @Primary
    public DataSourceTransactionManager misTransactionManager(){
        return new DataSourceTransactionManager(misDataSource());
    }
}
5.数据源2配置

package pit.config;

import java.io.IOException;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

@Configuration
@MapperScan(basePackages={"pit.dyk3.dao"},sqlSessionFactoryRef="dyk3SqlSessionFactory")
public class Dyk3DatasourceConfig {
    @Autowired
    private Environment env;
    
    @Bean(name="dyk3Datasource")
    @ConfigurationProperties(prefix="spring.datasource.pit-dyk3")
    public DataSource dyk3DataSource(){
        return DataSourceBuilder.create().build();
    }
    
    @Bean(name="dyk3SqlSessionFactory")
    public SqlSessionFactory createDyk3SqlSessionFactory(){
        SqlSessionFactoryBean sf=new SqlSessionFactoryBean();
        sf.setDataSource(dyk3DataSource());
        sf.setTypeAliasesPackage(env.getProperty("spring.mybatis.pit-dyk3.type-aliases-package"));
        try {
            sf.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("spring.mybatis.pit-dyk3")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            return sf.getObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
    SqlSessionTemplate template = new SqlSessionTemplate(createDyk3SqlSessionFactory());
    return template;
    }
    @Bean(name="dyk3TransactionManager")
    @Primary
    public DataSourceTransactionManager misTransactionManager(){
        return new DataSourceTransactionManager(dyk3DataSource());
    }
}
6.启动类取消自动datasource注入

package pit;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class Application 
//extends SpringBootServletInitializer
{
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
//    @Override
//    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//        return builder.sources(this.getClass());
//    }
}
7.service调用,不同mapper自动连接不同数据库

package pit.services;

import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import pit.dao.Pit_companyMapper;
import pit.dao.Pit_default_rate_infoMapper;
import pit.dao.Pit_default_valuesMapper;
import pit.dao.Pit_issueMapper;
import pit.dao.Pit_issue_excelcolumnMapper;
import pit.dao.Pit_issue_recordMapper;
import pit.dao.Pit_issue_result_recordMapper;
import pit.dyk3.dao.DAYANG_SETTLEMENT_DATAMapper;
import pit.model.Pit_company;
import pit.model.Pit_default_rate_info;
import pit.model.Pit_default_values;
import pit.model.Pit_issue;
import pit.model.Pit_issue_excelcolumn;
import pit.model.Pit_issue_record;
import pit.model.Pit_issue_result_record_caculate;
import pit.sqlserver.model.DAYANG_SETTLEMENT_DATA;
@RestController
public class PitFileServices {
    @Autowired
    private HttpServletRequest request;
    @Autowired
    private HttpServletResponse response;
    @Autowired
    private Pit_issueMapper pitIssueMapper;
    @Autowired
    private Pit_issue_excelcolumnMapper pitIssueExcelColumnMapper;
    @Autowired
    private Pit_issue_recordMapper pitIssueRecordMapper;
    @Autowired
    private Pit_companyMapper pitCompanyMapper;
    @Autowired
    private Pit_issue_result_recordMapper pitIssueResultRecordMapper;
    @Autowired
    private Pit_default_valuesMapper pitDefaultValuesMapper;
    @Autowired
    private Pit_default_rate_infoMapper pitDefaultRateInfoMapper;
    @Autowired
    private DAYANG_SETTLEMENT_DATAMapper dayang_SETTLEMENT_DATAMapper;
    @Transactional
    @RequestMapping(method=RequestMethod.POST,value="/pitfileUpload")
    public boolean pitUpload(@RequestParam("pit_file") MultipartFile file){
        if(file!=null){
            String year=request.getParameter("pit_year");
            String month=request.getParameter("pit_month");
            String company=request.getParameter("pit_company");
            Pit_issue issue=new Pit_issue();
            issue.setYear(Integer.parseInt(year));
            issue.setMonth(Integer.parseInt(month));
            issue.setCompany(Integer.parseInt(company));            
            //查看是否存在期数
            List issueList=pitIssueMapper.selectByConditions(issue);
            if(issueList.size()>0){
                //如果存在,删除期数,删除本期标题,删除本期数据,删除计算结果
                pitIssueResultRecordMapper.deleteByIssueCondition(issue);
                pitIssueRecordMapper.deleteByIssueCondition(issue);
                pitIssueExcelColumnMapper.deleteByIssueCondition(issue);
                pitIssueMapper.deleteByConditions(issue);
            }
            //创建期数//获取期数最大值
            issue.setValidity(1);
            issue.setUpTimes(pitIssueMapper.selectMaxUPTimes(issue));
            issue.setCreateTime(new Date());
            pitIssueMapper.insertSelective(issue);
            Workbook book = null;
            //判断是xls还是xlsx
            try {
                book = new XSSFWorkbook(file.getInputStream());
            } catch (Exception ex) {
                try {
                    book = new HSSFWorkbook(file.getInputStream());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //获取一共有多少sheet,遍历
            //int numberOfSheets = book.getNumberOfSheets();
            Sheet sheet = book.getSheetAt(0);
            //获取sheet中有多少行,遍历每一行
            int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
            int rowColumn=0;
            List<Pit_issue_record> recordList=new ArrayList<Pit_issue_record>();
            for (int j=0;j<physicalNumberOfRows;j++){
                if (j == 0) {
                //标题行
                Row row=sheet.getRow(j);
                rowColumn= sheet.getRow(j).getPhysicalNumberOfCells();//获得列数
                    for(int k=0;k<rowColumn;k++){
                        Cell cell=row.getCell(k);
                        //保存每期excel第一行
                        Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
                        pie.setCreateIp(request.getRemoteAddr());
                        pie.setCreateTime(new Date());
                        pie.setMyindex(k);
                        pie.setName(cell.getStringCellValue());
                        pie.setPitIssue(issue.getId());
                        pitIssueExcelColumnMapper.insertSelective(pie);
                    }                
                }else{
                    //保存每期上传记录
                    Pit_issue_record pir=new Pit_issue_record();
                    Row row=sheet.getRow(j);
                    //获取工号
                    String comNum="";
                    Pit_default_values dvalue=new Pit_default_values();
                    dvalue.setObjId(1);
                    List<Pit_default_values> dValuesList=pitDefaultValuesMapper.selectByConditions(dvalue);
                    if(dValuesList.size()>0){
                        Pit_default_values dfaultValue=dValuesList.get(0);
                        String dValueName=dfaultValue.getName();
                        for(int k=0;k<rowColumn;k++){
                            Cell cell=row.getCell(k);
                            //查询列对应的标题表列
                            Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
                            pie.setMyindex(k);
                            pie.setPitIssue(issue.getId());
                            List<Pit_issue_excelcolumn> pieResultList=pitIssueExcelColumnMapper.selectByConditions(pie);
                            Pit_issue_excelcolumn pieResult=pieResultList.get(0);
                            pir.setPitIssueExcelcolumnId(pieResult.getId());
                            pir.setPitIssueExcelcolumnName(pieResult.getName());
                            if(pieResult.getName().equalsIgnoreCase(dValueName)){
                                if(cell==null) cell=row.createCell(k);
                                cell.setCellType(Cell.CELL_TYPE_STRING);
                                comNum=cell.getStringCellValue();
                                break;
                            }
                        }
                    }
                    
                    for(int k=0;k<rowColumn;k++){
                        Pit_issue_record pirRow=new Pit_issue_record();
                        Cell cell=row.getCell(k);
                        //保存每期上传记录
                        pirRow.setCreateIp(request.getRemoteAddr());
                        pirRow.setCreateTime(new Date());
                        pirRow.setPitIssue(issue.getId());
                        //查询列对应的标题表列
                        Pit_issue_excelcolumn pie=new Pit_issue_excelcolumn();
                        pie.setMyindex(k);
                        pie.setPitIssue(issue.getId());
                        List<Pit_issue_excelcolumn> pieResultList=pitIssueExcelColumnMapper.selectByConditions(pie);
                        Pit_issue_excelcolumn pieResult=pieResultList.get(0);
                        pirRow.setPitIssueExcelcolumnId(pieResult.getId());
                        pirRow.setPitIssueExcelcolumnName(pieResult.getName());
                        if(cell==null) cell=row.createCell(k);
                        cell.setCellType(Cell.CELL_TYPE_STRING);
                        pirRow.setValue(cell.getStringCellValue());
                        pirRow.setComNum(comNum);
                        recordList.add(pirRow);                        
                        //保存每期上传记录
                        //pitIssueRecordMapper.insert(pir);
                    }                    
                }
                if(j==physicalNumberOfRows-1){
                    //批量保存每期记录
                    pitIssueRecordMapper.insertBatch(recordList);
                    recordList.clear();
                }else{
                    if(recordList.size()>0){
                        if(recordList.size()%500==0){
                            //批量保存每期记录
                            pitIssueRecordMapper.insertBatch(recordList);
                            recordList.clear();
                        }
                    }
                }
            }
            recordList=null;
        }
        return true;
    }
    @RequestMapping(value="/selectPITIssueByConditions")
    public List<Pit_issue> selectByConditions(@ModelAttribute Pit_issue issue){
        List<Pit_issue> list= pitIssueMapper.selectByConditions(issue);
        return list;
    }
    @RequestMapping(value="/selectCompanyAll")
    public List<Pit_company> selectCompanyAll(){
        SecurityContext securityContext=SecurityContextHolder.getContext();
        System.out.println("=========="+securityContext.getAuthentication().toString());
        List<Pit_company> list=pitCompanyMapper.selectAll();
        return list;
    }
    @RequestMapping(value="/checkCompanyIssueExists")
    public boolean checkCompanyIssueExists(@ModelAttribute Pit_issue issue){
        List<Pit_issue> list=pitIssueMapper.selectByConditions(issue);
        if(list.size()>0){
            return true;
        }else{
            return false;
        }
    }
    @RequestMapping(value="/downLoadPitFile")
    public void downLoadPitFile(){
        String year=request.getParameter("pit_year");
        String month=request.getParameter("pit_month");
        String company=request.getParameter("pit_company");
        //查询累计应扣缴税额
        Pit_issue issue=new Pit_issue();
        issue.setYear(Integer.parseInt(year));
        issue.setMonth(Integer.parseInt(month));
        issue.setCompany(Integer.parseInt(company));
        List<Pit_issue_result_record_caculate> pitIssueResultRecordlist=new ArrayList<Pit_issue_result_record_caculate>();
        int monthInt=Integer.parseInt(month);
        if(monthInt==1){
            pitIssueResultRecordlist=pitIssueRecordMapper.selectPITResultFirstMonth(issue);
        }else{
            pitIssueResultRecordlist=pitIssueRecordMapper.selectPITResultAfterFirstMonth(issue);
        }
        //计算每行列数
        int cloumnNum=0;
        List<Pit_issue_excelcolumn> pitIssueExcelcolumnlist=null;
        List<Pit_issue> issueList=pitIssueMapper.selectByConditions(issue);
        if(issueList.size()>0){
            Pit_issue pitIssue=issueList.get(0);
            Pit_issue_excelcolumn excelcolumn=new Pit_issue_excelcolumn();
            excelcolumn.setPitIssue(pitIssue.getId());
            pitIssueExcelcolumnlist=pitIssueExcelColumnMapper.selectByConditions(excelcolumn);
            cloumnNum=pitIssueExcelcolumnlist.size();
        }
        //计算结果集数量
        int recordSize=pitIssueResultRecordlist.size();
        
            //创建工作簿
            Workbook book = new XSSFWorkbook();
            Sheet sheet =book.createSheet(year+"年"+month+"月个税计算结果");
            //计算行数,创建行
            int rowNum=0;
            if(cloumnNum!=0){
                rowNum=recordSize/cloumnNum;
            }
            
            //创建标题行
            Row rowHead=sheet.createRow(0);
            for(int m=0;m<cloumnNum;m++){
                Pit_issue_excelcolumn excelColumn=pitIssueExcelcolumnlist.get(m);
                Cell cell=rowHead.createCell(m);
                cell.setCellType(Cell.CELL_TYPE_STRING);
                cell.setCellValue(excelColumn.getName());
            }
            if(cloumnNum>0){
                Cell cell=rowHead.createCell(cloumnNum);
                cell.setCellType(Cell.CELL_TYPE_STRING);
                cell.setCellValue("累计应扣缴税额");
                cell=rowHead.createCell(cloumnNum+1);
                cell.setCellType(Cell.CELL_TYPE_STRING);
                cell.setCellValue("本月扣税");
            }            
            int recordIndex=0;
            for(int k=0;k<rowNum;k++){
                Row rowin=sheet.createRow(k+1);
                //创建列
                for(int n=0;n<cloumnNum;n++){
                    if(n==cloumnNum-1){                        
                        Pit_issue_result_record_caculate record=pitIssueResultRecordlist.get(recordIndex);
                        Cell cellin=rowin.createCell(n);
                        cellin.setCellType(Cell.CELL_TYPE_STRING);
                        cellin.setCellValue(record.getValue());
                        //计算累计应扣缴税额
                        cellin=rowin.createCell(n+1);
                        cellin.setCellType(Cell.CELL_TYPE_NUMERIC);
                        if(record.getValue()!=null){
                            Double value=Double.parseDouble(record.getJiaoshuie_value());
                            if(value<0){
                                cellin.setCellValue(0);
                            }else{
                                cellin.setCellValue(record.getJiaoshuie_value());
                            }
                        }else{
                            cellin.setCellValue("");
                        }                        
                        //计算本月扣税
                        cellin=rowin.createCell(n+2);
                        cellin.setCellType(Cell.CELL_TYPE_NUMERIC);
                        String koushuistr=record.getBenyuekoushui_value();
                        if(koushuistr==null) koushuistr="0.0";
                        BigDecimal monthKoushuiB = new BigDecimal(koushuistr);
                        cellin.setCellValue(monthKoushuiB.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
                        recordIndex++;
                    }else{
                        Pit_issue_result_record_caculate record=pitIssueResultRecordlist.get(recordIndex);
                        Cell cellin=rowin.createCell(n);
                        cellin.setCellType(Cell.CELL_TYPE_STRING);
                        cellin.setCellValue(record.getValue());
                        recordIndex++;
                    }
                    
                }                
            }
            //下载excel
            OutputStream ops=null;
            try {
                response.setHeader("Content-disposition", "attachment; filename="+year+"年"+month+"月个税.xlsx");  
                response.setContentType("application/vnd.ms-excel;charset=utf-8");
                ops=response.getOutputStream();                
                book.write(ops);
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    ops.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    }
    public Double caculateLeijikoushui(int month,Map<String,Object> map){
        map.put("month", month);
        if(month==1){
            Pit_issue_record comRecord=pitIssueRecordMapper.selectPITResultByComnum(map);
            Double monthLeijiYingkou=Double.parseDouble(comRecord.getValue());
            map.put("rangeValue", monthLeijiYingkou);
            Pit_default_rate_info pitRateInfo=pitDefaultRateInfoMapper.selectByRangeCondition(map);
            if(pitRateInfo==null){
                return 0.0;
            }else{
                Double monthValue=(monthLeijiYingkou*pitRateInfo.getTaxRate()-pitRateInfo.getQuickCaculateDeduction());
                return monthValue;
            }
        }else{
            Pit_issue_record comRecord=pitIssueRecordMapper.selectPITResultByComnum(map);
            Double monthLeijiYingkou=Double.parseDouble(comRecord.getValue());
            map.put("rangeValue", monthLeijiYingkou);
            Pit_default_rate_info pitRateInfo=pitDefaultRateInfoMapper.selectByRangeCondition(map);
            if(pitRateInfo==null){
                return 0.0;
            }else{
                Double monthValue=(monthLeijiYingkou*pitRateInfo.getTaxRate()-pitRateInfo.getQuickCaculateDeduction());
                
                map.put("month", month-1);
                Pit_issue_record comRecord1=pitIssueRecordMapper.selectPITResultByComnum(map);
                Double monthLeijiYingkou1=Double.parseDouble(comRecord1.getValue());
                map.put("rangeValue", monthLeijiYingkou1);
                Pit_default_rate_info pitRateInfo1=pitDefaultRateInfoMapper.selectByRangeCondition(map);
                Double monthValue1=(monthLeijiYingkou1*pitRateInfo1.getTaxRate()-pitRateInfo1.getQuickCaculateDeduction());
                return monthValue-monthValue1;
            }
        }
    }
    public int digui(int n){
        if(n==0){
            return 0;
        }
        int temp=(2*n-1)+digui(n-1);
        System.out.println(temp);
        return temp;
    }
    public static void main(String[] args) {
        PitFileServices a=new PitFileServices();
        int b=a.digui(3);
        int c=a.digui(2);
        System.out.println(b+";"+c);
    }
}
 

附录:完整pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>HJ</groupId>
  <artifactId>PIT</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>PIT Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>
  <dependencies>
  <!-- Add typical dependencies for a web application -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 移除嵌入式tomcat插件 -->
        <exclusions>
            <!-- <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion> -->
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- spring security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- cas -->
    <dependency>
           <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-cas</artifactId>
    </dependency>
    <!-- c3p0 -->
    <dependency>
          <groupId>com.mchange</groupId>
          <artifactId>c3p0</artifactId>
          <version>0.9.5.2</version>
    </dependency>
    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
           <version>1.3.2</version>            
       </dependency>
       <!-- log4j日志 -->
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
    </dependency>
       <!-- mysql driver -->
       <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
    </dependency>
    <!-- POI -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.10-FINAL</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <!--添加servlet-api的依赖-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
  </dependencies>
  <properties>
        <java.version>1.8</java.version>
  </properties>
  <build>
      <plugins>
        <!-- Package as an executable jar -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
        </plugin>        
        <plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.5</version>
          <executions>
            <execution>
              <id>Generate MyBatis Artifacts</id>
              <goals>
                <goal>generate</goal>
              </goals>
              <phase>deploy</phase>
            </execution>
          </executions>
          <configuration>
              <configurationFile>src/main/resources/config/mybatis-config-sqlserver.xml</configurationFile>
          </configuration>
        </plugin>
    </plugins>
    <resources>
            <!-- <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource> -->
     </resources>
    <finalName>PIT</finalName>
  </build>
</project>
 

猜你喜欢

转载自blog.csdn.net/u014161595/article/details/88052776
今日推荐