From 2e74479d9b24e93898d3c2045ba805a4553d9d1f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Aug 2020 19:42:01 +0800 Subject: [PATCH] 1.export wxorderfile --- resources/application-local.properties | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ resources/application-production.properties | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ resources/application.properties | 2 ++ resources/logback-local.xml | 14 ++++++++++++++ resources/logback-production.xml | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/com/taover/bazhuayun/analysis/script/goodscollect/GroupInfoExcelDataHeader.java | 9 +-------- src/com/taover/bazhuayun/analysis/script/goodscollect/Main.java | 9 +++++---- src/com/taover/bazhuayun/analysis/script/goodscollect/WindowMain.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/com/taover/bazhuayun/analysis/script/orderdownload/Main.java | 11 +++++++++++ src/com/taover/bazhuayun/analysis/util/FileContentTypeUtils.java | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/com/taover/bazhuayun/analysis/web/StartUp.java | 35 ++--------------------------------- src/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 599 insertions(+), 45 deletions(-) create mode 100644 resources/application-local.properties create mode 100644 resources/application-production.properties create mode 100644 resources/application.properties create mode 100644 resources/logback-local.xml create mode 100644 resources/logback-production.xml create mode 100644 src/com/taover/bazhuayun/analysis/script/goodscollect/WindowMain.java create mode 100644 src/com/taover/bazhuayun/analysis/script/orderdownload/Main.java create mode 100644 src/com/taover/bazhuayun/analysis/util/FileContentTypeUtils.java create mode 100644 src/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java create mode 100644 src/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java diff --git a/resources/application-local.properties b/resources/application-local.properties new file mode 100644 index 0000000..e47c289 --- /dev/null +++ b/resources/application-local.properties @@ -0,0 +1,139 @@ + +server.port=80 +server.session.timeout=10 + +spring.servlet.multipart.max-file-size=10MB +spring.servlet.multipart.max-request-size=20MB + +spring.jackson.time-zone=GMT+8 +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.mvc.dateFormat = yyyy-MM-dd HH:mm:ss +spring.gson.serialize-nulls=true + +tokenfilter.enable=false + +logging.config=classpath:logback-local.xml + + +mail.host=smtp.taover.com +mail.port=25 +mail.username=taover-robot@taover.com +mail.password=Lexi@1798 +mail.smtp.auth=true +mail.smtp.sendFrom=taover-robot@taover.com + +spring.mvc.dispatch-options-request=true + +#spring.datasource.url=jdbc\:mysql\://192.168.3.189\:3306/8zyun_wxorder?useUnicode\=true&characterEncoding\=UTF-8&autoReconnect\=true&zeroDateTimeBehavior\=convertToNull&transformedBitIsBoolean\=true +#spring.datasource.username=root +#spring.datasource.password=root + + +spring.datasource.url=jdbc\:mysql\://121.42.142.102\:3306/bzyun_wxorder?useUnicode\=true&characterEncoding\=UTF-8&autoReconnect\=true&zeroDateTimeBehavior\=convertToNull&transformedBitIsBoolean\=true +spring.datasource.username=dev +spring.datasource.password=taover02 +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.max-idle=10 +spring.datasource.max-wait=10000 +spring.datasource.min-idle=5 +spring.datasource.initial-size=5 + +#zto analysis address url +#zto.analysisAddress.url=https://localhost/Word_AnalysisAddress +zto.analysisAddress.url=https://hdgateway.zto.com/Word_AnalysisAddress +#taover analysis address url +taover.analysisAddress.url=http://address.taover.com/ +#kuaibao +kuaibao.analysisAddress.url=https://kop.kuaidihelp.com/api +kuaibao.analysisAddress.appId=105128 +kuaibao.analysisAddress.appKey=3310236ba4d6296e6e2346a7d9c824662510ff87 +kuaibao.analysisAddress.method=cloud.address.resolve +kuaibao.analysisAddress.methodSimple=cloud.address.cleanse + +#aliyun oss +accessKeyId=H4fIVB56iHjR6zQw +accessKeySecret=7bA395UltFp16kWPJT7Pfz0XYXCk4Q +endpoint=oss-cn-beijing.aliyuncs.com +bucket_contact=8zyun-oss +aliyun.mnsEndpoint=http://1225610490807748.mns.cn-hangzhou.aliyuncs.com +#https://8zyun-oss.oss-cn-beijing.aliyuncs.com +#mobile message url +wwltData=sname=dlmzty00&spwd=A6cU4Tyx&scorpid=&sprdid=1012888 +wwltUrl=https://seccf.51welink.com/submitdata/service.asmx/g_Submit + +#root ssy callcenter api config +ssy.callcenter.appid=c2MkSTjT8ghM +ssy.callcenter.seckey=7105ec065b8bb30fa6e3f13fccf92d0f + +pc.callcenter.appid=c2MkSTjT8ghZ +pc.callcenter.seckey=7105ec065b8bb30fa6e3f13fccf92d0G + +ssy.callcenter.subscribePreffixUrl=http://localhost/api/ +ssy.callcenter.subscribeSuffixUrl=/wxagentssymessagesubscribe + + +ssy.callcenter.url.openapiSurrogacyAgent=/api/v2/openapi/surrogacy/agent +ssy.callcenter.url.openapiSurrogacyQuerycontacts=/api/v2/openapi/surrogacy/querycontacts +ssy.callcenter.url.openapiSurrogacySendmessage=/api/v2/openapi/surrogacy/sendmessage +ssy.callcenter.url.openapiSurrogacyRegisteropenapi=/api/v2/openapi/surrogacy/registeropenapi +ssy.callcenter.url.openapiSurrogacyUnregisteropenapi=/api/v2/openapi/surrogacy/unregisteropenapi +ssy.callcenter.url.openapiCallcenterapibridgeService=/api/v2/openapi/callcenterapibridge/service +ssy.callcenter.url.openapiCallGroupMember=/api/v2/openapi/surrogacy/querygroupmember + + + + +ssy.upload.url=https://ssep.umsapi.com/api/v1/upload + +ssy.callcenter.sendMessage.preffixUrl=https://ssep.umsapi.com + +#weixin group text order confirm url +wxorder.url.grouptextorder.confirm=http://localhost:8100/confirm/ +wxorder.url.express.search=http://localhost:8100/confirm/query-logistics/ + +#ssy file server domain +ssy.fileserver.urlpreffix=https://ss0.umsapi.com + +wxorder.front.url.host=http://localhost:8100 + +platform.shop.registerUrl=http://localhost/common/authorization/index + +wxorder.platformgoods.matchurl=http://localhost/goods/channelgoods +wxorder.platformgoods.errororderurl=https://localhost/ordererror/index +wxorder.url.excellist=http://localhost/groupexcel/index + +#pc api +pc.callcenter.url.openapiSurrogacyRegisteropenapi=http://192.168.3.236:18308/v1/agent +pc.callcenter.url.openapiSurrogacyQuerycontacts=http://192.168.3.236:18308/v1/contacts/ +pc.callcenter.url.openapiCallGroupMember=http://192.168.3.236:18308/v1/contact/group_members/ +pc.callcenter.url.openapiSurrogacyAgent=http://192.168.3.236:18308/v1/agent +pc.callcenter.url.openapiSurrogacySendmessage=http://192.168.3.236:18308/v1/message_task +pc.callcenter.subscribeUrl=http://192.168.3.146/api/wxagentpcmessagesubscribe +pc.callcenter.url.sendMessageQueueName=oms-pc-msg +pc.callcenter.url.openapiContactsFeaturesgroup=http://192.168.3.236:18308/v1/contacts/ + +pc.message.url.messageTaskListUrl=http://192.168.3.236:18308/v1/message_task_list +pc.message.url.agentMessageTask=http://192.168.3.236:18308/v1/agent_message_task + +#cainiao param +cainiao.link.url=http://link.cainiao.com/gateway/link.do +cainiao.link.paramFormat=json +cainiao.link.appKey=650167 +cainiao.link.secretKey=lDO6y26nBJ6b5K96lnA1an447H1L0XK3 +cainiao.link.auth.grantpage=http://lcp.cloud.cainiao.com/permission/isv/grantpage.do +cainiao.link.auth.tokenUrl=http://lcp.cloud.cainiao.com/api/permission/exchangeToken.do +cainiao.link.auth.callbackUrl=https://api.oms.8zyun.cn/api/expressprint/auth/cainiao + +#fa wang +fineex.method.addOrder=fineex.wms.trades.add +fineex.method.cancelOrder=fineex.wms.trade.cancel +fineex.method.orderProcess=fineex.wms.trade.orderprocess.get +fineex.apiAddress=http://apicloud.fineex.net/Interface/InterfaceWeb/InterfaceFwWMS.ashx +fineex.method.goodsInventory=fineex.wms.product.inventory.get +fineex.method.orderConfirm=fineex.wms.trade.orderdetail.confirm +fineex.method.returnorderAdd=fineex.wms.trade.returnorder.add + + +qimen.api.appKey=30303007 +qimen.api.appSecret=80c63d1d8cf36a4c68b2df25fb93f703 +qimen.api.url=https://qimen.api.taobao.com/router/qmtest diff --git a/resources/application-production.properties b/resources/application-production.properties new file mode 100644 index 0000000..59dd423 --- /dev/null +++ b/resources/application-production.properties @@ -0,0 +1,74 @@ + +server.port=8200 +server.session.timeout=10 +server.connection-timeout=120000 + +spring.servlet.multipart.max-file-size=10MB +spring.servlet.multipart.max-request-size=20MB + +spring.jackson.time-zone=GMT+8 +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.mvc.dateFormat = yyyy-MM-dd HH:mm:ss +spring.gson.serialize-nulls=true + +#email config +mail.host=smtp.taover.com +mail.port=25 +mail.username=taover-robot@taover.com +mail.password=Lexi@1798 +mail.smtp.auth=true +mail.smtp.sendFrom=taover-robot@taover.com + +#logback xml config +logging.config=classpath:logback-production.xml + +#allow http method options +spring.mvc.dispatch-options-request=true +spring.mvc.async.request-timeout=200000 + +#DB info +spring.datasource.url=jdbc:mysql://rdsifmezqifmezqo.mysql.rds.aliyuncs.com:3306/bzyun_wxorder_prd?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true +spring.datasource.username=tylife +spring.datasource.password=lexi365 +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.max-idle=10 +spring.datasource.max-wait=10000 +spring.datasource.min-idle=5 +spring.datasource.initial-size=5 + +#zto analysis address url +zto.analysisAddress.url=https://hdgateway.zto.com/Word_AnalysisAddress +#taover analysis address url +taover.analysisAddress.url=http://address.taover.com/ +#kuaibao +kuaibao.analysisAddress.url=https://kop.kuaidihelp.com/api +kuaibao.analysisAddress.appId=105128 +kuaibao.analysisAddress.appKey=3310236ba4d6296e6e2346a7d9c824662510ff87 +kuaibao.analysisAddress.method=cloud.address.resolve +kuaibao.analysisAddress.methodSimple=cloud.address.cleanse + +#aliyun oss address +accessKeyId=H4fIVB56iHjR6zQw +accessKeySecret=7bA395UltFp16kWPJT7Pfz0XYXCk4Q +endpoint=oss-cn-beijing.aliyuncs.com +bucket_contact=8zyun-oss +aliyun.mnsEndpoint=http://1225610490807748.mns.cn-hangzhou.aliyuncs.com +#mobile message url +wwltData=sname=dlmzty00&spwd=A6cU4Tyx&scorpid=&sprdid=1012888 +wwltUrl=https://seccf.51welink.com/submitdata/service.asmx/g_Submit + +#pc api +pc.callcenter.url.openapiSurrogacyRegisteropenapi=https://ws.8zyun.cn:8080/v1/agent +pc.callcenter.url.openapiSurrogacyQuerycontacts=https://ws.8zyun.cn:8080/v1/contacts/ +pc.callcenter.url.openapiCallGroupMember=https://ws.8zyun.cn:8080/v1/contact/group_members/ +pc.callcenter.url.openapiSurrogacyAgent=https://ws.8zyun.cn:8080/v1/agent +pc.callcenter.url.openapiSurrogacySendmessage=https://ws.8zyun.cn:8080/v1/message_task +pc.callcenter.url.openapiContactsFeaturesgroup=https://ws.8zyun.cn:8080/v1/contactsMessageCount + +pc.callcenter.appid=c2MkSTjT8ghZ +pc.callcenter.seckey=7105ec065b8bb30fa6e3f13fccf92d0G +pc.callcenter.subscribeUrl=https://api.oms.8zyun.cn/api/wxagentpcmessagesubscribe +pc.callcenter.url.sendMessageQueueName=oms-pc-msg-production + +pc.message.url.messageTaskListUrl=https://ws.8zyun.cn:8080/v1/message_task_list +pc.message.url.agentMessageTask=https://ws.8zyun.cn:8080/v1/agent_message_task diff --git a/resources/application.properties b/resources/application.properties new file mode 100644 index 0000000..2ff6bc9 --- /dev/null +++ b/resources/application.properties @@ -0,0 +1,2 @@ +#RUNTIME_ENV=local development production +spring.profiles.active=local diff --git a/resources/logback-local.xml b/resources/logback-local.xml new file mode 100644 index 0000000..fb1e2ef --- /dev/null +++ b/resources/logback-local.xml @@ -0,0 +1,14 @@ + + + + encoders are assigned the type + ch.qos.logback.classic.encoder.PatternLayoutEncoder by default + + %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg %n + + + + + + + diff --git a/resources/logback-production.xml b/resources/logback-production.xml new file mode 100644 index 0000000..42cf975 --- /dev/null +++ b/resources/logback-production.xml @@ -0,0 +1,59 @@ + + + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg %n + + + + + smtp.taover.com + 465 + true + taover-robot@taover.com + Lexi@1798 + + taover-robot@taover.com + wangbin@taover.com + gaoming@taover.com + liuyunpeng@taover.com + 八爪云-data-analysis/ERROR:%logger{20} + + + + ERROR + ACCEPT + DENY + + + + 3 + + + + + logback-rolling.log + + + logback-roll-%d{yyyy-MM-dd}.%i.log + + 100MB + 60 + 5GB + + + %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg %n + + + + + + + + + + + + + diff --git a/src/com/taover/bazhuayun/analysis/script/goodscollect/GroupInfoExcelDataHeader.java b/src/com/taover/bazhuayun/analysis/script/goodscollect/GroupInfoExcelDataHeader.java index e22bda5..0126416 100644 --- a/src/com/taover/bazhuayun/analysis/script/goodscollect/GroupInfoExcelDataHeader.java +++ b/src/com/taover/bazhuayun/analysis/script/goodscollect/GroupInfoExcelDataHeader.java @@ -36,19 +36,14 @@ public class GroupInfoExcelDataHeader { continue; } } - } - + } public Integer getSenderNicknameIndex() { return senderNicknameIndex; } - - public void setSenderNicknameIndex(Integer senderNicknameIndex) { this.senderNicknameIndex = senderNicknameIndex; } - - public Integer getGroupNameIndex() { return groupNameIndex; } @@ -67,6 +62,4 @@ public class GroupInfoExcelDataHeader { public void setFielPathIndex(Integer fielPathIndex) { this.fielPathIndex = fielPathIndex; } - - } diff --git a/src/com/taover/bazhuayun/analysis/script/goodscollect/Main.java b/src/com/taover/bazhuayun/analysis/script/goodscollect/Main.java index f2b4be6..a3677a6 100644 --- a/src/com/taover/bazhuayun/analysis/script/goodscollect/Main.java +++ b/src/com/taover/bazhuayun/analysis/script/goodscollect/Main.java @@ -21,10 +21,11 @@ public class Main { public static void analysisGoodsName() throws Exception { String[] goodsNamePatternArr = new String[]{"商品名称","商品标题","货品名称","商品名称","商品信息","品名","商品型号","商品名","商品简称"}; String[] goodsSkuNameParrternArr = new String[]{"商品规格名","规格","商品规格","规格名称","商品型号"}; - String groupInfoFilePath = "C:\\Users\\86136\\Desktop\\悟空家数据分析\\groupinfo.xls"; - String goodsDataFileDirPath = "C:\\Users\\86136\\Desktop\\悟空家数据分析\\data"; - String logFilePath = "C:\\Users\\86136\\Desktop\\悟空家数据分析\\dealinfo.log"; - String resultDataFilePath = "C:\\Users\\86136\\Desktop\\悟空家数据分析\\result.xls"; + String dataDirPath = "C:\\Users\\Administrator\\Desktop\\悟空家数据核对-lff"; + String groupInfoFilePath = dataDirPath + File.separator + "groupinfo.csv"; + String goodsDataFileDirPath = dataDirPath + File.separator + "data"; + String logFilePath = dataDirPath + File.separator + "dealinfo.log"; + String resultDataFilePath = dataDirPath + File.separator + "result.xls"; //加载基础数据,文件来源 GroupInfoExcelData groupInfoData = new GroupInfoExcelData(); diff --git a/src/com/taover/bazhuayun/analysis/script/goodscollect/WindowMain.java b/src/com/taover/bazhuayun/analysis/script/goodscollect/WindowMain.java new file mode 100644 index 0000000..1cb79b2 --- /dev/null +++ b/src/com/taover/bazhuayun/analysis/script/goodscollect/WindowMain.java @@ -0,0 +1,56 @@ +package com.taover.bazhuayun.analysis.script.goodscollect; + +import java.awt.EventQueue; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JFileChooser; +import javax.swing.JFrame; + +public class WindowMain { + + private JFrame frame; + + /** + * Launch the application. + */ + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + WindowMain window = new WindowMain(); + window.frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the application. + */ + public WindowMain() { + initialize(); + } + + /** + * Initialize the contents of the frame. + */ + private void initialize() { + frame = new JFrame(); + frame.setBounds(100, 100, 450, 300); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + JFileChooser chooser = new JFileChooser(); + chooser.setSize(200, 50); + chooser.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + } + }); + frame.add(chooser); + } + +} diff --git a/src/com/taover/bazhuayun/analysis/script/orderdownload/Main.java b/src/com/taover/bazhuayun/analysis/script/orderdownload/Main.java new file mode 100644 index 0000000..334089a --- /dev/null +++ b/src/com/taover/bazhuayun/analysis/script/orderdownload/Main.java @@ -0,0 +1,11 @@ +package com.taover.bazhuayun.analysis.script.orderdownload; + +public class Main { + public static void main(String[] args) { + try { + //时间区间:21号凌晨 25号凌晨 + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/com/taover/bazhuayun/analysis/util/FileContentTypeUtils.java b/src/com/taover/bazhuayun/analysis/util/FileContentTypeUtils.java new file mode 100644 index 0000000..dbaa7c0 --- /dev/null +++ b/src/com/taover/bazhuayun/analysis/util/FileContentTypeUtils.java @@ -0,0 +1,83 @@ +package com.taover.bazhuayun.analysis.util; + +public class FileContentTypeUtils { + + public static String contentType(String filenameExtension) { + if (filenameExtension.equals(".BMP") || filenameExtension.equals(".bmp") + || filenameExtension.toUpperCase().equals(".BMP")) { + return "image/bmp"; + } + if (filenameExtension.equals(".GIF") || filenameExtension.equals(".gif") + || filenameExtension.toUpperCase().equals(".GIF")) { + return "image/gif"; + } + if (filenameExtension.equals(".JPEG") || filenameExtension.equals(".jpeg") || filenameExtension.equals(".JPG") + || filenameExtension.equals(".jpg") || filenameExtension.equals(".PNG") + || filenameExtension.equals(".png") || filenameExtension.toUpperCase().equals(".JPEG") + || filenameExtension.toUpperCase().equals(".JPG") || filenameExtension.toUpperCase().equals(".PNG")) { + return "image/jpeg"; + } + if (filenameExtension.equals(".HTML") || filenameExtension.equals(".html")) { + return "text/html"; + } + if (filenameExtension.equals(".TXT") || filenameExtension.equals(".txt") + || filenameExtension.toUpperCase().equals(".TXT")) { + return "text/plain"; + } + if (filenameExtension.equals(".VSD") || filenameExtension.equals(".vsd") + || filenameExtension.toUpperCase().equals(".VSD")) { + return "application/vnd.visio"; + } + if (filenameExtension.equals(".PPTX") || filenameExtension.equals(".pptx") || filenameExtension.equals(".PPT") + || filenameExtension.equals(".ppt") || filenameExtension.toUpperCase().equals(".PPTX") + || filenameExtension.toUpperCase().equals(".PPT")) { + return "application/vnd.ms-powerpoint"; + } + if (filenameExtension.equals(".DOCX") || filenameExtension.equals(".docx") || filenameExtension.equals(".DOC") + || filenameExtension.equals(".doc") || filenameExtension.toUpperCase().equals(".DOCX") + || filenameExtension.toUpperCase().equals(".DOC")) { + return "application/msword"; + } + if (filenameExtension.toUpperCase().equals(".XLSX")) { + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + } + if (filenameExtension.toUpperCase().equals(".XLS")) { + return "application/vnd.ms-excel"; + } + if (filenameExtension.equals(".XML") || filenameExtension.equals(".xml") + || filenameExtension.toUpperCase().equals(".XML")) { + return "text/xml"; + } + if (filenameExtension.equals(".pdf") || filenameExtension.equals(".PDF") + || filenameExtension.toUpperCase().equals(".PDF")) { + return "application/pdf"; + } + return null; + } + + public static String imgTypeValid(String dataPrix) { + if ("data:image/jpeg;".equalsIgnoreCase(dataPrix)) { + return ".jpeg"; + } else if ("data:image/jpg;".equalsIgnoreCase(dataPrix)) { + return ".jpg"; + } else if ("data:image/gif;".equalsIgnoreCase(dataPrix)) { + return ".gif"; + } else if ("data:image/png;".equalsIgnoreCase(dataPrix)) { + return ".png"; + } else if ("data:image/apng;".equalsIgnoreCase(dataPrix)) { + return ".apng"; + } else if ("data:image/svg;".equalsIgnoreCase(dataPrix)) { + return ".svg"; + } else if ("data:image/bmp;".equalsIgnoreCase(dataPrix)) { + return ".bmp"; + } + return null; + } + + public static String fileTypeValid(String dataPrix) { + if ("data:text/plain;".equalsIgnoreCase(dataPrix)) { + return ".txt"; + } + return null; + } +} diff --git a/src/com/taover/bazhuayun/analysis/web/StartUp.java b/src/com/taover/bazhuayun/analysis/web/StartUp.java index 27c4a86..4a7cebc 100644 --- a/src/com/taover/bazhuayun/analysis/web/StartUp.java +++ b/src/com/taover/bazhuayun/analysis/web/StartUp.java @@ -1,44 +1,13 @@ package com.taover.bazhuayun.analysis.web; -import org.apache.catalina.connector.Connector; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.util.UrlPathHelper; @SpringBootApplication @EnableAspectJAutoProxy(exposeProxy=true, proxyTargetClass=true) -public class StartUp implements WebMvcConfigurer { - public static ConfigurableApplicationContext context; - +public class StartUp { public static void main(String[] args) { - System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); - StartUp.context = SpringApplication.run(StartUp.class, args); - } - - @Override - public void configurePathMatch(PathMatchConfigurer configurer) { - UrlPathHelper urlPathHelper = new UrlPathHelper(); - urlPathHelper.setUrlDecode(false); - configurer.setUrlPathHelper(urlPathHelper); - } - - @Bean - public ServletWebServerFactory servletContainer() { - TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); - tomcat.addAdditionalTomcatConnectors(createStandardConnector()); - return tomcat; - } - - private Connector createStandardConnector() { - Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); - connector.setPort(0); - return connector; + SpringApplication.run(StartUp.class, args); } } \ No newline at end of file diff --git a/src/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java b/src/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java new file mode 100644 index 0000000..dbe4048 --- /dev/null +++ b/src/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java @@ -0,0 +1,81 @@ +package com.taover.bazhuayun.analysis.web.controller; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.taover.bazhuayun.analysis.util.FileContentTypeUtils; +import com.taover.bazhuayun.analysis.web.service.ExportCenterService; +import com.taover.util.UtilLog; + +@RestController("exportcenter") +@RequestMapping("/exportcenter") +public class ExportCenterController { + @Resource + private ExportCenterService exportCenterService; + + @GetMapping("/wareorderfile") + public void wareOrderFile(@RequestParam(name="tenantId", required=true) Integer tenantId, + @RequestParam(name="startDate", defaultValue = "") String startDateStr, + @RequestParam(name="endDate", defaultValue = "") String endDateStr, + HttpServletResponse response) { + Date startDate = new Date(); + Date endDate = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if(StringUtils.isNotBlank(startDateStr)) { + try { + startDate = sdf.parse(startDateStr.substring(0, 10)); + } catch (ParseException e) { + e.printStackTrace(); + } + } + if(StringUtils.isNotBlank(endDateStr)) { + try { + endDate = sdf.parse(endDateStr.substring(0, 10)); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + File orderFile = null; + try { + orderFile = this.exportCenterService.wareOrderFile(tenantId, startDate, endDate); + } catch (IOException e1) { + UtilLog.errorForException(e1, this.getClass()); + return; + } + try { + this.writeFielToResponse(response, orderFile); + } catch (IOException e) { + UtilLog.errorForException(e, this.getClass()); + } + } + + private void writeFielToResponse(HttpServletResponse response, File file) throws IOException { + OutputStream stream = response.getOutputStream(); + FileInputStream reader = new FileInputStream(file); + byte[] data= new byte[(int)file.length()]; + reader.read(data); + reader.close(); + + //记得设置ContentType + String fileName = file.getName(); + response.setContentType(FileContentTypeUtils.contentType(fileName.substring(fileName.lastIndexOf(".")))); + response.setHeader("Content-Dis", "filename="+file.getName()); + stream.write(data); + stream.flush(); + } +} diff --git a/src/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java b/src/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java new file mode 100644 index 0000000..60ca41f --- /dev/null +++ b/src/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java @@ -0,0 +1,72 @@ +package com.taover.bazhuayun.analysis.web.service; + +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import cn.hutool.poi.excel.ExcelUtil; + +@Service +public class ExportCenterService { + @Resource + private JdbcTemplate jdbcTemplate; + + public File wareOrderFile(Integer tenantId, Date startDate, Date endDate) throws IOException { + //查询agentID + String agentIdQuery = "select agent_id from wxorder_agent_pc where tenant_id="+tenantId+" limit 1 "; + Integer agentId = this.jdbcTemplate.queryForObject(agentIdQuery, Integer.class); + + //查询仓库对应群列表 + String wareGroupQuery = "select wx_group_ssid,wx_group_nickname,name from wxorder_ware where tenant_id="+tenantId; + List> groupData = this.jdbcTemplate.queryForList(wareGroupQuery); + + //依据群id,获取数据列表 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String startDateStr = sdf.format(startDate)+" 00:00:00"; + String endDateStr = sdf.format(endDate)+" 00:00:00"; + List> messageData = new ArrayList>(); + String messageQuery = "select room_wxid,sender_nickname,created_at,file_path from bzyun_wechat.messages where created_at>'"+startDateStr+"' and created_at<'"+endDateStr+"' and agent_id="+agentId+" and kind='FILE' and file_path not like '%【异常物流信息】%' and recall=0 and room_wxid=? "; + for(Map item: groupData) { + String wxGroupSsid = item.get("wx_group_ssid").toString(); + List> itemData = this.jdbcTemplate.queryForList(messageQuery, wxGroupSsid); + for(Map messageItem: itemData) { + messageItem.putAll(item); + } + messageData.addAll(itemData); + } + + //生成本地excel文件 + List> data = new ArrayList>(); + List headerData = new ArrayList(); + headerData.add("群名称"); + headerData.add("room_wxid"); + headerData.add("创建时间"); + headerData.add("发送人昵称"); + headerData.add("文件路径"); + headerData.add("仓库名称"); + data.add(headerData); + for(Map item: messageData) { + List itemData = new ArrayList(); + itemData.add(item.get("wx_group_nickname")); + itemData.add(item.get("room_wxid")); + itemData.add(item.get("created_at")); + itemData.add(item.get("sender_nickname")); + itemData.add(item.get("file_path")); + itemData.add(item.get("name")); + data.add(itemData); + } + File excelFile = File.createTempFile("wareorderfile", ".xlsx"); + ExcelUtil.getWriter(true).write(data).flush(excelFile); + return excelFile; + } + +} -- libgit2 0.21.2