|
@@ -0,0 +1,404 @@
|
|
|
+package com.jpsoft.railroad.modules.base.controller;
|
|
|
+
|
|
|
+import com.github.pagehelper.Page;
|
|
|
+import com.jpsoft.railroad.config.OSSConfig;
|
|
|
+import com.jpsoft.railroad.modules.common.utils.OSSUtil;
|
|
|
+import com.jpsoft.railroad.modules.common.utils.PojoUtils;
|
|
|
+import com.jpsoft.railroad.modules.common.dto.Sort;
|
|
|
+import com.jpsoft.railroad.modules.common.dto.MessageResult;
|
|
|
+import com.jpsoft.railroad.modules.base.entity.TradeReport;
|
|
|
+import com.jpsoft.railroad.modules.base.service.TradeReportService;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
+import org.apache.poi.ss.usermodel.*;
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.io.ByteArrayInputStream;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/base/tradeReport")
|
|
|
+public class TradeReportController {
|
|
|
+ private Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TradeReportService tradeReportService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OSSConfig ossConfig;
|
|
|
+
|
|
|
+
|
|
|
+ @ApiOperation(value = "创建空记录")
|
|
|
+ @GetMapping("create")
|
|
|
+ public MessageResult<TradeReport> create() {
|
|
|
+ MessageResult<TradeReport> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ TradeReport tradeReport = new TradeReport();
|
|
|
+
|
|
|
+ msgResult.setData(tradeReport);
|
|
|
+ msgResult.setResult(true);
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "添加信息")
|
|
|
+ @PostMapping("add")
|
|
|
+ public MessageResult<TradeReport> add(@RequestBody TradeReport tradeReport, @RequestAttribute String subject) {
|
|
|
+ MessageResult<TradeReport> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ tradeReport.setId(UUID.randomUUID().toString());
|
|
|
+ tradeReport.setDelFlag(false);
|
|
|
+ tradeReport.setCreateBy(subject);
|
|
|
+ tradeReport.setCreateTime(new Date());
|
|
|
+
|
|
|
+ int affectCount = tradeReportService.insert(tradeReport);
|
|
|
+
|
|
|
+ if (affectCount > 0) {
|
|
|
+ msgResult.setResult(true);
|
|
|
+ msgResult.setData(tradeReport);
|
|
|
+ } else {
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage("数据库添加失败");
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "获取信息")
|
|
|
+ @GetMapping("edit/{id}")
|
|
|
+ public MessageResult<TradeReport> edit(@PathVariable("id") String id) {
|
|
|
+ MessageResult<TradeReport> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ TradeReport tradeReport = tradeReportService.get(id);
|
|
|
+
|
|
|
+ if (tradeReport != null) {
|
|
|
+ msgResult.setResult(true);
|
|
|
+ msgResult.setData(tradeReport);
|
|
|
+ } else {
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage("数据库不存在该记录!");
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "更新用户")
|
|
|
+ @PostMapping("update")
|
|
|
+ public MessageResult<TradeReport> update(@RequestBody TradeReport tradeReport, @RequestAttribute String subject) {
|
|
|
+ MessageResult<TradeReport> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ tradeReport.setUpdateBy(subject);
|
|
|
+ tradeReport.setUpdateTime(new Date());
|
|
|
+
|
|
|
+ int affectCount = tradeReportService.update(tradeReport);
|
|
|
+
|
|
|
+ if (affectCount > 0) {
|
|
|
+ msgResult.setResult(true);
|
|
|
+ msgResult.setData(tradeReport);
|
|
|
+ } else {
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage("数据库更新失败");
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "删除用户")
|
|
|
+ @PostMapping("delete/{id}")
|
|
|
+ public MessageResult<TradeReport> delete(@PathVariable("id") String id, @RequestAttribute String subject) {
|
|
|
+ MessageResult<TradeReport> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ TradeReport tradeReport = tradeReportService.get(id);
|
|
|
+ tradeReport.setDelFlag(true);
|
|
|
+ tradeReport.setUpdateBy(subject);
|
|
|
+ tradeReport.setUpdateTime(new Date());
|
|
|
+
|
|
|
+ int affectCount = tradeReportService.update(tradeReport);
|
|
|
+
|
|
|
+ if (affectCount > 0) {
|
|
|
+ msgResult.setResult(true);
|
|
|
+ } else {
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage("数据库删除失败");
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @ApiOperation(value = "批量删除")
|
|
|
+ @PostMapping("batchDelete")
|
|
|
+ public MessageResult<Integer> batchDelete(@RequestBody List<String> idList, @RequestAttribute String subject) {
|
|
|
+ MessageResult<Integer> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ int affectCount = 0;
|
|
|
+
|
|
|
+ for (String id : idList) {
|
|
|
+ TradeReport tradeReport = tradeReportService.get(id);
|
|
|
+ tradeReport.setDelFlag(true);
|
|
|
+ tradeReport.setUpdateBy(subject);
|
|
|
+ tradeReport.setUpdateTime(new Date());
|
|
|
+
|
|
|
+ affectCount += tradeReportService.update(tradeReport);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (affectCount > 0) {
|
|
|
+ msgResult.setResult(true);
|
|
|
+ msgResult.setData(affectCount);
|
|
|
+ } else {
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage("删除失败");
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "列表")
|
|
|
+ @RequestMapping(value = "pageList", method = RequestMethod.POST)
|
|
|
+ public MessageResult<Object> pageList(
|
|
|
+ String id,
|
|
|
+ @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
|
|
|
+ @RequestParam(value = "pageSize", defaultValue = "20") int pageSize,
|
|
|
+ @RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag,
|
|
|
+ HttpServletRequest request) {
|
|
|
+ String subject = (String) request.getAttribute("subject");
|
|
|
+
|
|
|
+ //当前用户ID
|
|
|
+ System.out.println(subject);
|
|
|
+
|
|
|
+ MessageResult<Object> msgResult = new MessageResult<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ Map<String, Object> searchParams = new HashMap<>();
|
|
|
+
|
|
|
+ List<Sort> sortList = new ArrayList<>();
|
|
|
+ sortList.add(new Sort("date_", "asc"));
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(id)) {
|
|
|
+ searchParams.put("id", "%" + id + "%");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Page<TradeReport> page = tradeReportService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
|
|
|
+
|
|
|
+
|
|
|
+ if (exportFlag) {
|
|
|
+ List<TradeReport> tradeReportList = page.getResult();
|
|
|
+ BigDecimal total1 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total2 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total3 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total4 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total5 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total6 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total7 = BigDecimal.ZERO;
|
|
|
+ BigDecimal total8 = BigDecimal.ZERO;
|
|
|
+ for (TradeReport item : tradeReportList) {
|
|
|
+ total1 = total1.add(item.getTonnage());
|
|
|
+ total2 = total2.add(item.getReceivable());
|
|
|
+ total3 = total3.add(item.getActualReceived());
|
|
|
+ total4 = total4.add(item.getUnpaid());
|
|
|
+ total5 = total5.add(item.getAccountsPayable());
|
|
|
+ total6 = total6.add(item.getActualPayment());
|
|
|
+ total7 = total7.add(item.getUnpaidPayments());
|
|
|
+ total8 = total8.add(item.getProfit());
|
|
|
+ }
|
|
|
+ TradeReport tradeReport = new TradeReport();
|
|
|
+ tradeReport.setUpstreamTraders("合计");
|
|
|
+ tradeReport.setTonnage(total1);
|
|
|
+ tradeReport.setReceivable(total2);
|
|
|
+ tradeReport.setActualReceived(total3);
|
|
|
+ tradeReport.setUnpaid(total4);
|
|
|
+ tradeReport.setAccountsPayable(total5);
|
|
|
+ tradeReport.setActualPayment(total6);
|
|
|
+ tradeReport.setUnpaidPayments(total7);
|
|
|
+ tradeReport.setProfit(total8);
|
|
|
+
|
|
|
+ tradeReportList.add(tradeReport);
|
|
|
+
|
|
|
+ String filePath = exportXls(tradeReportList);
|
|
|
+ msgResult.setData(filePath);
|
|
|
+ msgResult.setResult(true);
|
|
|
+ } else {
|
|
|
+ Map<String, Object> dataMap = PojoUtils.pageWrapper(page);
|
|
|
+
|
|
|
+ msgResult.setResult(true);
|
|
|
+ msgResult.setData(dataMap);
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+
|
|
|
+ msgResult.setResult(false);
|
|
|
+ msgResult.setMessage(ex.getMessage());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return msgResult;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private String exportXls(List<TradeReport> tradeReportList) {
|
|
|
+ String downloadUrl = "";
|
|
|
+
|
|
|
+ Workbook workbook = new HSSFWorkbook();
|
|
|
+ Sheet sheet = workbook.createSheet();
|
|
|
+
|
|
|
+ //表头
|
|
|
+ Row rowTitle1 = sheet.createRow(0);
|
|
|
+
|
|
|
+ Row rowTitle2 = sheet.createRow(1);
|
|
|
+
|
|
|
+ String[] titles1 = new String[]{"日期", "贸易商", "", "品名", "吨位", "贸易额(万元)", "", "", "", "", "", "利润", "备注"};
|
|
|
+
|
|
|
+ String[] titles2 = new String[]{"", "上游", "下游", "", "", "应收",
|
|
|
+ "实收", "未收", "应付", "实付", "未付"};
|
|
|
+
|
|
|
+ HSSFCellStyle cellStyle = ((HSSFWorkbook) workbook).createCellStyle();
|
|
|
+ cellStyle.setAlignment(HorizontalAlignment.CENTER);
|
|
|
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
+
|
|
|
+ for (int i = 0; i < titles1.length; i++) {
|
|
|
+ Cell cell = rowTitle1.createCell(i);
|
|
|
+ cell.setCellValue(titles1[i]);
|
|
|
+ cell.setCellStyle(cellStyle);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < titles2.length; i++) {
|
|
|
+ Cell cell = rowTitle2.createCell(i);
|
|
|
+ cell.setCellValue(titles2[i]);
|
|
|
+ cell.setCellStyle(cellStyle);
|
|
|
+ }
|
|
|
+
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 2));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 11, 11));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 1, 12, 12));
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 5, 10));
|
|
|
+
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
+
|
|
|
+ for (int i = 0; i < tradeReportList.size(); i++) {
|
|
|
+ TradeReport tradeReport = tradeReportList.get(i);
|
|
|
+
|
|
|
+ Row row = sheet.createRow(i + 2);
|
|
|
+
|
|
|
+ int colIndex = 0;
|
|
|
+ String date = "";
|
|
|
+ if (tradeReport.getDate() != null) {
|
|
|
+ date = sdf.format(tradeReport.getDate());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(date);
|
|
|
+ row.createCell(colIndex++).setCellValue(tradeReport.getUpstreamTraders());
|
|
|
+ row.createCell(colIndex++).setCellValue(tradeReport.getDownstreamTraders());
|
|
|
+ row.createCell(colIndex++).setCellValue(tradeReport.getProductName());
|
|
|
+ Double tonnage=null;
|
|
|
+ if (tradeReport.getTonnage() != null) {
|
|
|
+ tonnage = Double.parseDouble(tradeReport.getTonnage().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(tonnage);
|
|
|
+ Double receivable = null;
|
|
|
+ if (tradeReport.getReceivable() != null) {
|
|
|
+ receivable = Double.parseDouble(tradeReport.getReceivable().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(receivable);
|
|
|
+ Double actualReceived = null;
|
|
|
+ if (tradeReport.getActualReceived() != null) {
|
|
|
+ actualReceived = Double.parseDouble(tradeReport.getActualReceived().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(actualReceived);
|
|
|
+ Double unpaid = null;
|
|
|
+ if (tradeReport.getUnpaid() != null) {
|
|
|
+ unpaid = Double.parseDouble(tradeReport.getUnpaid().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(unpaid);
|
|
|
+ Double accountsPayable = null;
|
|
|
+ if (tradeReport.getAccountsPayable() != null) {
|
|
|
+ accountsPayable = Double.parseDouble(tradeReport.getAccountsPayable().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(accountsPayable);
|
|
|
+
|
|
|
+ Double actualPayment = null;
|
|
|
+ if (tradeReport.getActualPayment() != null) {
|
|
|
+ actualPayment = Double.parseDouble(tradeReport.getActualPayment().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(actualPayment);
|
|
|
+ Double unpaidPayments = null;
|
|
|
+ if (tradeReport.getUnpaidPayments() != null) {
|
|
|
+ unpaidPayments = Double.parseDouble(tradeReport.getUnpaidPayments().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(unpaidPayments);
|
|
|
+ Double profit = null;
|
|
|
+ if (tradeReport.getProfit() != null) {
|
|
|
+ profit = Double.parseDouble(tradeReport.getProfit().toString());
|
|
|
+ }
|
|
|
+ row.createCell(colIndex++).setCellValue(profit);
|
|
|
+ row.createCell(colIndex++).setCellValue(tradeReport.getBak());
|
|
|
+ }
|
|
|
+
|
|
|
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
|
|
|
+
|
|
|
+ try {
|
|
|
+ workbook.write(output);
|
|
|
+
|
|
|
+ byte[] buffer = output.toByteArray();
|
|
|
+ ByteArrayInputStream input = new ByteArrayInputStream(buffer);
|
|
|
+
|
|
|
+ downloadUrl = OSSUtil.upload(ossConfig, "tradeReport", "分类统计贸易表" + sdf.format(new Date()) + ".xls", input);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ logger.error(ex.getMessage(), ex);
|
|
|
+ }
|
|
|
+
|
|
|
+ return downloadUrl;
|
|
|
+ }
|
|
|
+}
|