Commit ee24fd66 authored by chase's avatar chase

Merge branch 'dev_mysql' of http://code.tech.tax.asia.pwcinternal.com/root/atms into dev_mysql

parents 2aa794d6 5cd7ea54
...@@ -7,30 +7,35 @@ package pwc.taxtech.atms.common.util; ...@@ -7,30 +7,35 @@ package pwc.taxtech.atms.common.util;
* @Date 3/31/2019 12:35 PM * @Date 3/31/2019 12:35 PM
* Version 1.0 * Version 1.0
**/ **/
import com.google.common.collect.Lists;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@SuppressWarnings("restriction")
public class FileExcelUtil { public class FileExcelUtil {
private static final Logger logger = LoggerFactory.getLogger(FileExcelUtil.class); private static final Logger logger = LoggerFactory.getLogger(FileExcelUtil.class);
/** /**
* 编译下载的文件名 * 编译下载的文件名
*
* @param filename * @param filename
* @param agent * @param agent
* @return * @return
* @throws IOException * @throws IOException
*/ */
public static String encodeDownloadFilename(String filename, String agent)throws IOException { public static String encodeDownloadFilename(String filename, String agent) throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器 if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?" filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8")) + new BASE64Encoder().encode(filename.getBytes("utf-8"))
...@@ -38,50 +43,53 @@ public class FileExcelUtil { ...@@ -38,50 +43,53 @@ public class FileExcelUtil {
filename = filename.replaceAll("\r\n", ""); filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器 } else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," "); filename = filename.replace("+", " ");
} }
return filename; return filename;
} }
/** /**
* 创建文件夹; * 创建文件夹;
*
* @param path * @param path
*/ */
public static void createFile(String path) { public static File createFile(String path) {
File file = new File(path); File file = new File(path);
//判断文件是否存在; //判断文件是否存在;
if (!file.exists()) { if (!file.exists()) {
//创建文件; //创建文件;
file.mkdirs(); file.mkdirs();
} }
return file;
} }
/** /**
* 生成.zip文件; * 生成.zip文件;
*
* @param path * @param path
* @throws IOException * @throws IOException
*/ */
public static ZipOutputStream craeteZipPath(String path) throws IOException{ public static ZipOutputStream craeteZipPath(String path) throws IOException {
ZipOutputStream zipOutputStream = null; ZipOutputStream zipOutputStream = null;
File file = new File(path+DateUtils.nowDateFormat()+".zip"); File file = new File(path + DateUtils.nowDateFormat() + ".zip");
zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file))); zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
File[] files = new File(path).listFiles(); File[] files = new File(path).listFiles();
FileInputStream fileInputStream = null; FileInputStream fileInputStream = null;
byte[] buf = new byte[1024]; byte[] buf = new byte[1024];
int len = 0; int len = 0;
if(files!=null && files.length > 0){ if (files != null && files.length > 0) {
for(File excelFile:files){ for (File excelFile : files) {
String fileName = excelFile.getName(); String fileName = excelFile.getName();
fileInputStream = new FileInputStream(excelFile); fileInputStream = new FileInputStream(excelFile);
//放入压缩zip包中; //放入压缩zip包中;
zipOutputStream.putNextEntry(new ZipEntry(path + "/"+fileName)); zipOutputStream.putNextEntry(new ZipEntry(path + "/" + fileName));
//读取文件; //读取文件;
while((len=fileInputStream.read(buf)) >0){ while ((len = fileInputStream.read(buf)) > 0) {
zipOutputStream.write(buf, 0, len); zipOutputStream.write(buf, 0, len);
} }
//关闭; //关闭;
zipOutputStream.closeEntry(); zipOutputStream.closeEntry();
if(fileInputStream != null){ if (fileInputStream != null) {
fileInputStream.close(); fileInputStream.close();
} }
} }
...@@ -94,8 +102,165 @@ public class FileExcelUtil { ...@@ -94,8 +102,165 @@ public class FileExcelUtil {
} }
/**
* 设置下载excel的响应头信息
*
* @param response
* @param request
* @param fileName
* @throws IOException
*/
public static void setExcelHeadInfo(HttpServletResponse response, HttpServletRequest request, String fileName) {
try {
// 获取客户端浏览器的类型
String agent = request.getHeader("User-Agent");
// 对文件名重新编码
String encodingFileName = FileExcelUtil.encodeDownloadFilename(fileName, agent);
// 告诉客户端允许断点续传多线程连接下载
response.setHeader("Accept-Ranges", "bytes");
//文件后缀
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + encodingFileName);
} catch (IOException e) {
logger.error(Thread.currentThread().getStackTrace()[1].getMethodName() + "发生的异常是: ", e);
throw new RuntimeException(e);
}
}
/**
* 设置下载zip的响应头信息
*
* @param response
* @param fileName 文件名
* @param request
* @throws IOException
*/
public static void setZipDownLoadHeadInfo(HttpServletResponse response, HttpServletRequest request, String fileName) throws IOException {
// 获取客户端浏览器的类型
String agent = request.getHeader("User-Agent");
response.setContentType("application/octet-stream ");
// 表示不能用浏览器直接打开
response.setHeader("Connection", "close");
// 告诉客户端允许断点续传多线程连接下载
response.setHeader("Accept-Ranges", "bytes");
// 对文件名重新编码
String encodingFileName = FileExcelUtil.encodeDownloadFilename(fileName, agent);
response.setHeader("Content-Disposition", "attachment; filename=" + encodingFileName);
}
/**
* 下载excel
*
* @param request
* @param response
* @param fileName
* @param workbook
* @time 2018年6月25日11:47:07
*/
private void downloadExcel(HttpServletRequest request, HttpServletResponse response, String fileName, Workbook workbook) {
//一个流两个头
//设置下载excel的头信息
FileExcelUtil.setExcelHeadInfo(response, request, fileName);
// 写出文件
ServletOutputStream os = null;
try {
os = response.getOutputStream();
workbook.write(os);
} catch (IOException e) {
logger.error(Thread.currentThread().getStackTrace()[1].getMethodName() + "发生的异常是: ", e);
throw new RuntimeException(e);
} finally {
try {
if (os != null) {
os.flush();
os.close();
}
if (workbook != null) {
workbook.close();
}
} catch (Exception e1) {
logger.error(Thread.currentThread().getStackTrace()[1].getMethodName() + "发生的异常是: ", e1);
throw new RuntimeException(e1);
}
}
}
/**
* 生成excel到指定路径
*
* @param wb
* @Param path 文件路径,包括zip文件夹路径
* @throws Exception
*/
public static List<File> generateExcelToPath(Workbook wb, String path) throws Exception {
String[] pathArr = path.split("\\\\");
String zipDir = pathArr[0];
FileExcelUtil.createFile(zipDir);
FileOutputStream fos = null;
List<File> listFile = Lists.newArrayList();
try {
fos = new FileOutputStream(path);
wb.write(fos);
listFile.add(new File(path));
} finally {
if (fos != null) {
fos.flush();
fos.close();
}
if (wb != null) {
wb.close();
}
}
return listFile;
}
/**
* 将批量文件打包下载成zip
*
* @param request
* @param response
* @param zipName 下载的zip名
* @param files 要打包的批量文件
* @param zipPath 生成的zip路径
* @throws Exception
*/
public static synchronized void downloadZip(HttpServletRequest request, HttpServletResponse response, String zipName, List<File> files, String zipPath) throws Exception {
File srcfile[] = new File[files.size()];
File zip = new File(zipPath);
for (int i = 0; i < files.size(); i++) {
srcfile[i] = files.get(i);
}
//生成.zip文件;
FileInputStream inStream = null;
ServletOutputStream os = null;
try {
//设置下载zip的头信息
FileExcelUtil.setZipDownLoadHeadInfo(response, request, zipName);
os = response.getOutputStream();
FileExcelUtil.ZipFiles(srcfile, zip);
inStream = new FileInputStream(zip);
byte[] buf = new byte[4096];
int readLength;
while (((readLength = inStream.read(buf)) != -1)) {
os.write(buf, 0, readLength);
}
} finally {
if (inStream != null) {
inStream.close();
}
if (os != null) {
os.flush();
os.close();
}
deleteDir(zip);
}
}
/** /**
* //压缩文件 * //压缩文件
*
* @param srcfile 要压缩的文件数组 * @param srcfile 要压缩的文件数组
* @param zipfile 生成的zip文件对象 * @param zipfile 生成的zip文件对象
*/ */
...@@ -120,17 +285,18 @@ public class FileExcelUtil { ...@@ -120,17 +285,18 @@ public class FileExcelUtil {
/** /**
* 删除文件夹及文件夹下所有文件 * 删除文件夹及文件夹下所有文件
*
* @param dir * @param dir
* @return * @return
*/ */
public static boolean deleteDir(File dir) { public static boolean deleteDir(File dir) {
if (dir == null || !dir.exists()){ if (dir == null || !dir.exists()) {
return true; return true;
} }
if (dir.isDirectory()) { if (dir.isDirectory()) {
String[] children = dir.list(); String[] children = dir.list();
//递归删除目录中的子目录下 //递归删除目录中的子目录下
for (int i=0; i<children.length; i++) { for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i])); boolean success = deleteDir(new File(dir, children[i]));
if (!success) { if (!success) {
return false; return false;
...@@ -140,70 +306,4 @@ public class FileExcelUtil { ...@@ -140,70 +306,4 @@ public class FileExcelUtil {
// 目录此时为空,可以删除 // 目录此时为空,可以删除
return dir.delete(); return dir.delete();
} }
/**
* 生成html
* @param msg
* @return
*/
public static String getErrorHtml(String msg) {
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<head>");
sb.append("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");
sb.append("</head>");
sb.append("<body>");
sb.append("<div id='errorInfo'> ");
sb.append("</div>");
sb.append("<script>alert('"+msg+"')</script>");
sb.append("</body>");
sb.append("</html>");
return sb.toString();
}
/**
* 设置下载excel的响应头信息
* @param response
* @param request
* @param fileName
* @throws IOException
*/
public static void setExcelHeadInfo(HttpServletResponse response, HttpServletRequest request, String fileName) {
try {
// 获取客户端浏览器的类型
String agent = request.getHeader("User-Agent");
// 对文件名重新编码
String encodingFileName = FileExcelUtil.encodeDownloadFilename(fileName, agent);
// 告诉客户端允许断点续传多线程连接下载
response.setHeader("Accept-Ranges", "bytes");
//文件后缀
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + encodingFileName);
} catch (IOException e) {
logger.error(Thread.currentThread().getStackTrace()[1].getMethodName() +"发生的异常是: ",e);
throw new RuntimeException(e);
}
}
/**
* 设置下载zip的响应头信息
* @param response
* @param fileName 文件名
* @param request
* @throws IOException
*/
public static void setZipDownLoadHeadInfo(HttpServletResponse response, HttpServletRequest request, String fileName) throws IOException {
// 获取客户端浏览器的类型
String agent = request.getHeader("User-Agent");
response.setContentType("application/octet-stream ");
// 表示不能用浏览器直接打开
response.setHeader("Connection", "close");
// 告诉客户端允许断点续传多线程连接下载
response.setHeader("Accept-Ranges", "bytes");
// 对文件名重新编码
String encodingFileName = FileExcelUtil.encodeDownloadFilename(fileName, agent);
response.setHeader("Content-Disposition", "attachment; filename=" + encodingFileName);
}
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ import org.springframework.http.ResponseEntity; ...@@ -8,6 +8,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import pwc.taxtech.atms.common.message.ErrorMessage; import pwc.taxtech.atms.common.message.ErrorMessage;
import pwc.taxtech.atms.common.util.FileExcelUtil;
import pwc.taxtech.atms.constant.enums.EnumServiceType; import pwc.taxtech.atms.constant.enums.EnumServiceType;
import pwc.taxtech.atms.dao.OrganizationMapper; import pwc.taxtech.atms.dao.OrganizationMapper;
import pwc.taxtech.atms.dao.ProjectMapper; import pwc.taxtech.atms.dao.ProjectMapper;
...@@ -26,8 +27,10 @@ import pwc.taxtech.atms.vat.entity.*; ...@@ -26,8 +27,10 @@ import pwc.taxtech.atms.vat.entity.*;
import pwc.taxtech.atms.vat.service.impl.ReportServiceImpl; import pwc.taxtech.atms.vat.service.impl.ReportServiceImpl;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.List; import java.util.List;
...@@ -151,10 +154,10 @@ public class ReportController { ...@@ -151,10 +154,10 @@ public class ReportController {
return reportService.getCellData(reportId, from); return reportService.getCellData(reportId, from);
} }
private static OperationResultDto<ReportDataDto> operationResultDto = null;
@RequestMapping(value = "reportEbitData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @RequestMapping(value = "reportEbitData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public OperationResultDto<ReportDataDto> reportEbitData(@RequestBody RequestParameterDto requestParameterDto) { public OperationResultDto<ReportDataDto> reportEbitData(@RequestBody RequestParameterDto requestParameterDto) {
OperationResultDto operationResultDto = new OperationResultDto();
/*OperationResultDto resultDto = new OperationResultDto(); /*OperationResultDto resultDto = new OperationResultDto();
*//* if (requestParameterDto.getProjectId() == null || requestParameterDto.getReportId() == null) { *//* if (requestParameterDto.getProjectId() == null || requestParameterDto.getReportId() == null) {
resultDto.setResult(false); resultDto.setResult(false);
...@@ -257,14 +260,16 @@ public class ReportController { ...@@ -257,14 +260,16 @@ public class ReportController {
@RequestMapping(value = "doUpload", method = RequestMethod.POST) @RequestMapping(value = "doUpload", method = RequestMethod.POST)
public OperationResultDto doUploadAttach(@RequestParam("fileName") String fileName, MultipartFile file, String remarks, @RequestParam("activeCol") Long activeCol, @RequestParam("activeRow") Long activeRow, @RequestParam("activeTemplateId") String activeTemplateId) { public OperationResultDto doUploadAttach(@RequestParam("fileName") String fileName, MultipartFile file, String remarks, @RequestParam("activeCol") Long activeCol, @RequestParam("activeRow") Long activeRow, @RequestParam("activeTemplateId") String activeTemplateId) {
FileUpload fileUpload = null; FileUpload fileUpload = null;
OperationResultDto operationResultDto = new OperationResultDto();
try{ try{
fileUpload = didiFileUploadService.uploadFile(file, file.getOriginalFilename(), "附件上传"); fileUpload = didiFileUploadService.uploadFile(file, file.getOriginalFilename(), "附件上传");
operationResultDto.setData(reportService.bindPwcAttach(activeCol, activeRow, activeTemplateId, fileUpload, remarks));
operationResultDto.setResultMsg("success");
return operationResultDto;
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
return operationResultDto.error();
} }
operationResultDto.success();
reportService.bindPwcAttach(activeCol, activeRow, activeTemplateId, fileUpload, remarks);
return operationResultDto;
} }
@RequestMapping("loadAttachList") @RequestMapping("loadAttachList")
...@@ -345,11 +350,14 @@ public class ReportController { ...@@ -345,11 +350,14 @@ public class ReportController {
* 批量导出利润表 * 批量导出利润表
*/ */
@RequestMapping("manyExport") @RequestMapping("manyExport")
public OperationResultDto manyExport(@RequestBody RequestParameterDto requestParameterDto) { public OperationResultDto manyExport(@RequestBody RequestParameterDto requestParameterDto, HttpServletResponse response, HttpServletRequest request) {
OperationResultDto operationResultDto = new OperationResultDto(); OperationResultDto operationResultDto = new OperationResultDto();
String zipName = "利润表"; String zipName = "利润表";
try { try {
reportService.manyExport(requestParameterDto, zipName); String zipPath = "/zipDir";
//生成zip文件夹
FileExcelUtil.createFile(zipPath);
reportService.manyExport(requestParameterDto, zipName,request, response, zipPath);
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -357,6 +365,7 @@ public class ReportController { ...@@ -357,6 +365,7 @@ public class ReportController {
return operationResultDto; return operationResultDto;
} }
/** /**
* 将spread序列化字符串保存到数据库 * 将spread序列化字符串保存到数据库
*/ */
......
...@@ -261,7 +261,7 @@ public class CitReportServiceImpl extends BaseService { ...@@ -261,7 +261,7 @@ public class CitReportServiceImpl extends BaseService {
periodCellTemplateConfigDtos.forEach(a -> { periodCellTemplateConfigDtos.forEach(a -> {
workbook4Validate.getSheetAt(a.getSheetNumber() - 1).getRow(a.getRowNumber()).getCell(a.getColNumber()).setCellFormula(a.getParsedValidation()); workbook4Validate.getSheetAt(a.getSheetNumber() - 1).getRow(a.getRowNumber()).getCell(a.getColNumber()).setCellFormula(a.getParsedValidation());
}); });
reportGenerator.addFunctionsAndContext(workbook4Validate, functions, reportGenerator.initContext(resources, periodParam)); reportGenerator.addFunctionsAndContext(workbook4Validate, functions, reportGenerator.initContext(resources, periodParam),true);
FormulaEvaluator validateEvaluator = workbook4Validate.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator validateEvaluator = workbook4Validate.getCreationHelper().createFormulaEvaluator();
validateEvaluator.evaluateAll(); validateEvaluator.evaluateAll();
//todo: 4.then save the validation result to cellData table //todo: 4.then save the validation result to cellData table
......
...@@ -591,16 +591,26 @@ public class ReportGeneratorImpl { ...@@ -591,16 +591,26 @@ public class ReportGeneratorImpl {
* *
* @param workbook 工作簿 * @param workbook 工作簿
*/ */
public void addFunctionsAndContext(Workbook workbook, String[] functions, FormulaContext formulaContext) { public void addFunctionsAndContext(Workbook workbook, String[] functions, FormulaContext formulaContext, Boolean isValidate) {
FreeRefFunction[] functionImpls = {new SGSR(formulaContext), new FSJZ(formulaContext), new ND(formulaContext), FreeRefFunction[] functionImpls = new FreeRefFunction[0];
if (!isValidate) {
functionImpls = new FreeRefFunction[]{new SGSR(formulaContext), new FSJZ(formulaContext), new ND(formulaContext),
new BB(formulaContext), new XXFP(formulaContext), new GZSD(formulaContext), new PC(formulaContext) new BB(formulaContext), new XXFP(formulaContext), new GZSD(formulaContext), new PC(formulaContext)
, new JXFPMX(formulaContext), new JXFP(formulaContext), new PSUM(formulaContext), new DFFS(formulaContext), , new JXFPMX(formulaContext), new JXFP(formulaContext), new PSUM(formulaContext), new DFFS(formulaContext),
new JFFS(formulaContext), new WPSR(formulaContext), new WPNAME(formulaContext), new WPTYPE(formulaContext), new JFFS(formulaContext), new WPSR(formulaContext), new WPNAME(formulaContext), new WPTYPE(formulaContext),
new SUM2(formulaContext), new RSUMIF(formulaContext), new SUM(formulaContext),new KPSR(formulaContext),new TBM(formulaContext)}; new SUM2(formulaContext), new RSUMIF(formulaContext), new SUM(formulaContext), new KPSR(formulaContext),new TBM(formulaContext)};
} else {
functionImpls = new FreeRefFunction[]{new SGSR(formulaContext), new FSJZ(formulaContext), new ND(formulaContext),
new pwc.taxtech.atms.vat.service.impl.report.functions.validation.BB(formulaContext), new XXFP(formulaContext), new GZSD(formulaContext), new PC(formulaContext)
, new JXFPMX(formulaContext), new JXFP(formulaContext), new PSUM(formulaContext), new DFFS(formulaContext),
new JFFS(formulaContext), new WPSR(formulaContext), new WPNAME(formulaContext), new WPTYPE(formulaContext),
new SUM2(formulaContext), new RSUMIF(formulaContext), new SUM(formulaContext), new KPSR(formulaContext),new TBM(formulaContext)};
}
UDFFinder udfs = new DefaultUDFFinder(functions, functionImpls); UDFFinder udfs = new DefaultUDFFinder(functions, functionImpls);
UDFFinder udfToolpack = new AggregatingUDFFinder(udfs); UDFFinder udfToolpack = new AggregatingUDFFinder(udfs);
workbook.addToolPack(udfToolpack); workbook.addToolPack(udfToolpack);
} }
/** /**
* 为CIT复制的一份注册自定义公式,和上面的addFunctionsAndContext方法基本相同 * 为CIT复制的一份注册自定义公式,和上面的addFunctionsAndContext方法基本相同
* CIT 注册所有的自定义方法到工作簿 * CIT 注册所有的自定义方法到工作簿
......
...@@ -6,7 +6,6 @@ import com.github.pagehelper.PageHelper; ...@@ -6,7 +6,6 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import javassist.expr.NewArray;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap; import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -21,19 +20,21 @@ import org.springframework.beans.BeanUtils; ...@@ -21,19 +20,21 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import pwc.taxtech.atms.analysis.entity.AnalysisActualTaxReturn;
import pwc.taxtech.atms.common.CommonUtils; import pwc.taxtech.atms.common.CommonUtils;
import pwc.taxtech.atms.common.POIUtil; import pwc.taxtech.atms.common.POIUtil;
import pwc.taxtech.atms.common.message.ErrorMessage; import pwc.taxtech.atms.common.message.ErrorMessage;
import pwc.taxtech.atms.common.util.DataUtil; import pwc.taxtech.atms.common.util.DataUtil;
import pwc.taxtech.atms.common.util.FileExcelUtil;
import pwc.taxtech.atms.common.util.MyAsserts; import pwc.taxtech.atms.common.util.MyAsserts;
import pwc.taxtech.atms.common.util.SpringContextUtil; import pwc.taxtech.atms.common.util.SpringContextUtil;
import pwc.taxtech.atms.constant.Constant; import pwc.taxtech.atms.constant.Constant;
import pwc.taxtech.atms.constant.enums.*; import pwc.taxtech.atms.constant.enums.*;
import pwc.taxtech.atms.dao.*; import pwc.taxtech.atms.dao.*;
import pwc.taxtech.atms.dpo.ReportDto; import pwc.taxtech.atms.dpo.ReportDto;
import pwc.taxtech.atms.dto.*; import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.PeriodReportDto;
import pwc.taxtech.atms.dto.ReportAttachDto;
import pwc.taxtech.atms.dto.RequestParameterDto;
import pwc.taxtech.atms.dto.didiFileUpload.DidiFileIUploadParam; import pwc.taxtech.atms.dto.didiFileUpload.DidiFileIUploadParam;
import pwc.taxtech.atms.dto.didiFileUpload.DidiFileUploadDetailResult; import pwc.taxtech.atms.dto.didiFileUpload.DidiFileUploadDetailResult;
import pwc.taxtech.atms.dto.vatdto.*; import pwc.taxtech.atms.dto.vatdto.*;
...@@ -51,6 +52,8 @@ import pwc.taxtech.atms.vat.entity.*; ...@@ -51,6 +52,8 @@ import pwc.taxtech.atms.vat.entity.*;
import pwc.taxtech.atms.vat.service.impl.report.functions.FormulaHelper; import pwc.taxtech.atms.vat.service.impl.report.functions.FormulaHelper;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URISyntaxException; import java.net.URISyntaxException;
...@@ -68,7 +71,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -68,7 +71,7 @@ public class ReportServiceImpl extends BaseService {
private final static Logger logger = LoggerFactory.getLogger(ReportServiceImpl.class); private final static Logger logger = LoggerFactory.getLogger(ReportServiceImpl.class);
private BlockingQueue<PeriodJob> queue = new LinkedBlockingQueue<>(); private BlockingQueue<PeriodJob> queue = new LinkedBlockingQueue<>();
private final static String[] functions = {"SGSR", "FSJZ", "ND", "BB", "XXFP", "GZSD", "PC", "JXFPMX", private final static String[] functions = {"SGSR", "FSJZ", "ND", "BB", "XXFP", "GZSD", "PC", "JXFPMX",
"JXFP", "PSUM", "DFFS", "JFFS", "WPSR", "WPNAME", "WPTYPE", "SUM2", "RSUMIF", "SUM", "KPSR","TBM"}; "JXFP", "PSUM", "DFFS", "JFFS", "WPSR", "WPNAME", "WPTYPE", "SUM2", "RSUMIF", "SUM", "KPSR", "TBM"};
@Autowired @Autowired
private ReportGeneratorImpl reportGenerator; private ReportGeneratorImpl reportGenerator;
...@@ -977,13 +980,13 @@ public class ReportServiceImpl extends BaseService { ...@@ -977,13 +980,13 @@ public class ReportServiceImpl extends BaseService {
Workbook workbook = reportGenerator.createWorkBookByPeriodTemplate(resources.getPeriodTemplates(), genJob); Workbook workbook = reportGenerator.createWorkBookByPeriodTemplate(resources.getPeriodTemplates(), genJob);
reportGenerator.addFunctionsAndContext(workbook, functions, reportGenerator.initContext(resources, periodParam)); reportGenerator.addFunctionsAndContext(workbook, functions, reportGenerator.initContext(resources, periodParam),false);
reportGenerator.setConfigAndDataToWorkBook(workbook, resources); reportGenerator.setConfigAndDataToWorkBook(workbook, resources);
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateAll(); evaluator.evaluateAll();
reportGenerator.updateWorkbookCaclsValueToDb(projectId, periodParam, workbook, resources, isMergeManualData, genJob); reportGenerator.updateWorkbookCaclsValueToDb(projectId, periodParam, workbook, resources, isMergeManualData, genJob);
//===============================================start validation compute========================================================== //===============================================start validation compute===========================================================================================================
//todo: 1.get the data from workbook, then put the data into new workbook //todo: 1.get the data from workbook, then put the data into new workbook
Workbook workbook4Validate = reportGenerator.createWorkBookByPeriodTemplate(resources.getPeriodTemplates(), genJob); Workbook workbook4Validate = reportGenerator.createWorkBookByPeriodTemplate(resources.getPeriodTemplates(), genJob);
copyDataToWorkbook4Validate(workbook, workbook4Validate); copyDataToWorkbook4Validate(workbook, workbook4Validate);
...@@ -1019,7 +1022,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -1019,7 +1022,7 @@ public class ReportServiceImpl extends BaseService {
periodCellTemplateConfigDtos.forEach(a -> { periodCellTemplateConfigDtos.forEach(a -> {
workbook4Validate.getSheetAt(a.getSheetNumber() - 1).getRow(a.getRowNumber()).getCell(a.getColNumber()).setCellFormula(a.getParsedValidation()); workbook4Validate.getSheetAt(a.getSheetNumber() - 1).getRow(a.getRowNumber()).getCell(a.getColNumber()).setCellFormula(a.getParsedValidation());
}); });
reportGenerator.addFunctionsAndContext(workbook4Validate, functions, reportGenerator.initContext(resources, periodParam)); reportGenerator.addFunctionsAndContext(workbook4Validate, functions, reportGenerator.initContext(resources, periodParam),true);
FormulaEvaluator validateEvaluator = workbook4Validate.getCreationHelper().createFormulaEvaluator(); FormulaEvaluator validateEvaluator = workbook4Validate.getCreationHelper().createFormulaEvaluator();
validateEvaluator.evaluateAll(); validateEvaluator.evaluateAll();
//todo: 4.then save the validation result to cellData table //todo: 4.then save the validation result to cellData table
...@@ -1035,7 +1038,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -1035,7 +1038,7 @@ public class ReportServiceImpl extends BaseService {
periodCellDataMapper.updateByPrimaryKey(cellData.get()); periodCellDataMapper.updateByPrimaryKey(cellData.get());
} }
}); });
//===============================================end validation compute============================================================== //===============================================end validation compute============================================================================================================
setStatus(genJob, STATUS_END); setStatus(genJob, STATUS_END);
periodJobMapper.updateByPrimaryKey(genJob); periodJobMapper.updateByPrimaryKey(genJob);
} catch (Exception e) { } catch (Exception e) {
...@@ -2213,11 +2216,10 @@ public class ReportServiceImpl extends BaseService { ...@@ -2213,11 +2216,10 @@ public class ReportServiceImpl extends BaseService {
} }
@Resource @Resource
private PwcReportAttachMapper pwcReportAttachMapper; private PwcReportAttachMapper pwcReportAttachMapper;
public void bindPwcAttach(Long activeCol, Long activeRow, String activeTemplateId, FileUpload file, String remarks) { public PwcReportAttach bindPwcAttach(Long activeCol, Long activeRow, String activeTemplateId, FileUpload file, String remarks) {
PwcReportAttach pwcReportAttach = new PwcReportAttach(); PwcReportAttach pwcReportAttach = new PwcReportAttach();
pwcReportAttach.setCol(activeCol); pwcReportAttach.setCol(activeCol);
pwcReportAttach.setCreateTime(file.getCreateTime()); pwcReportAttach.setCreateTime(file.getCreateTime());
...@@ -2230,6 +2232,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -2230,6 +2232,7 @@ public class ReportServiceImpl extends BaseService {
pwcReportAttach.setRemarks(remarks); pwcReportAttach.setRemarks(remarks);
pwcReportAttachMapper.insert(pwcReportAttach); pwcReportAttachMapper.insert(pwcReportAttach);
System.out.println("==>>>附件绑定成功"); System.out.println("==>>>附件绑定成功");
return pwcReportAttach;
} }
public List<PwcReportAttach> loadAttachList(ReportAttachDto param) { public List<PwcReportAttach> loadAttachList(ReportAttachDto param) {
...@@ -2377,7 +2380,7 @@ public class ReportServiceImpl extends BaseService { ...@@ -2377,7 +2380,7 @@ public class ReportServiceImpl extends BaseService {
* *
* @param requestParameterDto * @param requestParameterDto
*/ */
public void manyExport(RequestParameterDto requestParameterDto, String zipFileName) throws URISyntaxException { public void manyExport(RequestParameterDto requestParameterDto, String zipFileName, HttpServletRequest request, HttpServletResponse response, String zipPath) throws URISyntaxException {
try { try {
FileOutputStream out = new FileOutputStream(zipFileName);//要输出的文件名字 FileOutputStream out = new FileOutputStream(zipFileName);//要输出的文件名字
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
...@@ -2395,7 +2398,6 @@ public class ReportServiceImpl extends BaseService { ...@@ -2395,7 +2398,6 @@ public class ReportServiceImpl extends BaseService {
filePath = this.getClass().getResource("").toURI().getPath(); filePath = this.getClass().getResource("").toURI().getPath();
String tempPath = filePath.substring(0, filePath.indexOf("classes") + "\\classes".length()); String tempPath = filePath.substring(0, filePath.indexOf("classes") + "\\classes".length());
templateFile = new File(tempPath + templatePath); templateFile = new File(tempPath + templatePath);
OutputStream out = null;
//获取当前期间进行过保存更新的机构的数据 //获取当前期间进行过保存更新的机构的数据
EbitCellDataExample example = new EbitCellDataExample(); EbitCellDataExample example = new EbitCellDataExample();
EbitCellDataExample.Criteria criteria = example.createCriteria(); EbitCellDataExample.Criteria criteria = example.createCriteria();
...@@ -2449,10 +2451,11 @@ public class ReportServiceImpl extends BaseService { ...@@ -2449,10 +2451,11 @@ public class ReportServiceImpl extends BaseService {
} }
} }
workbooksList.add(workbook); workbooksList.add(workbook);
//将workbook生成file文件
String path = "\\\\zipDir\\\\" + requestParameterDto.getPeriod() + Math.random() + "利润表";
FileExcelUtil.downloadZip(request, response, zipFileName, FileExcelUtil.generateExcelToPath(workbook, path), zipPath);
} }
//将workbook转成流 //将workbook转成流
/* ByteArrayOutputStream bos = new ByteArrayOutputStream(); /* ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos); workbook.write(bos);
......
...@@ -24,7 +24,7 @@ public class FunctionBase { ...@@ -24,7 +24,7 @@ public class FunctionBase {
, new BigDecimal("0.11"), new BigDecimal("0.06"), new BigDecimal("0.05"), new BigDecimal("0.03")}; , new BigDecimal("0.11"), new BigDecimal("0.06"), new BigDecimal("0.05"), new BigDecimal("0.03")};
protected FormulaContext formulaContext; protected FormulaContext formulaContext;
private static Logger LOGGER = LoggerFactory.getLogger(FunctionBase.class); private static Logger LOGGER = LoggerFactory.getLogger(FunctionBase.class);
final FormulaAgent agent; public final FormulaAgent agent;
public FunctionBase(FormulaContext formulaContext) { public FunctionBase(FormulaContext formulaContext) {
this.formulaContext = formulaContext; this.formulaContext = formulaContext;
......
...@@ -5,10 +5,13 @@ import org.apache.poi.ss.formula.eval.NumberEval; ...@@ -5,10 +5,13 @@ import org.apache.poi.ss.formula.eval.NumberEval;
import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.eval.ValueEval;
import org.apache.poi.ss.formula.functions.FreeRefFunction; import org.apache.poi.ss.formula.functions.FreeRefFunction;
import pwc.taxtech.atms.common.util.SpringContextUtil; import pwc.taxtech.atms.common.util.SpringContextUtil;
import pwc.taxtech.atms.constant.enums.FormulaDataSourceDetailType;
import pwc.taxtech.atms.dto.vatdto.RSUMIFParasBo;
import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock; import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock;
import pwc.taxtech.atms.vat.service.impl.FormulaAgent;
import java.util.Calendar; import java.math.BigDecimal;
import java.util.Date; import java.util.*;
/// <summary> /// <summary>
...@@ -26,6 +29,7 @@ public class ND extends FunctionBase implements FreeRefFunction { ...@@ -26,6 +29,7 @@ public class ND extends FunctionBase implements FreeRefFunction {
@Override @Override
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) { public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
List<Object> dataSource = new ArrayList<>();
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
Date creatTime = calendar.getTime(); Date creatTime = calendar.getTime();
int value = getIntParam(args[0], ec); int value = getIntParam(args[0], ec);
...@@ -34,7 +38,7 @@ public class ND extends FunctionBase implements FreeRefFunction { ...@@ -34,7 +38,7 @@ public class ND extends FunctionBase implements FreeRefFunction {
String formulaExpression = "ND(" + value + ")"; String formulaExpression = "ND(" + value + ")";
value = value + currentYear; value = value + currentYear;
logger.debug(formulaExpression); logger.debug(formulaExpression);
PeriodFormulaBlock periodFormulaBlock = new PeriodFormulaBlock(); /* PeriodFormulaBlock periodFormulaBlock = new PeriodFormulaBlock();
periodFormulaBlock.setId(SpringContextUtil.distributedIdService.nextId()); periodFormulaBlock.setId(SpringContextUtil.distributedIdService.nextId());
periodFormulaBlock.setPeriod(formulaContext.getPeriod()); periodFormulaBlock.setPeriod(formulaContext.getPeriod());
periodFormulaBlock.setReportId(0L); periodFormulaBlock.setReportId(0L);
...@@ -45,7 +49,12 @@ public class ND extends FunctionBase implements FreeRefFunction { ...@@ -45,7 +49,12 @@ public class ND extends FunctionBase implements FreeRefFunction {
periodFormulaBlock.setCreateTime(creatTime); periodFormulaBlock.setCreateTime(creatTime);
periodFormulaBlock.setUpdateTime(creatTime); periodFormulaBlock.setUpdateTime(creatTime);
periodFormulaBlock.setUpdateBy("Admin"); periodFormulaBlock.setUpdateBy("Admin");
SpringContextUtil.formulaBlockMapper.insertSelective(periodFormulaBlock); SpringContextUtil.formulaBlockMapper.insertSelective(periodFormulaBlock);*/
Long dataSourceId = saveDataSource(ec, Collections.singletonList(dataSource),
FormulaDataSourceDetailType.AssetDetailDataSourceDto,
new BigDecimal(value), formulaContext.getPeriod(), formulaContext.getReportTemplateGroupId(), formulaContext.getProjectId());
saveFormulaBlock(0, ec, formulaExpression, new BigDecimal(value), dataSourceId, formulaContext.getProjectId());
return new NumberEval(value); return new NumberEval(value);
} }
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import pwc.taxtech.atms.constant.enums.FormulaDataSourceDetailType; ...@@ -9,6 +9,7 @@ import pwc.taxtech.atms.constant.enums.FormulaDataSourceDetailType;
import pwc.taxtech.atms.constant.enums.FormulaDataSourceType; import pwc.taxtech.atms.constant.enums.FormulaDataSourceType;
import pwc.taxtech.atms.dto.TableRule; import pwc.taxtech.atms.dto.TableRule;
import pwc.taxtech.atms.dto.vatdto.RSUMIFParasBo; import pwc.taxtech.atms.dto.vatdto.RSUMIFParasBo;
import pwc.taxtech.atms.dto.vatdto.ReportCellDataSourceDto;
import pwc.taxtech.atms.dto.vatdto.ReportCellTableSUMIFDataSourceDto; import pwc.taxtech.atms.dto.vatdto.ReportCellTableSUMIFDataSourceDto;
import pwc.taxtech.atms.exception.Exceptions; import pwc.taxtech.atms.exception.Exceptions;
import pwc.taxtech.atms.vat.service.impl.FormulaAgent; import pwc.taxtech.atms.vat.service.impl.FormulaAgent;
......
package pwc.taxtech.atms.vat.service.impl.report.functions.validation;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.formula.OperationEvaluationContext;
import org.apache.poi.ss.formula.eval.NumberEval;
import org.apache.poi.ss.formula.eval.StringEval;
import org.apache.poi.ss.formula.eval.ValueEval;
import org.apache.poi.ss.formula.functions.FreeRefFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pwc.taxtech.atms.common.util.MyAsserts;
import pwc.taxtech.atms.dpo.CellTemplatePerGroupDto;
import pwc.taxtech.atms.dto.vatdto.BBParasBo;
import pwc.taxtech.atms.dto.vatdto.CurrentPeriodBo;
import pwc.taxtech.atms.dto.vatdto.ReportCellDataSourceDto;
import pwc.taxtech.atms.entity.Project;
import pwc.taxtech.atms.exception.Exceptions;
import pwc.taxtech.atms.exception.FormulaException;
import pwc.taxtech.atms.vat.entity.PeriodCellData;
import pwc.taxtech.atms.vat.entity.PeriodDataSource;
import pwc.taxtech.atms.vat.service.impl.report.functions.FormulaContext;
import pwc.taxtech.atms.vat.service.impl.report.functions.FunctionBase;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class BB extends FunctionBase implements FreeRefFunction {
static final Logger LOGGER = LoggerFactory.getLogger(BB.class);
final static ValueEval defaultEval = new StringEval("0");
final static BigDecimal defaultBigDecimal = new BigDecimal("0");
public BB(FormulaContext context) {
super(context);
}
@Override
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
try {
return wrapExceptionEval(args, ec);
} catch (Exception e) {
if (e instanceof FormulaException)
LOGGER.warn("Formula Exception || {}", e.getMessage());
e.printStackTrace();
return defaultEval;
}
}
public ValueEval wrapExceptionEval(ValueEval[] args, OperationEvaluationContext ec) throws Exception {
List<Object> ds = new ArrayList<>();
return new NumberEval(bb(new BBParasBo(args, ec), ec, ds, null).doubleValue());
}
public BigDecimal bb(BBParasBo bo, OperationEvaluationContext ec, List<Object> dataSource, BBParasBo rootBo) throws Exception {
CurrentPeriodBo curPeriod = CurrentPeriodBo.getPeriod(bo.getPeriod().intValue(), formulaContext.getPeriod());
curPeriod.fixedCurYear(getYear(bo.getYear()));
ReportCellDataSourceDto nullCellDto = ReportCellDataSourceDto.nullDataSource(bo, curPeriod);
dataSource.add(nullCellDto);
BigDecimal cellValue = BigDecimal.ZERO;
try {
if (bo.getPeriod().intValue() == 99) {
dataSource.clear();
BigDecimal returnEval = defaultBigDecimal;
if (formulaContext.getPeriod() <= 1) {
return defaultBigDecimal;
}
//如果是当年取到当期截至,往年取12期
for (int p = 1; p <= (curPeriod.getCurYear()==formulaContext.getYear()?formulaContext.getPeriod():12); p++) {
try {
returnEval = returnEval.add(bb(new BBParasBo(bo, p, curPeriod.getCurYear()), ec, dataSource, bo));
} catch (Exception e) {
if (e instanceof FormulaException) {
LOGGER.warn("Formula Exception || {}", e.getMessage());
}
}
}
cellValue = returnEval;
return cellValue;
}
List<CellTemplatePerGroupDto> cellTemplateDataList;
Project project = null;
if (curPeriod.getCurYear() != formulaContext.getYear()) {
project = agent.getFixedProject(formulaContext.getProjectId(), curPeriod.getCurYear());
// MyAsserts.assertNotNull(project, Exceptions.PROJECT_NOT_FOUND);
if(project == null){
return cellValue;
}
cellTemplateDataList = agent.getCellTemplateGroupDto(formulaContext.getReportTemplateGroupId(),
project.getId(), bo.getReportCode(), bo.getRowIndex() - 1, bo.getColumnIndex() - 1, curPeriod.getCurPeriod());
} else {
cellTemplateDataList = agent.getCellTemplateGroupDto(formulaContext.getReportTemplateGroupId(),
formulaContext.getProjectId(), bo.getReportCode(), bo.getRowIndex() - 1, bo.getColumnIndex() - 1, curPeriod.getCurPeriod());
}
// MyAsserts.assertNotEmpty(cellTemplateDataList, Exceptions.BB_CELL_TEMP_NULL);
if(CollectionUtils.isEmpty(cellTemplateDataList)){
return cellValue;
}
CellTemplatePerGroupDto cellTemplateData = cellTemplateDataList.get(0);
nullCellDto.fixedWithGroup(cellTemplateData);
//当年当期
if ((bo.getPeriod().intValue() == 0 && bo.getYear().intValue() == 0)||
(bo.getYear().equals(formulaContext.getYear())&&bo.getPeriod().equals(formulaContext.getPeriod()))) {
int index = ec.getWorkbook().getSheetIndex(bo.getReportCode());
cellValue = getCellValue(index, ec, formulaContext, agent, bo.getRowIndex() - 1, bo.getColumnIndex() - 1,
Long.parseLong(cellTemplateData.getCellTemplateId()));
nullCellDto.extractFromGroup(bo, formulaContext.getPeriod(), formulaContext.getYear(), cellTemplateData);
nullCellDto.setAmount(cellValue);
return cellValue;
}
PeriodCellData cellData = null;
String projectId = agent.getPastProjectId(curPeriod.getCurYear(),
formulaContext.getOrganizationId());
MyAsserts.assertNotEmpty(projectId, Exceptions.PROJECT_EMPTY);
cellData = agent.getCellData(cellTemplateData.getReportTemplateId(),
cellTemplateData.getCellTemplateId(), curPeriod.getCurPeriod(), project==null?formulaContext.getProjectId():project.getId());
List<PeriodDataSource> dss = agent.queryManualDataSource(Long.parseLong(cellTemplateData.getCellTemplateId()),
project==null?formulaContext.getProjectId():project.getId(), bo.getPeriod());
nullCellDto.extractFromGroup(bo, curPeriod, cellData, cellTemplateData);
if (cellData.getData() == null && !dss.isEmpty()) {
cellValue = dss.get(0).getAmount();
} else if (cellData.getData() != null && dss.isEmpty()) {
cellValue = new BigDecimal(cellData.getData()).setScale(4,
BigDecimal.ROUND_HALF_DOWN);
} else if (cellData.getData() != null && !dss.isEmpty()) {
cellValue = dss.get(0).getAmount().add(new BigDecimal(cellData.getData()).setScale(4,
BigDecimal.ROUND_HALF_DOWN));
} else throw Exceptions.BB_CELL_DATA_NULL;
nullCellDto.setAmount(cellValue);
if (rootBo != null) {
rootBo.putPeriodCellTempate(curPeriod.getCurPeriod(), Long.parseLong(cellTemplateData.getCellTemplateId()));
} else {
bo.putPeriodCellTempate(curPeriod.getCurPeriod(), Long.parseLong(cellTemplateData.getCellTemplateId()));
}
LOGGER.debug("cell static value ");
return cellValue;
} catch (Exception e) {
logger.warn("[BB_Exception] some error {}", bo.toString());
throw e;
} finally {
if (rootBo == null) {
LOGGER.warn("[BB_Exception] error for bb cacls for {} and current for {}", bo.toString(), curPeriod.toString());
// Long dataSourceId = saveDataSource(ec, dataSource, FormulaDataSourceDetailType.ReportCellDataSourceDto,
// cellValue, formulaContext.getPeriod(),
// formulaContext.getReportTemplateGroupId(), bo.getColumnIndex() - 1, bo.getRowIndex() - 1,
// formulaContext.getProjectId());
// saveFormulaBlock(formulaContext.getPeriod(), ec,
// bo.expression(), cellValue, dataSourceId, formulaContext.getProjectId());
}
}
}
}
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<!--@Html.AntiForgeryToken()--> <!--@Html.AntiForgeryToken()-->
<div class="wrapper"> <div class="wrapper">
<app-nav></app-nav> <app-nav></app-nav>
<div class="page-wrapper" style="position:relative;overflow-x:hidden;margin-top:55px"> <div class="page-wrapper" style="position:relative;overflow:scroll;margin-top:55px">
<div class="main-contents" ui-view></div> <div class="main-contents" ui-view></div>
<div class="data-import-contents" ui-view="importContent"></div><!--style="display: none"--> <div class="data-import-contents" ui-view="importContent"></div><!--style="display: none"-->
</div> </div>
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<!--Report SpreadJS--> <!--Report SpreadJS-->
<div class="row" style=" height: 71px; background: #ccc;"> <div class="row" style=" height: 71px; background: #ccc;">
<div class="col-sm-7" style=" margin-top: 20px;"> <div class="col-sm-7" style=" margin-top: 20px;">
<div class="col-sm-6"> <div class="col-sm-8">
<span class="text-bold" translate="SelectedOrganization" style=" top: -11px; position: relative;">:</span> <span class="text-bold" translate="SelectedOrganization" style=" top: -11px; position: relative; width: 320px;">:</span>
<!-- <div id="dx-select-industry" class="tab-content-select industry " style=" display: inline-block;" <!-- <div id="dx-select-industry" class="tab-content-select industry " style=" display: inline-block;"
dx-select-box="dataSourceIndustryList" dx-item-alias="itemObj"> dx-select-box="dataSourceIndustryList" dx-item-alias="itemObj">
<div data-options="dxTemplate: { name: 'orgList' }" class="dx-item-content dx-list-item-content" <div data-options="dxTemplate: { name: 'orgList' }" class="dx-item-content dx-list-item-content"
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</div>--> </div>-->
<div dx-tag-box="selectOrgOptions" style="width: 340px;display: inline-block"></div> <div dx-tag-box="selectOrgOptions" style="width: 340px;display: inline-block"></div>
</div> </div>
<div class="col-sm-6" class="dateClass"> <div class="col-sm-4" class="dateClass">
<span class="text-bold" translate="InvoiceQJ">:</span> <span class="text-bold" translate="InvoiceQJ">:</span>
<div style=" display: inline-block;"> <div style=" display: inline-block;">
<input type="text" id="ebitDatepacker" class="datepicker" style="width:120px;height: 34px;" <input type="text" id="ebitDatepacker" class="datepicker" style="width:120px;height: 34px;"
......
...@@ -2502,7 +2502,7 @@ ...@@ -2502,7 +2502,7 @@
{ {
caption: '操作', cellTemplate: function (container, options) { caption: '操作', cellTemplate: function (container, options) {
try { try {
$('<button type="button" class="btn btn-in-grid" onclick = "deleteAttach(' + options.data.id + ')"><i class="material-icons middle" style="vertical-align: text-bottom">delete</i>删除</button>&nbsp;&nbsp;') $('<button type="button" class="btn btn-in-grid" style="margin-top: -11px;" onclick = "deleteAttach(' + options.data.id + ')"><i class="material-icons middle" style="vertical-align: text-bottom">delete</i>删除</button>&nbsp;&nbsp;')
.appendTo(container); .appendTo(container);
} }
catch (e) { catch (e) {
...@@ -2665,10 +2665,9 @@ ...@@ -2665,10 +2665,9 @@
console.log('progress: ' + progressPercentage + '% '); console.log('progress: ' + progressPercentage + '% ');
}).success(function (data, status, headers, config) { }).success(function (data, status, headers, config) {
if (data.resultMsg) { if (data.resultMsg) {
SweetAlert.error(data.resultMsg) SweetAlert.info(data.resultMsg)
return;
}
refreshAttachData(data); refreshAttachData(data);
}
}).error(function (data, status, headers, config) { }).error(function (data, status, headers, config) {
$('#addCellAttachmentContainer').modal('hide'); $('#addCellAttachmentContainer').modal('hide');
SweetAlert.error(status + '错误' + ",上传失败") SweetAlert.error(status + '错误' + ",上传失败")
......
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
<!--{{'ModelAnalysisResults' | translate}}</span>--> <!--{{'ModelAnalysisResults' | translate}}</span>-->
<span ng-show="detail.validationErrorList && detail.validationErrorList.length > 0" ng-model="tabType" <span ng-show="detail.validationErrorList && detail.validationErrorList.length > 0" ng-model="tabType"
uib-btn-radio="3"><i class="fa fa-exclamation-circle red-color"></i>{{'ReportCheckResult' | translate}}</span> uib-btn-radio="3"><i class="fa fa-exclamation-circle red-color"></i>{{'ReportCheckResult' | translate}}</span>
<span ng-model="tabType" uib-btn-radio="4">{{'cellComment'|translate}}</span> <!-- <span ng-model="tabType" uib-btn-radio="4">{{'cellComment'|translate}}</span>-->
<span ng-model="tabType" uib-btn-radio="5" ng-click = "loadAttach()">{{'RelatedAttach'|translate}} dsdsdsdssd</span> <span ng-model="tabType" uib-btn-radio="5" ng-click = "loadAttach()">{{'RelatedAttach'|translate}} </span>
</div> </div>
<div class="content-info" ng-show="tabType === 1"> <div class="content-info" ng-show="tabType === 1">
......
...@@ -2514,10 +2514,9 @@ ...@@ -2514,10 +2514,9 @@
console.log('progress: ' + progressPercentage + '% '); console.log('progress: ' + progressPercentage + '% ');
}).success(function (data, status, headers, config) { }).success(function (data, status, headers, config) {
if (data.resultMsg) { if (data.resultMsg) {
SweetAlert.error(data.resultMsg) SweetAlert.info(data.resultMsg)
return;
}
refreshAttachData(data); refreshAttachData(data);
}
}).error(function (data, status, headers, config) { }).error(function (data, status, headers, config) {
$('#addCellAttachmentContainer').modal('hide'); $('#addCellAttachmentContainer').modal('hide');
SweetAlert.error(status + '错误' + ",上传失败") SweetAlert.error(status + '错误' + ",上传失败")
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<!--{{'ModelAnalysisResults' | translate}}</span>--> <!--{{'ModelAnalysisResults' | translate}}</span>-->
<span ng-show="detail.validationErrorList && detail.validationErrorList.length > 0" ng-model="tabType" <span ng-show="detail.validationErrorList && detail.validationErrorList.length > 0" ng-model="tabType"
uib-btn-radio="3"><i class="fa fa-exclamation-circle red-color"></i>{{'ReportCheckResult' | translate}}</span> uib-btn-radio="3"><i class="fa fa-exclamation-circle red-color"></i>{{'ReportCheckResult' | translate}}</span>
<span ng-model="tabType" uib-btn-radio="4">{{'cellComment'|translate}}</span> <!-- <span ng-model="tabType" uib-btn-radio="4">{{'cellComment'|translate}}</span>-->
<span ng-model="tabType" uib-btn-radio="5" ng-click = "loadAttach()">{{'RelatedAttach'|translate}}</span> <span ng-model="tabType" uib-btn-radio="5" ng-click = "loadAttach()">{{'RelatedAttach'|translate}}</span>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment