1,httpRequest接口触发进程[或者可以换成其他方式触发]

/**
* 出入库生成CSV文件
* @param req
* @param params
* @return
*/
@RequestMapping(value = "explanCsvFileToOrder")
ResponseMessage explanCsvFileToOrder(HttpServletRequest req, @RequestParam Map<String, String> params) {
TtxSession sess = getSession(req, params.customer)
ResponseMessage rsp
rsp = validate(sess, params)
if (!rsp.hasError()) {
rsp = excfSvc.explanCsvToShipAndRece(sess,params.warehouseCode)
}
return rsp
}

    /**
* scheduler_SHIPANDRECE
* @param sess
* @param warehouseCode
* @return
*/
ResponseMessage explanCsvToShipAndRece(TtxSession sess, String warehouseCode) {
ResponseMessage rsp = ResponseMessageFactory.success(sess, null)
try {
//读取全局大文档,找到数据执行的SQL
List invSQLS = template(sess).queryForList("select textValue from large_text where warehouseCode='*' and type='CSV_FILE_SQL' and code='CSV_SHIPANDRECE'")
if (!invSQLS) {
return ResponseMessageFactory.error(sess, "未查询到单据条件SQL")
}
//找到存储路径
List filePath = template(sess).queryForList("select value from config_value where warehouseCode=? and identifier='CSVFILEPATH'", warehouseCode)
// String path = "c:/export/"
if (!filePath) {
return ResponseMessageFactory.error(sess, "未查询到存储路径")
}
//定义文件存储路径
String path = filePath[0]["value"].toString()
//定义命名格式
String fileName = "OrderData-" + LocalDateTime.now().format(dtf)
String invSql = invSQLS[0]["textValue"].toString()
//查询出来数据
List locInv = template(sess).queryForList(invSql)

List<Object> exportData = new ArrayList<Object>()
//给csv文件添加标题
exportData.add("DHLWarehouseNo")
exportData.add("StorageNo")
exportData.add("RelatedOrderNo")
exportData.add("ActualWarehouseTime")
exportData.add("SpareColumn1")
exportData.add("SpareColumn2")
exportData.add("LoadNo")
exportData.add("InventoriesAmount")
exportData.add("MaterialExpiryDate")
exportData.add("Department")
exportData.add("MaterialState")
List<List<Object>> datalist = new ArrayList<List<Object>>()
List<Object> data
//循环添加数据主体
locInv?.each {
data = new ArrayList<Object>()
data.add(it.CODE)
data.add(it.WarehouseNo)
data.add(it.deliveryNo)
data.add(it.lastUpdated)
data.add(it.SpareColumn1)
data.add(null)
data.add(it.skuCode)
data.add(it.quantity)
data.add(it.materialExpiryDate)
data.add(it.department)
data.add(it.inventorySts)
datalist.add(data)
}

//创建文件
File file = this.createCSVFile(exportData, datalist, path, fileName)
String fileName2 = file.getName()
System.out.println("文件名称:" + fileName2)
} catch (Throwable t) {
ExceptionManager.logException(sess, t)
return ResponseMessageFactory.error(sess, WmsMessages.MSG_GNRL_0000)
}
return rsp
}

/**
* 生成CSV文件的主体方法
* @param head
* @param dataList
* @param outPutPath
* @param filename
* @return
*/
public static File createCSVFile(List<Object> head, List<List<Object>> dataList, String outPutPath, String filename) {
File csvFile = null
BufferedWriter csvWtriter = null
try {
csvFile = new File(outPutPath + File.separator + filename + ".csv")
File parent = csvFile.getParentFile()
if (parent != null && !parent.exists()) {
parent.mkdirs()
}
csvFile.createNewFile()

// GB2312使正确读取分隔符","
csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
csvFile), "GB2312"), 1024)
// 写入文件头部
writeRow(head, csvWtriter)

// 写入文件内容
for (List<Object> row : dataList) {
writeRow(row, csvWtriter)
}
csvWtriter.flush()
} catch (Exception e) {
e.printStackTrace()
} finally {
try {
csvWtriter.close()
} catch (IOException e) {
e.printStackTrace()
}
}
return csvFile
}
private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
// 写入文件头部
for (Object data : row) {
StringBuffer sb = new StringBuffer()
String rowStr = sb.append("\"").append(data).append("\",").toString()
csvWriter.write(rowStr)
}
csvWriter.newLine()
}


java将数据生成csv文件的更多相关文章

  1. 从一个PHP数据生成 CSV 文件

    这的确是一个很简单的功能,从一个PHP数组生成一个.csv文件.此函数使用 fputcsv PHP 内置函数 <? function generateCsv($data, $delimiter ...

  2. java调用sqlldr导入csv文件数据到临时表

    package cn.com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File; ...

  3. Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  4. Java生成CSV文件

    1.新CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils; import java.io.BufferedWriter; im ...

  5. java导出生成csv文件

    首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分隔的,对比如下图: txt中显示: 修改文件后缀为csv后显示如下: 在java中我 ...

  6. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  7. java 生成 csv文件

    一.csv文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是 ...

  8. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中   将数 ...

  9. 图像处理项目——生成csv文件提高读取效率

    利用pyhton脚本生成csv文件 *开发环境为windows PyCharm*使用的是pyhton脚本*生成人脸和人脸对应的标签的csv文件 一:主要步骤 1.载入对应路径2.提取每一张图片对应的位 ...

随机推荐

  1. Codeforces Round #481 (Div. 3) C. Letters (模拟,二分)

    题意:有个\(n\)个公寓,每个公寓\(a_{i}\)代表着编号为\(1-a_{i}\)个房间,给你房间号,问它在第几栋公寓的第几个房间. 题解:对每个公寓的房间号记一个前缀和,二分查找属于第几个公寓 ...

  2. c#记两个变量进行值交换

    今天腊月二十九啦,无心上班,专注划水.然后就在那里翻帖子消磨时光. 看到了这样一个问题,有人提问为什么   a=b+(b=a)*0  ??? 第一眼看上去,我也有点蒙,仔细推敲了一下,嗯~的确是交换了 ...

  3. OpenStack Train版-4.安装placement放置服务

    安装placement放置服务 创建placement数据库 mysql -uroot CREATE DATABASE placement; GRANT ALL PRIVILEGES ON place ...

  4. GO - go mod使用原理

    Go Module 依赖管理 go mod使用 原理及使用ref: https://xuanwo.io/2019/05/27/go-modules/ go module的稳定路径: https://l ...

  5. LEETCODE - 1228【等差数列中缺失的数字】

    C++: class Solution { public:     int missingNumber(vector<int>& arr) {         int subnum ...

  6. JVM进阶篇

      class Person { private String name = "Jack"; private int age; private final double salar ...

  7. windows信息收集

      导语:介绍 特权升级总是被归结为适当的枚举.但要完成适当的枚举,你需要知道要检查和查找的内容.这通常需要伴随着经验的丰富而对系统非常熟悉.起初特权升级看起来像是一项艰巨的任务,但过了一段时间,你就 ...

  8. 使用nodejs爬取图片

    在运行代码前,请确保本机是否有nodejs环境 1 D:\ > node -v 2 v12.1.0 //版本号 需要用到的包 axios //请求页面 cheerio // 把get请求的页面 ...

  9. linux通识

    linux是服务器应用领域的开源且免费的多用户多任务操作系统的内核. 以下是对上述论断的解释: 操作系统 简言之,操作系统乃是所有计算设备的大管家,小到智能手表,大到航天航空设备,所有需要操控硬件的地 ...

  10. string logo(字符画),website,html5,css3,atom ide

    1 <!DOCTYPE html> <!-- Powered by... _ _ ____. ______ ._______. _______ ___ ___ sssssssss \ ...