Commit 47fb12a2 by 杨清松

账单明细导出

parent 3e0e4d88
package com.xyst.dinas.finance.internal.service; package com.xyst.dinas.finance.internal.service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
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.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj; import com.beecode.inz.basis.team.pojo.ResponseObj;
...@@ -28,97 +44,148 @@ public class StatementAccountServiceImpl implements StatementAccountService{ ...@@ -28,97 +44,148 @@ public class StatementAccountServiceImpl implements StatementAccountService{
private StatementAccountDao statementAccountDao; private StatementAccountDao statementAccountDao;
@Override @Override
public Object queryStatementAccountByContractId(JSONObject jsonObject) { public Map<String, Object> queryStatementAccountByContractId(JSONObject jsonObject) {
try { Map<String, Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>(); List<KObject> artificialRechargeList = statementAccountDao.queryStatementAccountByContractId(jsonObject, ArtificialRechargeConstant.ENTITY);
List<KObject> artificialRechargeList = statementAccountDao.queryStatementAccountByContractId(jsonObject, ArtificialRechargeConstant.ENTITY); List<StatementAccount> statementAccounts = new ArrayList<StatementAccount>();
List<StatementAccount> statementAccounts = new ArrayList<StatementAccount>(); //人工充值
//人工充值 BigDecimal advanceRechargeAmount = new BigDecimal("0"); //预付款充值
BigDecimal advanceRechargeAmount = new BigDecimal("0"); //预付款充值 BigDecimal depositRechargeAmount = new BigDecimal("0"); //保证金充值
BigDecimal depositRechargeAmount = new BigDecimal("0"); //保证金充值 if (artificialRechargeList.size() > 0) {
if (artificialRechargeList.size() > 0) { for (int i = 0; i < artificialRechargeList.size(); i++) {
for (int i = 0; i < artificialRechargeList.size(); i++) { KObject kObject = artificialRechargeList.get(i);
KObject kObject = artificialRechargeList.get(i); StatementAccount statementAccount = new StatementAccount();
StatementAccount statementAccount = new StatementAccount(); if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款
if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款 statementAccount.setDealType("预付款充值");
statementAccount.setDealType("预付款充值"); advanceRechargeAmount = advanceRechargeAmount.add(kObject.getBigDecimal("rechargeAmount"));
advanceRechargeAmount = advanceRechargeAmount.add(kObject.getBigDecimal("rechargeAmount")); } else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){
} else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){ statementAccount.setDealType("保证金充值");
statementAccount.setDealType("保证金充值"); depositRechargeAmount = depositRechargeAmount.add(kObject.getBigDecimal("rechargeAmount"));
depositRechargeAmount = depositRechargeAmount.add(kObject.getBigDecimal("rechargeAmount"));
}
statementAccount.setDealAmount(kObject.getBigDecimal("rechargeAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
statementAccount.setDealAmount(kObject.getBigDecimal("rechargeAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
map.put("advanceRechargeAmount", advanceRechargeAmount); }
map.put("depositRechargeAmount", depositRechargeAmount); map.put("advanceRechargeAmount", advanceRechargeAmount);
//退费 map.put("depositRechargeAmount", depositRechargeAmount);
BigDecimal advanceFinanceRefundAmount = new BigDecimal("0"); //预付款退费 //退费
BigDecimal depositFinanceRefundAmount = new BigDecimal("0"); //保证金退费 BigDecimal advanceFinanceRefundAmount = new BigDecimal("0"); //预付款退费
List<KObject> financeRefundList = statementAccountDao.queryStatementAccountByContractId(jsonObject, FinanceRefundConstant.ENTITY); BigDecimal depositFinanceRefundAmount = new BigDecimal("0"); //保证金退费
if (financeRefundList.size() > 0) { List<KObject> financeRefundList = statementAccountDao.queryStatementAccountByContractId(jsonObject, FinanceRefundConstant.ENTITY);
for (int i = 0; i < financeRefundList.size(); i++) { if (financeRefundList.size() > 0) {
KObject kObject = financeRefundList.get(i); for (int i = 0; i < financeRefundList.size(); i++) {
StatementAccount statementAccount = new StatementAccount(); KObject kObject = financeRefundList.get(i);
if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款 StatementAccount statementAccount = new StatementAccount();
statementAccount.setDealType("预付款退费"); if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款
advanceFinanceRefundAmount = advanceFinanceRefundAmount.add(kObject.getBigDecimal("actualRefundAmount"));//实际退费金额 statementAccount.setDealType("预付款退费");
} else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){ advanceFinanceRefundAmount = advanceFinanceRefundAmount.add(kObject.getBigDecimal("actualRefundAmount"));//实际退费金额
statementAccount.setDealType("保证金退费"); } else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){
depositFinanceRefundAmount = depositFinanceRefundAmount.add(kObject.getBigDecimal("actualRefundAmount")); statementAccount.setDealType("保证金退费");
} depositFinanceRefundAmount = depositFinanceRefundAmount.add(kObject.getBigDecimal("actualRefundAmount"));
statementAccount.setDealAmount(kObject.getBigDecimal("actualRefundAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
statementAccount.setDealAmount(kObject.getBigDecimal("actualRefundAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
map.put("advanceFinanceRefundAmount", advanceFinanceRefundAmount); }
map.put("depositFinanceRefundAmount", depositFinanceRefundAmount); map.put("advanceFinanceRefundAmount", advanceFinanceRefundAmount);
map.put("depositFinanceRefundAmount", depositFinanceRefundAmount);
//费用调整
BigDecimal advanceExpenseAdjustAmount = new BigDecimal("0"); //预付款费用调整 //费用调整
BigDecimal depositExpenseAdjustAmount = new BigDecimal("0"); //保证金费用调整 BigDecimal advanceExpenseAdjustAmount = new BigDecimal("0"); //预付款费用调整
List<KObject> expenseAdjustList = statementAccountDao.queryStatementAccountByContractId(jsonObject, ExpenseAdjustConstant.ENTITY); BigDecimal depositExpenseAdjustAmount = new BigDecimal("0"); //保证金费用调整
if (expenseAdjustList.size() > 0) { List<KObject> expenseAdjustList = statementAccountDao.queryStatementAccountByContractId(jsonObject, ExpenseAdjustConstant.ENTITY);
for (int i = 0; i < expenseAdjustList.size(); i++) { if (expenseAdjustList.size() > 0) {
KObject kObject = expenseAdjustList.get(i); for (int i = 0; i < expenseAdjustList.size(); i++) {
StatementAccount statementAccount = new StatementAccount(); KObject kObject = expenseAdjustList.get(i);
if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款 StatementAccount statementAccount = new StatementAccount();
statementAccount.setDealType("预付款费用调整"); if (kObject.getString("fundType").equals(FundTypeEnum.ADVANCE.name())) { //预付款
advanceExpenseAdjustAmount = advanceExpenseAdjustAmount.add(kObject.getBigDecimal("expenseAdjustAmount")); statementAccount.setDealType("预付款费用调整");
} else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){ advanceExpenseAdjustAmount = advanceExpenseAdjustAmount.add(kObject.getBigDecimal("expenseAdjustAmount"));
statementAccount.setDealType("保证金费用调整"); } else if (kObject.getString("fundType").equals(FundTypeEnum.DEPOSIT.name())){
depositExpenseAdjustAmount = depositExpenseAdjustAmount.add(kObject.getBigDecimal("expenseAdjustAmount")); statementAccount.setDealType("保证金费用调整");
} depositExpenseAdjustAmount = depositExpenseAdjustAmount.add(kObject.getBigDecimal("expenseAdjustAmount"));
statementAccount.setDealAmount(kObject.getBigDecimal("expenseAdjustAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
statementAccount.setDealAmount(kObject.getBigDecimal("expenseAdjustAmount"));
statementAccount.setDealDate(kObject.getString("createTime"));
statementAccounts.add(statementAccount);
} }
map.put("advanceExpenseAdjustAmount", advanceFinanceRefundAmount); }
map.put("depositExpenseAdjustAmount", depositExpenseAdjustAmount); map.put("advanceExpenseAdjustAmount", advanceFinanceRefundAmount);
//销售 map.put("depositExpenseAdjustAmount", depositExpenseAdjustAmount);
BigDecimal salesAmount = new BigDecimal("0"); //销售总额 //销售
List<KObject> saleRecordList = statementAccountDao.queryStatementAccountByContractId(jsonObject, SalesRecordConstant.ENTITY); BigDecimal salesAmount = new BigDecimal("0"); //销售总额
if (saleRecordList.size() > 0) { List<KObject> saleRecordList = statementAccountDao.queryStatementAccountByContractId(jsonObject, SalesRecordConstant.ENTITY);
for (int i = 0; i < saleRecordList.size(); i++) { if (saleRecordList.size() > 0) {
KObject kObject = saleRecordList.get(i); for (int i = 0; i < saleRecordList.size(); i++) {
StatementAccount statementAccount = new StatementAccount(); KObject kObject = saleRecordList.get(i);
statementAccount.setDealType("销售"); StatementAccount statementAccount = new StatementAccount();
statementAccount.setDealAmount(kObject.getBigDecimal("amount")); statementAccount.setDealType("销售");
statementAccount.setDealDate(kObject.getString("createTime")); statementAccount.setDealAmount(kObject.getBigDecimal("amount"));
statementAccounts.add(statementAccount); statementAccount.setDealDate(kObject.getString("createTime"));
salesAmount = salesAmount.add(kObject.getBigDecimal("amount")); statementAccounts.add(statementAccount);
} salesAmount = salesAmount.add(kObject.getBigDecimal("amount"));
}
}
map.put("salesAmount", salesAmount);
map.put("statementAccounts", statementAccounts);
return map;
}
@Value("classpath:template/statementAccount.xlsx")
private Resource statementAccountResource;
@Override
public void exportStatementAccountDetails(HttpServletResponse response, JSONObject param) {
Map<String, Object> statementAccountMap = queryStatementAccountByContractId(param);
Workbook xssfWorkbook = null;
try {
xssfWorkbook = new XSSFWorkbook(statementAccountResource.getInputStream());
CellStyle textStyle = xssfWorkbook.createCellStyle();
textStyle.setBorderBottom(CellStyle.BORDER_THIN);
textStyle.setBorderTop(CellStyle.BORDER_THIN);
textStyle.setBorderLeft(CellStyle.BORDER_THIN);
textStyle.setBorderRight(CellStyle.BORDER_THIN);
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
//设置字体
Font createFont = xssfWorkbook.createFont();
createFont.setFontHeightInPoints((short) 10);
createFont.setFontName("黑体");
textStyle.setFont(createFont);
Sheet sheetAt = xssfWorkbook.getSheetAt(0);
List<StatementAccount> statementAccounts = (List<StatementAccount>) statementAccountMap.get("statementAccounts");
for (int i = 0; i < statementAccounts.size(); i++) {
StatementAccount statementAccount = statementAccounts.get(i);
//从第2行开始写数据
Row row = sheetAt.createRow(1 + i);
Cell cell = row.createCell(0);
cell.setCellValue(1 + i);
cell.setCellStyle(textStyle);
Cell cell1 = row.createCell(1);
cell1.setCellValue(statementAccount.getDealDate());
cell1.setCellStyle(textStyle);
Cell cell2 = row.createCell(2);
cell2.setCellValue(statementAccount.getDealType());
cell2.setCellStyle(textStyle);
Cell cell3 = row.createCell(3);
cell3.setCellValue(statementAccount.getDealAmount().doubleValue());
cell3.setCellStyle(textStyle);
} }
map.put("salesAmount", salesAmount); String fileName = URLEncoder.encode("对账单明细.xlsx", "utf-8");
map.put("statementAccounts", statementAccounts); response.setHeader("Content-Disposition", "attachment; filename =" + fileName);
return ResponseObj.success("查询成功", map); ServletOutputStream outputStream = response.getOutputStream();
xssfWorkbook.write(outputStream);
xssfWorkbook.close();
outputStream.flush();
outputStream.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return ResponseObj.error();
} }
} }
......
package com.xyst.dinas.finance.service; package com.xyst.dinas.finance.service;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject; import org.json.JSONObject;
public interface StatementAccountService { public interface StatementAccountService {
Object queryStatementAccountByContractId(JSONObject jsonObject); Map<String, Object> queryStatementAccountByContractId(JSONObject jsonObject);
void exportStatementAccountDetails(HttpServletResponse response, JSONObject param);
} }
package com.xyst.dinas.finance.web; package com.xyst.dinas.finance.web;
import java.io.IOException;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject; import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -12,10 +17,11 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -12,10 +17,11 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.finance.service.StatementAccountService; import com.xyst.dinas.finance.service.StatementAccountService;
/** /**
* 费用调整 * 对账单
* *
* @author yangqingsong * @author yangqingsong
* @date 2021年4月25日 * @date 2021年4月25日
...@@ -30,7 +36,34 @@ public class StatementAccountController { ...@@ -30,7 +36,34 @@ public class StatementAccountController {
@ResponseBody @ResponseBody
@RequestMapping(value = "/sand/user/finance/statementAccount/queryStatementAccountByContractId", method = RequestMethod.POST) @RequestMapping(value = "/sand/user/finance/statementAccount/queryStatementAccountByContractId", method = RequestMethod.POST)
public Object queryStatementAccountByContractId(@RequestBody String body) { public Object queryStatementAccountByContractId(@RequestBody String body) {
return statementAccountService.queryStatementAccountByContractId(new JSONObject(body)); try{
Map<String, Object> statementAccountByContract = statementAccountService.queryStatementAccountByContractId(new JSONObject(body));
return ResponseObj.success("查询成功", statementAccountByContract);
} catch(Exception e) {
return ResponseObj.error();
}
}
@ResponseBody
@RequestMapping(value = "/sand/user/finance/exportStatementAccountDetails", method = RequestMethod.POST)
public Object exportStatementAccountDetails(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("utf-8");
String exportParamStr = request.getParameter("exportParamStr");
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-www-form-urlencoded");
JSONObject obj = new JSONObject();
try {
obj.put("code", 200);
JSONObject param = new JSONObject(exportParamStr);
statementAccountService.exportStatementAccountDetails(response, param);
} catch(Exception e) {
e.printStackTrace();
return ResponseObj.error();
}
return obj.toString();
} }
} }
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