add export customers
This commit is contained in:
parent
e6765c4462
commit
de9af1b43e
@ -9,8 +9,8 @@ import me.chyxion.tigon.model.ViewModel;
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import me.chyxion.tigon.model.ListResult;
|
||||
import me.chyxion.tigon.webmvc.ResourceModel;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import me.chyxion.tigon.webmvc.ResourceModel;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import com.pudonghot.ambition.crm.model.User;
|
||||
@ -156,7 +156,7 @@ public class CustomerController
|
||||
}
|
||||
|
||||
@RequiresRoles(User.ROLE_ADMIN)
|
||||
@RequestMapping(value = "/export", method = RequestMethod.POST)
|
||||
@RequestMapping("/export")
|
||||
public ResourceModel exportCSV() {
|
||||
return new ResourceModel(((CustomerService) queryService).exportCSV(getUserId()), null, null);
|
||||
}
|
||||
|
@ -1,18 +1,15 @@
|
||||
package com.pudonghot.ambition.crm.service.support;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVPrinter;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.springframework.util.Assert;
|
||||
import me.chyxion.tigon.mybatis.Search;
|
||||
import me.chyxion.tigon.model.ViewModel;
|
||||
import org.apache.commons.csv.CSVRecord;
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVPrinter;
|
||||
import com.pudonghot.ambition.crm.model.*;
|
||||
import me.chyxion.tigon.model.ListResult;
|
||||
import com.pudonghot.ambition.crm.mapper.*;
|
||||
@ -66,7 +63,8 @@ public class CustomerServiceSupport
|
||||
CSVFormat.DEFAULT.withHeader(
|
||||
"ID",
|
||||
"Name",
|
||||
"Sales(3 Years)",
|
||||
"Sum Sales(3 Years)",
|
||||
"Sales",
|
||||
"Comment",
|
||||
"Application",
|
||||
"Status",
|
||||
@ -441,16 +439,22 @@ public class CustomerServiceSupport
|
||||
*/
|
||||
@Override
|
||||
public File exportCSV(final String operator) {
|
||||
// final File file = new File(FileUtils.getTempDirectory(),
|
||||
final File file = new File(FileUtils.getUserDirectory(),
|
||||
DateFormatUtils.format(System.currentTimeMillis(),
|
||||
final File file = new File(FileUtils.getTempDirectory(),
|
||||
"Customers_" + DateFormatUtils.format(System.currentTimeMillis(),
|
||||
"yyyy-MM-dd_HHmmss") + ".csv");
|
||||
try (final FileWriter fileWriter = new FileWriter(file);
|
||||
try (final OutputStreamWriter fileWriter =
|
||||
new OutputStreamWriter(new FileOutputStream(file), CSVUtils.GBK);
|
||||
final CSVPrinter printer = EXPORT_FORMAT.print(fileWriter)) {
|
||||
scan(512, new Search(), this::exportList, this::exportCount, c -> {
|
||||
|
||||
scan(512, new Search()
|
||||
.setAttr("APPLICATION_NOT_NULL", true)
|
||||
.desc(Customer.SUM_YTD_SALES),
|
||||
this::exportList,
|
||||
this::exportCount, c -> {
|
||||
// "ID",
|
||||
// "Name",
|
||||
// "Sales(3 Years)",
|
||||
// "Sum Sales(3 Years)",
|
||||
// "Sales",
|
||||
// "Comment",
|
||||
// "Application",
|
||||
// "Status",
|
||||
@ -464,10 +468,11 @@ public class CustomerServiceSupport
|
||||
// "Sales Person");
|
||||
|
||||
try {
|
||||
log.info("Customer [{}].", c);
|
||||
log.info("Export Customer [{}].", c);
|
||||
printer.printRecord(c.getId(),
|
||||
c.getName(),
|
||||
c.getYtdSales(),
|
||||
c.getSumYtdSales(),
|
||||
joinYtdSales(c.getYears(), c.getYtdSales()),
|
||||
extractIssue(c.getLastIssue()),
|
||||
joinApplicationNames(c.getApplicationNames()),
|
||||
c.getStatusText(),
|
||||
@ -502,6 +507,7 @@ public class CustomerServiceSupport
|
||||
int exportCount(final Search search) {
|
||||
return mapper.countForShow(search, null);
|
||||
}
|
||||
|
||||
private String extractIssue(final String issue) {
|
||||
if (StringUtils.isNotBlank(issue)) {
|
||||
return issue.split(SPLITTER)[1];
|
||||
@ -516,6 +522,22 @@ public class CustomerServiceSupport
|
||||
return "";
|
||||
}
|
||||
|
||||
private String joinYtdSales(final String strYears, final String strYtdSales) {
|
||||
if (StringUtils.isNotBlank(strYears) &&
|
||||
StringUtils.isNotBlank(strYtdSales)) {
|
||||
final String[] years = strYears.split(SPLITTER);
|
||||
final String[] sales = strYtdSales.split(SPLITTER);
|
||||
final List<String> ytdSales = new ArrayList<>(years.length);
|
||||
|
||||
int i = 0;
|
||||
for (final String year : years) {
|
||||
ytdSales.add(year + ": " + sales[i++]);
|
||||
}
|
||||
return StringUtils.join(ytdSales, "\n");
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private String dateFormat(Date date, String pattern) {
|
||||
return date != null ? DateFormatUtils.format(date, pattern) : "";
|
||||
}
|
||||
|
@ -153,14 +153,14 @@
|
||||
and enabled = 1) year,
|
||||
|
||||
<!-- all years list -->
|
||||
(select group_concat(year order by year asc separator 0x1d)
|
||||
(select group_concat(year order by year desc separator 0x1d)
|
||||
from crm_customer_year_to_date_sale
|
||||
where customer_id = customer.id
|
||||
and enabled = 1
|
||||
group by customer_id) years,
|
||||
|
||||
<!-- all sales list -->
|
||||
(select group_concat(ytd_sale order by year asc separator 0x1d)
|
||||
(select group_concat(ytd_sale order by year desc separator 0x1d)
|
||||
from crm_customer_year_to_date_sale
|
||||
where customer_id = customer.id
|
||||
and enabled = 1
|
||||
@ -214,6 +214,13 @@
|
||||
</sql>
|
||||
|
||||
<sql id="showFilter">
|
||||
<!-- Application not null -->
|
||||
<if test="s.getAttr('APPLICATION_NOT_NULL') != null">
|
||||
join (select distinct customer_id
|
||||
from crm_customer_application) app_not_null
|
||||
on customer.id = app_not_null.customer_id
|
||||
</if>
|
||||
|
||||
<if test="s.getAttr('APPLICATIONS') != null">
|
||||
join (select distinct customer_id
|
||||
from crm_customer_application
|
||||
|
@ -22,6 +22,12 @@
|
||||
Import Sales Data
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li>
|
||||
<a href="/customer/export" target="_blank">
|
||||
<i class="ace-icon fa fa-download bigger-110"></i>
|
||||
Export Customers
|
||||
</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
<li>
|
||||
{{#link-to 'customer.list.advanced-query'}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user