CitDataPreviewServiceImpl.java 13.1 KB
Newer Older
1 2 3 4 5 6 7 8
package pwc.taxtech.atms.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Service;
import pwc.taxtech.atms.common.message.ErrorMessage;
9 10
import pwc.taxtech.atms.common.util.JxlsUtils;
import pwc.taxtech.atms.constant.Constant;
11 12 13 14 15 16 17 18 19
import pwc.taxtech.atms.constant.CountTypeConstant;
import pwc.taxtech.atms.constant.ExportTemplatePathConstant;
import pwc.taxtech.atms.dao.CitJournalEntryAdjustMapper;
import pwc.taxtech.atms.dao.CitTrialBalanceMapper;
import pwc.taxtech.atms.dao.OrganizationMapper;
import pwc.taxtech.atms.dto.CitJournalAdjustDto;
import pwc.taxtech.atms.dpo.CitTrialBalanceDto;
import pwc.taxtech.atms.dto.CitTrialBalanceExportDto;
import pwc.taxtech.atms.dto.JournalMergeExportDto;
20
import pwc.taxtech.atms.dto.export.ExportDto;
21 22 23 24 25
import pwc.taxtech.atms.dto.vatdto.*;
import pwc.taxtech.atms.dto.vatdto.dd.TrialBalanceDto;
import pwc.taxtech.atms.dto.vatdto.dd.*;
import pwc.taxtech.atms.dto.vatdto.excelheader.CashFlowHeader;
import pwc.taxtech.atms.dto.vatdto.excelheader.CertifiedInvoicesListHeader;
26
import pwc.taxtech.atms.entity.*;
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
import pwc.taxtech.atms.exception.ServiceException;
import pwc.taxtech.atms.thirdparty.ExcelUtil;
import pwc.taxtech.atms.vat.dao.*;
import pwc.taxtech.atms.vat.dpo.TrialBalanceCondition;
import pwc.taxtech.atms.vat.dpo.*;
import pwc.taxtech.atms.vat.entity.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
44
 * CIT数据预览功能模块
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
 * @author zhikai.z.wei
 * @Date: 02/03/2019
 * @Description:
 */
@Service
public class CitDataPreviewServiceImpl extends BaseService {

    @Resource
    private CitJournalEntryAdjustMapper citJournalMapper;
    @Resource
    private CitTrialBalanceMapper citTbMapper;

    /**
     * 获取日记账合并版
     * @param citJournalAdjustDto
     * @return
     */
    public PageInfo<CitJournalAdjustDto> getJournalMergeData(CitJournalAdjustDto citJournalAdjustDto) {
63
        CitJournalEntryAdjust citJournalEntryAdjust = beanUtil.copyProperties(citJournalAdjustDto, new CitJournalEntryAdjust());
64
        Page page = PageHelper.startPage(citJournalAdjustDto.getPageInfo().getPageIndex(), citJournalAdjustDto.getPageInfo().getPageSize());
65
        List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalEntryAdjust);
66 67 68 69 70 71 72 73 74 75 76 77 78
        List<CitJournalAdjustDto> journalAdjustDtos = Lists.newArrayList();
        journalMerges.forEach(journal -> {
            CitJournalAdjustDto citJournalDto = new CitJournalAdjustDto();
            beanUtil.copyProperties(journal, citJournalDto);
            journalAdjustDtos.add(citJournalDto);
        });

        PageInfo<CitJournalAdjustDto> pageInfo =new PageInfo<>(journalAdjustDtos);
        pageInfo.setTotal(page.getTotal());
        pageInfo.setPageNum(citJournalAdjustDto.getPageInfo().getPageIndex());
        return pageInfo;
    }

79
    /**
80
     * 日记账导出(第一种方式)--暂时不使用
81 82 83 84
     * @param citJournalAdjustDto
     * @param os
     * @return
     */
85 86
    public int exportJournalMergeData(CitJournalAdjustDto citJournalAdjustDto, OutputStream os) {
        try {
87 88
            CitJournalEntryAdjust citJournalEntryAdjust = beanUtil.copyProperties(citJournalAdjustDto, new CitJournalEntryAdjust());
            List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalEntryAdjust);
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

            Map<String, String> header = generalJMHeader();
            List<JournalMergeExportDto> cellList = new ArrayList<>();
            journalMerges.forEach(tb -> {
                JournalMergeExportDto d = new JournalMergeExportDto();
                d = beanUtil.copyProperties(tb, d);
                cellList.add(d);
            });
            ExcelUtil.exportExcel(header, cellList, os);
            return cellList.size();
        } catch (Exception e) {
            logger.error("日记账合并版导出转换Excel异常: %s", e.getMessage());
            return 0;
        }
    }

105
    /**
106
     * 日记账导出(第二种方式)--正在使用
107 108 109 110
     * @param citJournalAdjustDto
     * @param response
     * @return
     */
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
    public int exportJournalMergeData2(CitJournalAdjustDto citJournalAdjustDto, HttpServletResponse response){
        CitJournalEntryAdjust citJournalEntryAdjust = beanUtil.copyProperties(citJournalAdjustDto, new CitJournalEntryAdjust());
        List<CitJournalEntryAdjust> journalMerges = citJournalMapper.getJournalMerge(citJournalEntryAdjust);
        if(journalMerges.size()==0){
            return  0;
        }
        ExportDto exportDto = new ExportDto();
        exportDto.setFileName("日记账合并版");
        exportDto.setTemplateUrl(Constant.citTemplateUrl +  "/citJournalEntryAdjust.xlsx");
        exportDto.setResponse(response);
        exportDto.setList(journalMerges);
        exportDto.setRelation(null);
        JxlsUtils.export(exportDto);
        return 1;
    }

127 128 129 130
    /**
     * 日记账导出(第一种方式)所用到的获取Excel表头
     * @return
     */
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
    private Map<String, String> generalJMHeader() {
        Map<String, String> header = new LinkedHashMap<>();
        header.put("ApprovalStatus","审批状态");
        header.put("PostedStatus","过账");

        header.put("AccountingPeriod","会计期间");
        header.put("AccountingDate","凭证日期");
        header.put("JournalSource","日记账来源");
        header.put("Category","日记账类别");
        header.put("Name","日记账名称");
        header.put("VoucherNum","凭证编号");
        header.put("Description","摘要");
        header.put("OrgCode","主体代码");
        header.put("SubjectCode","科目代码");
        header.put("OrgName","主体代码");
        header.put("SubjectName","科目代码");

        header.put("AccountedDr","借方金额");
        header.put("AccountedCr","贷方金额");
        header.put("CreatedBy","创建人");
        header.put("CreatedDate","创建日期");
        header.put("LateUpdatedBy","最后更新人");
        header.put("LateUpdatedDate","最后更新日期");
        header.put("Period","税务系统期间");
        return header;
    }

158 159 160 161 162
    /**
     * 获取自动生成的试算平衡表数据
     * @param citTrialBalanceDto
     * @return
     */
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
    public PageInfo<CitTrialBalanceDto> getTbGeneVerData(CitTrialBalanceDto citTrialBalanceDto) {
        Page page = PageHelper.startPage(citTrialBalanceDto.getPageInfo().getPageIndex(), citTrialBalanceDto.getPageInfo().getPageSize());
        CitTrialBalanceExample citTbExample = new CitTrialBalanceExample();
        CitTrialBalanceExample.Criteria citTbExampleCriteria = citTbExample.createCriteria();
//        citTbExampleCriteria.andProjectIdEqualTo(citTrialBalanceDto.getProjectId());
        List<CitTrialBalance> citTbList = citTbMapper.selectByExample(citTbExample);
        List<CitTrialBalanceDto> citTbDtos = Lists.newArrayList();
        citTbList.forEach(tb -> {
            CitTrialBalanceDto citTrialBalanceDtoTemp = new CitTrialBalanceDto();
            beanUtil.copyProperties(tb, citTrialBalanceDtoTemp);
            citTbDtos.add(citTrialBalanceDtoTemp);
        });

        PageInfo<CitTrialBalanceDto> pageInfo =new PageInfo<>(citTbDtos);
        pageInfo.setTotal(page.getTotal());
        pageInfo.setPageNum(citTrialBalanceDto.getPageInfo().getPageIndex());
        return pageInfo;
    }

182
    /**
183
     * 试算平衡表生成版的导出(第一种方式)
184 185 186 187
     * @param citTrialBalanceDto
     * @param os
     * @return
     */
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
    public int exportTbGeneVerData(CitTrialBalanceDto citTrialBalanceDto, OutputStream os) {
        try {
            CitTrialBalanceExample citTbExample = new CitTrialBalanceExample();
            CitTrialBalanceExample.Criteria citTbExampleCriteria = citTbExample.createCriteria();
//            citTbExampleCriteria.andProjectIdEqualTo(citTrialBalanceDto.getProjectId());
            List<CitTrialBalance> citTbList = citTbMapper.selectByExample(citTbExample);

            Map<String, String> header = generalTbGeneVerHeader();
            List<CitTrialBalanceExportDto> cellList = new ArrayList<>();
            citTbList.forEach(tb -> {
                CitTrialBalanceExportDto d = new CitTrialBalanceExportDto();
                d = beanUtil.copyProperties(tb, d);
                cellList.add(d);
            });
            ExcelUtil.exportExcel(header, cellList, os);
            return cellList.size();
        } catch (Exception e) {
            logger.error("试算平衡表生成版导出转换Excel异常: %s", e.getMessage());
            return 0;
        }
    }

210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
    /**
     * 试算平衡表生成版的导出(第二种导出方式)
     * @param citTrialBalanceDto
     * @param response
     * @return
     */
    public int exportTbGeneVerData2(CitTrialBalanceDto citTrialBalanceDto, HttpServletResponse response){
        CitTrialBalanceExample citTbExample = new CitTrialBalanceExample();
        CitTrialBalanceExample.Criteria citTbExampleCriteria = citTbExample.createCriteria();
//            citTbExampleCriteria.andProjectIdEqualTo(citTrialBalanceDto.getProjectId());
        List<CitTrialBalance> citTbList = citTbMapper.selectByExample(citTbExample);
        if(citTbList.size()==0){
            return  0;
        }
        ExportDto exportDto = new ExportDto();
        exportDto.setFileName("试算平衡表生成版");
        exportDto.setTemplateUrl(Constant.citTemplateUrl +  "/citTbGeneVer.xlsx");
        exportDto.setResponse(response);
        exportDto.setList(citTbList);
        exportDto.setRelation(null);
        JxlsUtils.export(exportDto);
        return 1;
    }

234 235 236 237
    /**
     * 试算平衡表生成版的导出(第一种方式)所用到的生成Excel的表头
     * @return
     */
238 239 240 241 242 243 244 245 246 247 248 249 250
    private Map<String, String> generalTbGeneVerHeader() {
        Map<String, String> header = new LinkedHashMap<>();
        header.put("AccountCode","科目代码");
        header.put("AccountDescription","科目说明");

        header.put("AccountingPeriod","期间");
        header.put("DebitAmount","借方发生额");
        header.put("CreditAmount","贷方发生额");
        header.put("BeginningBalance","期初余额");
        header.put("EndingBalance","期末余额");
        return header;
    }

251 252 253 254 255
    /**
     * 获取试算平衡表Mapping版的数据
     * @param citTrialBalanceDto
     * @return
     */
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
    public PageInfo<CitTrialBalanceDto> getTbMappingVerData(CitTrialBalanceDto citTrialBalanceDto) {
        Page page = PageHelper.startPage(citTrialBalanceDto.getPageInfo().getPageIndex(), citTrialBalanceDto.getPageInfo().getPageSize());
        List<CitTrialBalanceDto> citTbList = citTbMapper.getTbMappingData(citTrialBalanceDto);
//        List<CitTrialBalanceDto> citTbDtos = Lists.newArrayList();
//        citTbList.forEach(tb -> {
//            CitTrialBalanceDto citTrialBalanceDtoTemp = new CitTrialBalanceDto();
//            beanUtil.copyProperties(tb, citTrialBalanceDtoTemp);
//            citTbDtos.add(citTrialBalanceDtoTemp);
//        });

        PageInfo<CitTrialBalanceDto> pageInfo =new PageInfo<>(citTbList);
        pageInfo.setTotal(page.getTotal());
        pageInfo.setPageNum(citTrialBalanceDto.getPageInfo().getPageIndex());
        return pageInfo;
    }

272
    /**
273
     * 试算平衡表Mapping版的导出(第一种方式)
274 275 276 277
     * @param citTrialBalanceDto
     * @param os
     * @return
     */
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
    public int exportTbMappingVerData(CitTrialBalanceDto citTrialBalanceDto, OutputStream os) {
        try {
            List<CitTrialBalanceDto> citTbList = citTbMapper.getTbMappingData(citTrialBalanceDto);

            Map<String, String> header = generalTbGeneVerHeader();
            header.put("Attribute","小类");
            List<CitTrialBalanceExportDto> cellList = new ArrayList<>();
            citTbList.forEach(tb -> {
                CitTrialBalanceExportDto d = new CitTrialBalanceExportDto();
                d = beanUtil.copyProperties(tb, d);
                cellList.add(d);
            });
            ExcelUtil.exportExcel(header, cellList, os);
            return cellList.size();
        } catch (Exception e) {
            logger.error("试算平衡表Mapping版导出转换Excel异常: %s", e.getMessage());
            return 0;
        }
    }

    /**
299 300 301
     * 试算平衡表Mapping版的导出(第二种导出方式)
     * @param citTrialBalanceDto
     * @param response
302 303
     * @return
     */
304 305 306 307
    public int exportTbMappingVerData2(CitTrialBalanceDto citTrialBalanceDto, HttpServletResponse response){
        List<CitTrialBalanceDto> citTbList = citTbMapper.getTbMappingData(citTrialBalanceDto);
        if(citTbList.size()==0){
            return  0;
308
        }
309 310 311 312 313 314 315 316
        ExportDto exportDto = new ExportDto();
        exportDto.setFileName("试算平衡表Mapping版");
        exportDto.setTemplateUrl(Constant.citTemplateUrl +  "/citTbGeneMapping.xlsx");
        exportDto.setResponse(response);
        exportDto.setList(citTbList);
        exportDto.setRelation(citTbList.get(0));
        JxlsUtils.export(exportDto);
        return 1;
317 318 319
    }

}