Commit 37a63d8c by chenqiufeng

init

parents
lib
target
Camel Router Spring Project
===========================
To build this project use
mvn install
To run this project with Maven use
mvn camel:run
For more help see the Apache Camel documentation
http://camel.apache.org/
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<content url="file://$MODULE_DIR$/../../src/main/java">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
</content>
<content url="file://$MODULE_DIR$/../../src/main/resources">
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
</content>
<content url="file://$MODULE_DIR$/../../src/test/java">
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/fastjson-1.2.2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: org.apache.camel:camel-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-core-engine:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-api:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-base:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-management-api:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-support:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-util:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-core-languages:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-bean:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-browse:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-caffeine-lrucache:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-cluster:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-controlbus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-dataformat:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-dataset:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-direct:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-directvm:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-file:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-core-catalog:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-health:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-language:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-log:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-mock:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-ref:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-rest:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-tooling-model:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-util-json:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-saga:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-scheduler:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-seda:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-stub:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-timer:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-validator:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-vm:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-xpath:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-xslt:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-xml-jaxb:3.4.2" level="project" />
<orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.2" level="project" />
<orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-xml-jaxp:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-spring-main:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-spring:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-core-xml:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.camel:camel-main:3.4.2" level="project" />
<orderEntry type="module-library">
<library name="Maven: ingageSDK:ingageSDK:unknown">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/ingageSDK.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.birt.runtime.3_7_1:com.lowagie.text:2.1.7" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.11.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.0" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.camel:camel-test-spring:3.4.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.camel:camel-test:3.4.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.6" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.11" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.olm</groupId>
<artifactId>olmcrm</artifactId>
<packaging>jar</packaging>
<description>A tools for crm's report output PDF</description>
<version>3.0-SNAPSHOT</version>
<!-- <name>A Camel Spring Route</name>-->
<name>olm-crm-pdf</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<log4j2.version>2.13.3</log4j2.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Camel BOM -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bom</artifactId>
<version>3.4.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>ingageSDK</groupId>
<artifactId>ingageSDK</artifactId>
<version>1.0</version>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/lib/ingageSDK.jar</systemPath>-->
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-main</artifactId>
</dependency>
<dependency>
<groupId>ingageSDK</groupId>
<artifactId>ingageSDK</artifactId>
<version>1.0</version>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/lib/ingageSDK.jar</systemPath>-->
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.birt.runtime.3_7_1/com.lowagie.text -->
<dependency>
<groupId>org.eclipse.birt.runtime.3_7_1</groupId>
<artifactId>com.lowagie.text</artifactId>
<version>2.1.7</version>
</dependency>
<!-- logging -->
<!-- <dependency>-->
<!-- <groupId>org.apache.logging.log4j</groupId>-->
<!-- <artifactId>log4j-core</artifactId>-->
<!-- <version>2.11.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.logging.log4j</groupId>-->
<!-- <artifactId>log4j-api</artifactId>-->
<!-- <version>2.11.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>log4j</groupId>-->
<!-- <artifactId>log4j</artifactId>-->
<!-- <version>1.2.12</version>-->
<!-- </dependency>-->
<!-- testing -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-spring</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
<exclusion>
<artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
<exclusions>
<exclusion>
<artifactId>commons-codec</artifactId>
<groupId>commons-codec</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.11</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>ch.qos.logback</groupId>-->
<!-- <artifactId>logback-classic</artifactId>-->
<!-- <version>1.3.0-alpha4</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>slf4j-api</artifactId>-->
<!-- <version>1.7.30</version>-->
<!-- </dependency>-->
<!-- log4j2和slf4j桥接依赖-->
<!-- <dependency>-->
<!-- <groupId>org.apache.logging.log4j</groupId>-->
<!-- <artifactId>log4j-slf4j-impl</artifactId>-->
<!-- <version>${log4j2.version}</version>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <artifactId>slf4j-api</artifactId>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
<!-- </dependency>-->
<!-- log4j2依赖-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.3</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<!--添加项目中主类-->
<mainClass>com.olm.common.RequestUtilsItext</mainClass>
</manifest>
</archive>
<descriptorRefs>
<!--给jar包起的别名-->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/libs</extdirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<person user="james">
<firstName>James</firstName>
<lastName>Strachan</lastName>
<city>London</city>
</person>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<person user="hiram">
<firstName>Hiram</firstName>
<lastName>Chirino</lastName>
<city>Tampa</city>
</person>
\ No newline at end of file
package com.olm.common;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.itextpdf.text.DocumentException;
import com.olm.util.Configure;
import com.olm.util.FileUtilText;
import com.olm.util.LasMonth;
import com.rkhd.platform.sdk.http.CommonData;
import com.rkhd.platform.sdk.http.CommonHttpClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.utils.DateUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Objects;
import static com.olm.util.TokenTest.getAccessTokenString;
/**
* ClassName:RequestUtilsItext Package:PACKAGE_NAME Date:2020/7/27 Auth:penghui@olm.com.cn
*/
@Slf4j
public class RequestUtilsItext {
private static String fistAll;
private static String fileoutpath;
private static boolean isDebug= false;
public static void main(String args[]) {
log.info("开始执行");
// YYYY-MM-DD
Calendar cd = Calendar.getInstance();
Date ld = new LasMonth.LastMonthDate().convert(cd);//上个月25号
Date lld = new LasMonth.LastLastMonthDate().convert(cd);// 上上个月26号
if(args!=null && args.length>0){
String rq = "";
for(String s : args){
if (StrUtil.contains(s, "-")){
rq = s;
break;
}
}
if(StrUtil.isEmpty(rq)){
lld = new LasMonth.LastLastMonthDate().convert(cd);
}else{
lld = DateUtil.parseDate(rq);
}
log.info("获取数据的开始时间" + rq);
}
log.info("time " + DateUtil.now());
fileoutpath = Configure.getValue("fileoutpath");
if (StrUtil.contains(fileoutpath, "2022")){
fileoutpath = fileoutpath.replace("2022", DateUtil.format(DateUtil.date(), "YYYY"));
}
fistAll = Configure.getValue("fistAll");
FileUtilText.writeTxtFile("------------------------------------- \n");
//当前时间
log.info("-------------------------------------");
log.info("执行开始时间:" + DateUtil.now());
//生成PDF
autoGenPdf(ld, lld);
log.info("执行结束时间:" + DateUtil.now());
log.info("-------------------------------------");
}
/**
* 生成PDF
* @param ld 截止时间(上个月25号)
* @param lld 开始时间(上上个月26号)
*/
private static void autoGenPdf(Date ld, Date lld){
FileUtilText.writeTxtFile("执行开始时间:" + DateUtil.now());
String accessToken = getAccessTokenString();
CommonHttpClient rkhdHttpClient = CommonHttpClient.instance();
FileUtilText.writeTxtFile("非驻场业务-服务报告单:");
//执行非驻场业务.需要通过limit n,m 取值
if (fistAll.equals("true")) {
//2022-09-24 模板ID有修改 2445020587458656
int[] steeps = RequestUtilsItext.getstep();
for (int setp : steeps) {
RequestUtilsItext.fzc(rkhdHttpClient, accessToken, setp, ld, lld);
log.info("服务报告单处理数:" + setp);
}
} else {
RequestUtilsItext.fzc(rkhdHttpClient, accessToken, 1, ld, lld);
log.info("服务报告单处理.");
}
if (!isDebug){
//执行驻场-售后派工单。400多条。打印模板id:794158019789010,fieldJob
FileUtilText.writeTxtFile("执行驻场-售后派工单:");
RequestUtilsItext.zc(rkhdHttpClient, accessToken, ld, lld);
//执行驻场-售后派工单-管理层创建。500多条。打印模板id:805605251514666,fieldJob
FileUtilText.writeTxtFile("售后派工单-管理层创建:");
RequestUtilsItext.zcnew(rkhdHttpClient, accessToken, "驻场", "售后派工单-管理层创建", "805605251514666", ld, lld);
//派工单-驻场-售前派工单.301条。 804204168790256 805605105664259
FileUtilText.writeTxtFile("售前派工单:");
RequestUtilsItext.zcnew(rkhdHttpClient, accessToken, null, "售前派工单", "804204168790256", ld, lld);
//派工单-售前派工单-管理层创建.146条。 805605105664259
FileUtilText.writeTxtFile("售前派工单-管理层创建:");
RequestUtilsItext.zcnew(rkhdHttpClient, accessToken, null, "售前派工单-管理层创建", "805605105664259", ld, lld);
//派工单-提前执行派工单.80条 805603764846892
FileUtilText.writeTxtFile("提前执行派工单:");
RequestUtilsItext.zcnew(rkhdHttpClient, accessToken, null, "提前执行派工单", "805603764846892", ld, lld);
//派工单-提前执行派工单.63条 805604259545318
FileUtilText.writeTxtFile("提前执行派工单-管理层创建:");
RequestUtilsItext.zcnew(rkhdHttpClient, accessToken, null, "提前执行派工单-管理层创建", "805604259545318", ld, lld);
}
FileUtilText.writeTxtFile("执行结束时间:" +DateUtil.now());
FileUtilText.writeTxtFile("-------------------------------------");
}
/**
* 获取数据Get类型
* @param rkhdHttpClient
* @param accessToken
* @param urls
* @return
*/
public static byte[] getRecord(CommonHttpClient rkhdHttpClient, String accessToken, String urls) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("GET");
data.setCallString(urls);
JSONObject response = JSONObject.parseObject(rkhdHttpClient.execute(data).getResult());
if (StrUtil.isEmpty(response.getString("data"))) {
log.info("getRecord数据查询错误." + urls);
return null;
}
return response.getBytes("data");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取数据POST类型
* @param crmHttpClient 销售易客户端
* @param accessToken token
* @param xoql 查询的SQL
* @return
*/
public static JSONArray postRecord(CommonHttpClient crmHttpClient, String accessToken, String xoql) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("POST");
data.setCallString("https://api.xiaoshouyi.com/rest/data/v2.0/query/xoql");
data.putFormData("xoql", xoql);
data.putFormData("useSimpleCode", true);
JSONObject response = JSONObject.parseObject(crmHttpClient.execute(data).getResult());
JSONObject result = JSONObject.parseObject(response.getString("data"));
// 2023-11-22 判断是否存在key
if (result != null && result.containsKey("records")){
return result.getJSONArray("records");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取数据Post类型
* @param rkhdHttpClient
* @param accessToken
* @param xoql
* @return
*/
public static JSONObject postRecordObject(CommonHttpClient rkhdHttpClient, String accessToken, String xoql) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("POST");
data.setCallString("https://api.xiaoshouyi.com/rest/data/v2.0/query/xoql");
data.putFormData("xoql", xoql);
data.putFormData("useSimpleCode", true);
JSONObject response = JSONObject.parseObject(rkhdHttpClient.execute(data).getResult());
JSONObject result = JSONObject.parseObject(response.getString("data"));
//JSONObject records = result.getJSONArray("data");
/* if (response.getString("records") == null){
System.out.println("postRecord数据查询错误.");
}*/
//return records;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 非驻场
*
* @param rkhdHttpClient
* @param accessToken
*/
public static void fzc(CommonHttpClient rkhdHttpClient, String accessToken, int setps, Date ld, Date lld) {
try {
//处理服务报告单----非驻场,包含售前、售后
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--非驻场
Long customItem52 = Long.parseLong("2");
//获得时间访问
//SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
//Calendar d = Calendar.getInstance();
//Date ld = new LasMonth.LastMonthDate().convert(d);
//Date lld = new LasMonth.LastLastMonthDate().convert(d);
//lld = DateUtil.parseDate("2022-01-01");
//ld = DateUtil.parseDate("2022-01-31");
StringBuilder fzc = new StringBuilder();
fzc.append("select id,name,customItem1__c,customItem29__c,customItem52__c, D1__c,customItem98__c,customItem42__c ");
fzc.append(", customItem68__c, customItem40__c, customItem72__c, customItem68__c ");
fzc.append(" from customEntity1__c ");
fzc.append(" where approvalStatus= 3 ");
fzc.append(" and customItem52__c = ");
fzc.append(customItem52);
if (fistAll.equals("true")) {
fzc.append(" order by name asc");
fzc.append(" limit ");
fzc.append(setps);
fzc.append(",");
fzc.append("3000");
} else {
fzc.append(" and D1__c > ");
fzc.append(lld.getTime());
fzc.append(" and D1__c < ");
fzc.append(ld.getTime());
}
//fzc.append(" and customItem42__c like '%秦皇岛%'");//and customItem42__c like '%秦皇岛%'
log.info("查询报告单总数SQL --> " + fzc.toString());
JSONArray records = RequestUtilsItext.postRecord(rkhdHttpClient, accessToken, fzc.toString());
assert records != null;
int itemNum = records.size();
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + "总数:" + itemNum);
for (int i = 0; i < itemNum; i++) {
StringBuilder sb = new StringBuilder();
String id = StrUtil.toString(records.getJSONObject(i).get("id"));
String fname = StrUtil.toString(records.getJSONObject(i).get("name"));
String officename = StrUtil.toString(records.getJSONObject(i).getString("customItem98__c"));//分公司销售部
String custemname = StrUtil.toString(records.getJSONObject(i).getString("customItem42__c"));//客户名
String customItem29__c = StrUtil.toString(records.getJSONObject(i).getString("customItem29__c"));//合同号
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/customEntity1__c/");
sb.append(id);
//sb.append("/756457200189639");
sb.append("/2445020587458656"); //新模板
//System.out.println("文件数:" + records.size() + "-" + i);
log.info("文件数:" +itemNum + "-" + i);
log.info("获取每个服务报告单的详情信息,URL : " + sb.toString());
byte[] reportData = RequestUtilsItext.getRecord(rkhdHttpClient, accessToken, sb.toString());
if (reportData!=null){
new RequestUtilsItext().writePdf(reportData, fname, officename, custemname, customItem29__c);
}else{
log.info("未获取到数据!");
}
}
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + "总数:" + itemNum + ",执行完成.");
} catch (Exception e) {
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + ",执行失败.");
System.out.println("Exception:" + e);
}
}
/**
* 派工单-驻场-售后派工单 现在都是管理层创建,只有400条左右是早期工程师创建输入这个范围,一次性输出。
*
* @param rkhdHttpClient
* @param accessToken
* @param ld lastDay
* @param lld lastLastDay
*/
public static void zc(CommonHttpClient rkhdHttpClient, String accessToken, Date ld, Date lld) {
try {
//处理服务报告单----驻场,包含售后派工单
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--驻场
//获得时间访问
//SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
//Calendar d = Calendar.getInstance();
//Date ld = new LasMonth.LastMonthDate().convert(d);
//Date lld = new LasMonth.LastLastMonthDate().convert(d);
StringBuilder zc = new StringBuilder();
zc.append("select id,customItem31__c,caseNo,customItem91__c,fieldJobAccountId,fieldJobAccountId from fieldJob where customItem55__c ='驻场' and customItem48__c ='售后派工单' ");
//现在都是管理层创建,只有400条左右输入这个范围,所以去掉过滤。
if (!fistAll.equals("true")) {
zc.append(" and appointmentEndTime > ");
zc.append(lld.getTime());
zc.append(" and appointmentEndTime < ");
zc.append(ld.getTime());
}
log.info("驻场工单执行SQL: " + zc.toString());
JSONArray records = RequestUtilsItext.postRecord(rkhdHttpClient, accessToken, zc.toString());
//获得客户列表
String custemsql = "select id,accountName from account";
JSONArray custemrecords = RequestUtilsItext.postRecord(rkhdHttpClient, accessToken, custemsql);
HashMap hashMap = new HashMap();
for (int j = 0; j < custemrecords.size(); j++) {
hashMap.put(custemrecords.getJSONObject(j).get("id"), custemrecords.getJSONObject(j).get("accountName"));
}
int recordsNum = records.size();
FileUtilText.writeTxtFile("驻场-售后派工单-" + "总数:" + recordsNum);
for (int i = 0; i < recordsNum; i++) {
StringBuffer sb = new StringBuffer();
Object id = records.getJSONObject(i).get("id");
Object fname = records.getJSONObject(i).get("caseNo");
Object officename = records.getJSONObject(i).getString("customItem91__c");
Object customItem31__c = records.getJSONObject(i).getString("customItem31__c");
Object custemname = records.getJSONObject(i).getString("fieldJobAccountId"); //客户id
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/fieldJob/");
sb.append(id.toString());
sb.append("/794158019789010");
//System.out.println("文件数:" + records.size() + "-" + i);
log.info("文件数:" + recordsNum + "-" + i);
byte[] printdate = RequestUtilsItext.getRecord(rkhdHttpClient, accessToken, sb.toString());
new RequestUtilsItext().writePdf(printdate, fname.toString(), officename.toString(), hashMap.get(custemname.toString()).toString(), customItem31__c.toString());
}
FileUtilText.writeTxtFile("驻场-售后派工单-" + "总数:" + recordsNum + ",执行完成.");
} catch (Exception e) {
FileUtilText.writeTxtFile("驻场-售后派工单-" + ",执行失败.");
System.out.println("Exception:" + e);
}
}
/**
* 派工单-驻场-售前派工单 804204168790256 805605105664259 派工单-驻场-提前执行派工单 805604259545318 805603764846892 派工单-驻场-提前执行派工单-管理层创建 派工单-驻场-售前派工单-管理层创建 派工单-驻场-售后派工单-管理层创建 805605251514666 794158019789010
*
* @param rkhdHttpClient
* @param accessToken
* @param ld lastDay
* @param lld lastLastDay
*/
public static void zcnew(CommonHttpClient rkhdHttpClient, String accessToken, String customItem55, String customItem48, String templatePrintId, Date ld, Date lld) {
try {
//处理服务报告单----驻场,包含售前、售后
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--驻场
//获得时间访问
//SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
//Calendar d = Calendar.getInstance();
//Date ld = new LasMonth.LastMonthDate().convert(d);
//Date lld = new LasMonth.LastLastMonthDate().convert(d);
StringBuilder zc = new StringBuilder();
zc.append("select id,caseNo,customItem91__c,customItem31__c,fieldJobAccountId,fieldJobAccountId from fieldJob where ");
zc.append("1=1");
if (customItem55 != null) {
zc.append(" and customItem55__c = ");
zc.append("'");
zc.append(customItem55);
zc.append("'");
}
zc.append(" and customItem48__c = ");
zc.append("'");
zc.append(customItem48);
zc.append("'");
//现在都是管理层创建,只有400条左右输入这个范围,所以去掉过滤。
if (!fistAll.equals("true")) {
zc.append(" and appointmentEndTime > ");
zc.append(lld.getTime());
zc.append(" and appointmentEndTime < ");
zc.append(ld.getTime());
}
log.info("驻场(new)工单执行SQL: " + zc.toString());
JSONArray records = RequestUtilsItext.postRecord(rkhdHttpClient, accessToken, zc.toString());
//获得客户列表
String custemsql = "select id,accountName from account";
JSONArray custemrecords = RequestUtilsItext.postRecord(rkhdHttpClient, accessToken, custemsql);
HashMap hashMap = new HashMap();
for (int j = 0; j < Objects.requireNonNull(custemrecords).size(); j++) {
hashMap.put(custemrecords.getJSONObject(j).get("id"), custemrecords.getJSONObject(j).get("accountName"));
}
assert records != null;
int recordsNum = records.size();
FileUtilText.writeTxtFile("总数:" + recordsNum);
for (int i = 0; i < recordsNum; i++) {
StringBuffer sb = new StringBuffer();
Object id = records.getJSONObject(i).get("id");
Object fname = records.getJSONObject(i).get("caseNo");
Object officename = records.getJSONObject(i).getString("customItem91__c");
Object customItem31__c = records.getJSONObject(i).getString("customItem31__c");
Object custemname = records.getJSONObject(i).getString("fieldJobAccountId"); //客户id
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/fieldJob/");
sb.append(id.toString());
sb.append("/");
sb.append(templatePrintId);
//System.out.println("文件数:" + records.size() + "-" + i);
log.info("文件数:" + recordsNum + "-" + i);
byte[] printdate = RequestUtilsItext.getRecord(rkhdHttpClient, accessToken, sb.toString());
new RequestUtilsItext().writePdf(printdate, fname.toString(), officename.toString(), hashMap.get(custemname.toString()).toString(), customItem31__c.toString());
}
FileUtilText.writeTxtFile("总数:" + recordsNum + ",执行完成");
} catch (Exception e) {
FileUtilText.writeTxtFile(",执行失败.");
log.error("生成驻场报告时异常", e);
}
}
/**
* 步长
* @return
*/
public static int[] getstep() {
int[] data = new int[9];
data[0] = 0;
data[1] = 3000;
data[2] = 6000;
data[3] = 9000;
data[4] = 12000;
data[5] = 15000;
data[6] = 18000;
data[7] = 21000;
data[8] = 24000;
return data;
}
/**
* 生成PDF
* @param s
* @param id
* @param officeName
* @param customerName
* @param customItem29__c
* @throws DocumentException
*/
public void writePdf(byte[] s, String id, String officeName, String customerName, String customItem29__c){
String outpath = fileoutpath;
String pdffile;
try {
String oficname = outpath.concat(officeName);//分公司
String custname = oficname.concat(File.separator).concat(customerName);//客户名称
if (customItem29__c != null) {
pdffile = custname.concat(File.separator).concat(customItem29__c).concat("_").concat(id).concat(".pdf");
} else {
pdffile = custname.concat(File.separator).concat(id).concat(".pdf");
}
//判断是否存在,如果不存在则创建
this.creatDir(custname, pdffile);
FileOutputStream fOut = new FileOutputStream(new File(pdffile));
fOut.write(s);
fOut.close();
} catch (Exception e) {
log.error("创建PDF文件时异常", e);
}
}
/**
* 判断文件、文件夹是否存在,不存在时新建
* @param filePath
* @param fileName
* @throws IOException
*/
public void creatDir(String filePath, String fileName) throws IOException {
File file_path = new File(filePath);
if (!file_path.exists()) { //用来测试此路径名表示的文件或目录是否存在
boolean isOk= file_path.mkdirs();//创建目录
if (isOk){
log.info("文件夹不存在,自动创建成功!"+ filePath);
}
}
File file = new File(fileName);
if (!file.exists()) {
boolean isOk= file.createNewFile();//创建文件
if (isOk){
log.info("文件不存在,自动创建成功!" + fileName);
}
}
}
}
\ No newline at end of file
package com.olm.common;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lowagie.text.DocumentException;
import com.olm.util.Configure;
import com.olm.util.FileUtilText;
import com.olm.util.LasMonth;
import com.rkhd.platform.sdk.http.CommonData;
import com.rkhd.platform.sdk.http.CommonHttpClient;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.Logger;
import static com.olm.util.TokenTest.getAccessTokenString;
@Slf4j
/**
* ClassName:RequestUtils Package:PACKAGE_NAME Date:2020/7/27 Auth:penghui@olm.com.cn
*/
public class RequestUtilsLowagie {
static Logger logger = Logger.getLogger(String.valueOf(RequestUtilsLowagie.class));
static String fistAll;
static String fileoutpath;
public static byte[] getRecord(CommonHttpClient rkhdHttpClient, String accessToken, String urls) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("GET");
data.setCallString(urls);
JSONObject response = JSONObject.parseObject(rkhdHttpClient.execute(data).getResult());
if (response.getString("data") == null) {
System.out.println("getRecord数据查询错误." + urls);
}
return response.getBytes("data");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static JSONArray postRecord(CommonHttpClient rkhdHttpClient, String accessToken, String xoql) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("POST");
data.setCallString("https://api.xiaoshouyi.com/rest/data/v2.0/query/xoql");
data.putFormData("xoql", xoql);
data.putFormData("useSimpleCode", true);
JSONObject response = JSONObject.parseObject(rkhdHttpClient.execute(data).getResult());
log.info("CRM接口返回信息:" + response.toJSONString());
JSONObject result = JSONObject.parseObject(response.getString("data"));
if (result!= null && result.containsKey("records")){
return result.getJSONArray("records");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static JSONObject postRecordObject(CommonHttpClient rkhdHttpClient, String accessToken, String xoql) {
CommonData data = new CommonData();
try {
data.putHeader("Authorization", accessToken);
data.setCall_type("POST");
data.setCallString("https://api.xiaoshouyi.com/rest/data/v2.0/query/xoql");
data.putFormData("xoql", xoql);
data.putFormData("useSimpleCode", true);
JSONObject response = JSONObject.parseObject(rkhdHttpClient.execute(data).getResult());
JSONObject result = JSONObject.parseObject(response.getString("data"));
//JSONObject records = result.getJSONArray("data");
/* if (response.getString("records") == null){
System.out.println("postRecord数据查询错误.");
}*/
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 非驻场
*
* @param rkhdHttpClient
* @param accessToken
*/
public static void fzc(CommonHttpClient rkhdHttpClient, String accessToken, int setps) {
try {
//处理服务报告单----非驻场,包含售前、售后
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--非驻场
Long customItem52 = Long.parseLong("2");
//获得时间访问
SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
Calendar d = Calendar.getInstance();
Date ld = new LasMonth.LastMonthDate().convert(d);
Date lld = new LasMonth.LastLastMonthDate().convert(d);
StringBuffer fzc = new StringBuffer();
fzc.append("select id,name,customItem1__c,customItem29__c,customItem52__c,D1__c,customItem98__c,customItem42__c from customEntity1__c where approvalStatus= 3");
fzc.append(" and customItem52__c = ");
fzc.append(customItem52);
if (fistAll.equals("true")) {
fzc.append(" order by name asc");
fzc.append(" limit ");
fzc.append(setps);
fzc.append(",");
fzc.append("3000");
} else {
fzc.append(" and D1__c > ");
fzc.append(lld.getTime());
fzc.append(" and D1__c < ");
fzc.append(ld.getTime());
}
JSONArray records = RequestUtilsLowagie.postRecord(rkhdHttpClient, accessToken, fzc.toString());
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + "总数:" + records.size());
for (int i = 0; i < records.size(); i++) {
StringBuffer sb = new StringBuffer();
Object id = records.getJSONObject(i).get("id");
Object fname = records.getJSONObject(i).get("name");
Object officename = records.getJSONObject(i).getString("customItem98__c");
Object custemname = records.getJSONObject(i).getString("customItem42__c");
Object customItem29__c = records.getJSONObject(i).getString("customItem29__c");
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/customEntity1__c/");
sb.append(id.toString());
sb.append("/756457200189639");
System.out.println("文件数:" + records.size() + "-" + i);
logger.info("文件数:" + records.size() + "-" + i);
byte[] printdate = RequestUtilsLowagie.getRecord(rkhdHttpClient, accessToken, sb.toString());
new RequestUtilsLowagie().writePdf(printdate, fname.toString(), officename.toString(), custemname.toString(), customItem29__c.toString());
}
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + "总数:" + records.size() + ",执行完成.");
} catch (Exception e) {
FileUtilText.writeTxtFile("非驻场-售后服务报告单-" + ",执行失败.");
System.out.println("Exception:" + e);
}
}
/**
* 派工单-驻场-售后派工单 现在都是管理层创建,只有400条左右是早期工程师创建输入这个范围,一次性输出。
*
* @param rkhdHttpClient
* @param accessToken
*/
public static void zc(CommonHttpClient rkhdHttpClient, String accessToken) {
try {
//处理服务报告单----驻场,包含售后派工单
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--驻场
//获得时间访问
SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
Calendar d = Calendar.getInstance();
Date ld = new LasMonth.LastMonthDate().convert(d);
Date lld = new LasMonth.LastLastMonthDate().convert(d);
StringBuffer fzc = new StringBuffer();
fzc.append("select id,customItem31__c,caseNo,customItem91__c,fieldJobAccountId,fieldJobAccountId from fieldJob where customItem55__c ='驻场' and customItem48__c ='售后派工单'");
//现在都是管理层创建,只有400条左右输入这个范围,所以去掉过滤。
if (!fistAll.equals("true")) {
fzc.append(" and appointmentEndTime > ");
fzc.append(lld.getTime());
fzc.append(" and appointmentEndTime < ");
fzc.append(ld.getTime());
}
JSONArray records = RequestUtilsLowagie.postRecord(rkhdHttpClient, accessToken, fzc.toString());
//获得客户列表
String custemsql = "select id,accountName from account";
JSONArray custemrecords = RequestUtilsLowagie.postRecord(rkhdHttpClient, accessToken, custemsql);
HashMap hashMap = new HashMap();
for (int j = 0; j < custemrecords.size(); j++) {
hashMap.put(custemrecords.getJSONObject(j).get("id"), custemrecords.getJSONObject(j).get("accountName"));
}
FileUtilText.writeTxtFile("驻场-售后派工单-" + "总数:" + records.size());
for (int i = 0; i < records.size(); i++) {
StringBuffer sb = new StringBuffer();
Object id = records.getJSONObject(i).get("id");
Object fname = records.getJSONObject(i).get("caseNo");
Object officename = records.getJSONObject(i).getString("customItem91__c");
Object customItem31__c = records.getJSONObject(i).getString("customItem31__c");
Object custemname = records.getJSONObject(i).getString("fieldJobAccountId"); //客户id
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/fieldJob/");
sb.append(id.toString());
sb.append("/794158019789010");
System.out.println("文件数:" + records.size() + "-" + i);
logger.info("文件数:" + records.size() + "-" + i);
byte[] printdate = RequestUtilsLowagie.getRecord(rkhdHttpClient, accessToken, sb.toString());
new RequestUtilsLowagie().writePdf(printdate, fname.toString(), officename.toString(), hashMap.get(custemname.toString()).toString(), customItem31__c.toString());
}
FileUtilText.writeTxtFile("驻场-售后派工单-" + "总数:" + records.size() + ",执行完成.");
} catch (Exception e) {
FileUtilText.writeTxtFile("驻场-售后派工单-" + ",执行失败.");
System.out.println("Exception:" + e);
}
}
/**
* 派工单-驻场-售前派工单 804204168790256 805605105664259 派工单-驻场-提前执行派工单 805604259545318 805603764846892 派工单-驻场-提前执行派工单-管理层创建 派工单-驻场-售前派工单-管理层创建 派工单-驻场-售后派工单-管理层创建 805605251514666 794158019789010
*
* @param rkhdHttpClient
* @param accessToken
*/
public static void zcnew(CommonHttpClient rkhdHttpClient, String accessToken, String customItem55, String customItem48, String templatePrintId) {
try {
//处理服务报告单----驻场,包含售前、售后
//获得上上个月26号到上个月25号的服务报告单
//驻场类型--驻场
//获得时间访问
Calendar d = Calendar.getInstance();
Date ld = new LasMonth.LastMonthDate().convert(d);
Date lld = new LasMonth.LastLastMonthDate().convert(d);
StringBuffer fzc = new StringBuffer();
fzc.append("select id,caseNo,customItem91__c,customItem31__c,fieldJobAccountId,fieldJobAccountId from fieldJob where ");
fzc.append("1=1");
if (customItem55 != null) {
fzc.append(" and customItem55__c = ");
fzc.append("'");
fzc.append(customItem55);
fzc.append("'");
}
fzc.append(" and customItem48__c = ");
fzc.append("'");
fzc.append(customItem48);
fzc.append("'");
//现在都是管理层创建,只有400条左右输入这个范围,所以去掉过滤。
if (!fistAll.equals("true")) {
fzc.append(" and appointmentEndTime > ");
fzc.append(lld.getTime());
fzc.append(" and appointmentEndTime < ");
fzc.append(ld.getTime());
}
JSONArray records = RequestUtilsLowagie.postRecord(rkhdHttpClient, accessToken, fzc.toString());
//获得客户列表
String custemsql = "select id,accountName from account";
JSONArray custemrecords = RequestUtilsLowagie.postRecord(rkhdHttpClient, accessToken, custemsql);
HashMap hashMap = new HashMap();
for (int j = 0; j < custemrecords.size(); j++) {
hashMap.put(custemrecords.getJSONObject(j).get("id"), custemrecords.getJSONObject(j).get("accountName"));
}
FileUtilText.writeTxtFile("总数:" + records.size());
for (int i = 0; i < records.size(); i++) {
StringBuffer sb = new StringBuffer();
Object id = records.getJSONObject(i).get("id");
Object fname = records.getJSONObject(i).get("caseNo");
Object officename = records.getJSONObject(i).getString("customItem91__c");
Object customItem31__c = records.getJSONObject(i).getString("customItem31__c");
Object custemname = records.getJSONObject(i).getString("fieldJobAccountId"); //客户id
sb.append("https://api.xiaoshouyi.com/rest/template/v2.0/fieldJob/");
sb.append(id.toString());
sb.append("/");
sb.append(templatePrintId);
System.out.println("文件数:" + records.size() + "-" + i);
logger.info("文件数:" + records.size() + "-" + i);
byte[] printdate = RequestUtilsLowagie.getRecord(rkhdHttpClient, accessToken, sb.toString());
new RequestUtilsLowagie().writePdf(printdate, fname.toString(), officename.toString(), hashMap.get(custemname.toString()).toString(), customItem31__c.toString());
}
FileUtilText.writeTxtFile("总数:" + records.size() + ",执行完成");
} catch (Exception e) {
FileUtilText.writeTxtFile(",执行失败.");
System.out.println("Exception:" + e);
}
}
public static int[] getstep() {
int data[] = new int[9];
data[0] = 0;
data[1] = 3000;
data[2] = 6000;
data[3] = 9000;
data[4] = 12000;
data[5] = 15000;
data[6] = 18000;
data[7] = 21000;
data[8] = 24000;
return data;
}
public static void main(String args[]) throws URISyntaxException, IOException {
fileoutpath = Configure.getValue("fileoutpath");
if (StrUtil.contains(fileoutpath, "2022")){
fileoutpath = fileoutpath.replace("2022", DateUtil.format(DateUtil.date(), "YYYY"));
}
fistAll = Configure.getValue("fistAll");
FileUtilText.writeTxtFile("------------------------------------- \n");
//当前时间
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(calendar.getTime()));
logger.info("-------------------------------------");
logger.info("执行开始时间:" + formatter.format(calendar.getTime()));
FileUtilText.writeTxtFile("执行开始时间:" + formatter.format(new Date()));
String accessToken = getAccessTokenString();
CommonHttpClient rkhdHttpClient = CommonHttpClient.instance();
FileUtilText.writeTxtFile("非驻场业务-服务报告单:");
//执行非驻场业务.需要通过limit n,m 取值
if (fistAll.equals("true")) {
int[] setps = RequestUtilsLowagie.getstep();
for (int setp : setps) {
RequestUtilsLowagie.fzc(rkhdHttpClient, accessToken, setp);
System.out.println("服务报告单处理数:" + setp);
}
} else {
RequestUtilsLowagie.fzc(rkhdHttpClient, accessToken, 1);
System.out.println("服务报告单处理每月数.");
}
//执行驻场-售后派工单。400多条。打印模板id:794158019789010,fieldJob
FileUtilText.writeTxtFile("执行驻场-售后派工单:");
RequestUtilsLowagie.zc(rkhdHttpClient, accessToken);
//执行驻场-售后派工单-管理层创建。500多条。打印模板id:805605251514666,fieldJob
FileUtilText.writeTxtFile("售后派工单-管理层创建:");
RequestUtilsLowagie.zcnew(rkhdHttpClient, accessToken, "驻场", "售后派工单-管理层创建", "805605251514666");
//派工单-驻场-售前派工单.301条。 804204168790256 805605105664259
FileUtilText.writeTxtFile("售前派工单:");
RequestUtilsLowagie.zcnew(rkhdHttpClient, accessToken, null, "售前派工单", "804204168790256");
//派工单-售前派工单-管理层创建.146条。 805605105664259
FileUtilText.writeTxtFile("售前派工单-管理层创建:");
RequestUtilsLowagie.zcnew(rkhdHttpClient, accessToken, null, "售前派工单-管理层创建", "805605105664259");
//派工单-提前执行派工单.80条 805603764846892
FileUtilText.writeTxtFile("提前执行派工单:");
RequestUtilsLowagie.zcnew(rkhdHttpClient, accessToken, null, "提前执行派工单", "805603764846892");
//派工单-提前执行派工单.63条 805604259545318
FileUtilText.writeTxtFile("提前执行派工单-管理层创建:");
RequestUtilsLowagie.zcnew(rkhdHttpClient, accessToken, null, "提前执行派工单-管理层创建", "805604259545318");
FileUtilText.writeTxtFile("执行结束时间:" + DateUtil.now());
FileUtilText.writeTxtFile("-------------------------------------");
}
public void writePdf(byte[] s, String id, String officename, String custemname, String customItem29__c) throws IOException, DocumentException {
String outpath = fileoutpath;
String pdffile = null;
try {
String oficname = outpath.concat(officename);//分公司
String custname = oficname.concat(File.separator).concat(custemname);//客户名称
if (customItem29__c != null) {
pdffile = custname.concat(File.separator).concat(customItem29__c).concat("_").concat(id).concat(".pdf");
} else {
pdffile = custname.concat(File.separator).concat(id).concat(".pdf");
}
//判断是否存在,如果不存在则创建
this.creatDir(custname, pdffile);
FileOutputStream fileOutputStream = new FileOutputStream(new File(pdffile));
if (fileOutputStream == null) {
System.out.println("文件数据为空:" + id);
}
fileOutputStream.write(s);
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void creatDir(String filePath, String filename) throws IOException {
File file = new File(filePath);
if (!file.exists()) { //用来测试此路径名表示的文件或目录是否存在
//file.isDirectory(); //来判断这是不是一个文件夹。
file.mkdirs();//创建目录
System.out.println("文件夹不存在");
}
File file2 = new File(filename);
if (!file2.exists()) {
file2.createNewFile();//创建文件
System.out.println("文件不存在");
}
}
}
\ No newline at end of file
package com.olm.del;
import com.olm.util.JSONUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
/**
* ClassName:HttpClientUtil Package:com.olm.util Date:2020/7/27 Auth:penghui@olm.com.cn
*/
/**
* HttpClient工具类
*/
public class HttpClientUtilBak {
/**请求编码*/
private static final String DEFAULT_CHARSET = "UTF-8";
/**
* 执行HTTP POST请求
* @param url url
* @param param 参数
* @return
*/
public static String httpPostWithJSON(String url, Map<String, ?> param) {
CloseableHttpClient client = null;
try {
if (url == null || url.trim().length() == 0) {
throw new Exception("URL is null");
}
HttpPost httpPost = new HttpPost(url);
client = HttpClients.createDefault();
if (param != null) {
StringEntity entity = new StringEntity(JSONUtils.toJSONString(param), DEFAULT_CHARSET);//解决中文乱码问题
entity.setContentEncoding(DEFAULT_CHARSET);
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
HttpResponse resp = client.execute(httpPost);
if (resp.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toString(resp.getEntity(), DEFAULT_CHARSET);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(client);
}
return null;
}
/**
* 执行HTTP GET请求
* @param url url
* @param param 参数
* @return
*/
public static String httpGetWithJSON(String url, Map<String, ?> param) {
CloseableHttpClient client = null;
try {
if (url == null || url.trim().length() == 0) {
throw new Exception("URL is null");
}
client = HttpClients.createDefault();
if (param != null) {
StringBuffer sb = new StringBuffer("?");
for (String key : param.keySet()) {
sb.append(key).append("=").append(param.get(key)).append("&");
}
url = url.concat(sb.toString());
url = url.substring(0, url.length() - 1);
}
HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Accept", "text/html");
httpGet.addHeader("Accept-Charset", "utf-8");
httpGet.addHeader("Accept-Encoding", "gzip");
httpGet.addHeader("Accept-Language", "en-US,en");
//httpGet.addHeader("Authorization","Bearer ca4b6e4550d791b636e9a1d06869985fc0c2e1314ba85392a76bc94fc58b3ca9.MzYxNzk1");
httpGet.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
HttpResponse resp = client.execute(httpGet);
if (resp.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toString(resp.getEntity(), DEFAULT_CHARSET);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(client);
}
return null;
}
/**
* 关闭HTTP请求
* @param client
*/
private static void close(CloseableHttpClient client) {
if (client == null) {
return;
}
try {
client.close();
} catch (Exception e) {
}
}
public static void main(String[] args) throws Exception {
Map param = new HashMap();
param.put("grant_type", "password");
param.put("Client_Id", "c97fbd8aca50ba94068da6ded23905df");
param.put("Client_Secret", "7a4d178ebf1d55229fd28c5cb18703da");
param.put("Redirect_Uri", "https://api.xiaoshouyi.com");
param.put("userName", "");
param.put("password", "");
String result = httpPostWithJSON("https://api.xiaoshouyi.com/oauth2/token", param);
//String result = httpGetWithJSON("https://api.xiaoshouyi.com/oauth2/token", param);
System.out.println("result:" + result);
}
}
\ No newline at end of file
package com.olm.del;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* ClassName:TokenTest1 Package:com.olm.util Date:2020/7/27 Auth:penghui@olm.com.cn
*/
public class TokenTest1 {
public static void main(String[] args) {
try {
new TokenTest1().getToken("https://api.xiaoshouyi.com/oauth2/token");
} catch (Exception e) {
e.printStackTrace();
}
}
public String getToken(String postURL) throws Exception {
PostMethod postMethod = new PostMethod(postURL);
postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
//参数设置,需要注意的就是里边不能传NULL,要传空字符串
NameValuePair[] data = {
new NameValuePair("grant_type", "password"),
new NameValuePair("Client_Id", "c97fbd8aca50ba94068da6ded23905df"),
new NameValuePair("Client_Secret", "7a4d178ebf1d55229fd28c5cb18703da"),
new NameValuePair("Redirect_Uri", "https://api.xiaoshouyi.com"),
new NameValuePair("userName", "lyp@olm.com.cn"),
new NameValuePair("password", "lyp123456")
};
postMethod.setRequestBody(data);
org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
httpClient.executeMethod(postMethod);
/* String result = postMethod.getResponseBodyAsString();
System.out.println(result);*/
InputStream inputStream = postMethod.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while ((str = br.readLine()) != null) {
stringBuffer.append(str);
}
System.out.println(stringBuffer);
return null;
}
}
package com.olm.util;
import lombok.extern.slf4j.Slf4j;
import java.io.InputStream;
import java.util.Properties;
@Slf4j
public class Configure {
private static final Properties config;
static {
log.info("初始化加载配置!");
String filePath = "config.properties";
config = new Properties();
try {
ClassLoader CL = Configure.class.getClassLoader();
InputStream in;
if (CL != null) {
in = CL.getResourceAsStream(filePath);
} else {
in = ClassLoader.getSystemResourceAsStream(filePath);
}
config.load(in);
assert in != null;
in.close();
} catch (Exception e) {
log.error("加载配置异常", e);
}
}
public static String getValue(String key) {
if (config.containsKey(key)) {
return config.getProperty(key);
} else {
return "";
}
}
public static int getValueInt(String key) {
String value = getValue(key);
int valueInt = 0;
try {
valueInt = Integer.parseInt(value);
} catch (NumberFormatException e) {
e.printStackTrace();
return valueInt;
}
return valueInt;
}
}
\ No newline at end of file
package com.olm.util;
import cn.hutool.core.date.DateUtil;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
/**
* ClassName:DateTime2Millis Package:com.olm.util Date:2020/8/6 Auth:penghui@olm.com.cn
*/
public class DateTime2Millis {
private static final String FORMAT_STR = "yyyy-MM-dd HH:mm:ss";
public static void main(String[] args) {
System.out.println("====== JDK7及之前 ======");
Long l1 = getMillis1();
Long l2 = date2Millis(new Date());
Long l3 = calendar2Millis(Calendar.getInstance());
Long l4 = string2Millis(new SimpleDateFormat(FORMAT_STR).format(new Date()), FORMAT_STR);//为了与以上几个保持一致
System.out.println(l1 + "\n" + l2 + "\n" + l3 + "\n" + l4);//会有几毫秒的差别
System.out.println("====== JDK8 ======");
Long l5 = getMillis2();
Long l6 = localDateTime2Millis(LocalDateTime.now());
Long l7 = localDate2Millis(LocalDate.now());
Long l8 = clock2Millis(Clock.systemUTC());
Long l9 = zoneDateTime2Millis(ZonedDateTime.now());
Long l10 = string2MillisWithJDK8(LocalDateTime.now().format(DateTimeFormatter.ofPattern(FORMAT_STR)), FORMAT_STR);//为了与以上几个保持一致
System.out.println(l5 + "\n" + l6 + "\n" + l7 + "\n" + l8 + "\n" + l9 + "\n" + l10);//会有几毫秒的差别
//上上个月26号到上个月25号
//首先判断是否是1号
//2转long型号
long customItem52__c = Long.valueOf("2").longValue();
System.out.println(customItem52__c);
Calendar d = Calendar.getInstance();
Date lld = new LasMonth.LastLastMonthDate().convert(d);
System.out.println(lld);
Date startDate = DateUtil.parseDate("2022-09-09");
System.out.println(startDate);
}
/**
* 获取时间戳
*/
public static Long getMillis1() {
return System.currentTimeMillis();
}
/* JDK7及之前 */
/**
* Date转时间戳
*/
public static Long date2Millis(Date date) {
return date.getTime();
}
/**
* Calendar转时间戳
*/
public static Long calendar2Millis(Calendar calendar) {
return calendar.getTime().getTime();
}
/**
* 日期字符串转时间戳
*/
public static Long string2Millis(String dateStr, String formatStr) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
return simpleDateFormat.parse(dateStr).getTime();
} catch (Exception e) {
return 0L;
}
}
/**
* 获取时间戳
*/
public static Long getMillis2() {
return Instant.now().toEpochMilli();
}
/* JDK8 */
/**
* LocalDateTime转时间戳
*/
public static Long localDateTime2Millis(LocalDateTime localDateTime) {
return localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
}
/**
* LocalDate转时间戳
*/
public static Long localDate2Millis(LocalDate localDate) {
return LocalDateTime.of(localDate, LocalTime.MIN).toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
}
/**
* Clock转时间戳
*/
public static Long clock2Millis(Clock clock) {
return clock.millis();
}
/**
* ZoneDateTIme转时间戳(这个不常用吧~)
*/
public static Long zoneDateTime2Millis(ZonedDateTime zonedDateTime) {
return zonedDateTime.toLocalDateTime().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();//!!!好费劲
}
/**
* String转时间戳(JDK8)
*/
public static Long string2MillisWithJDK8(String dateStr, String formatStr) {
return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(formatStr)).toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
}
/**
* 获取前月的第一天
*/
public String getFisrtDayOfMonth() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
String firstday = format.format(cale.getTime());
System.out.println("当月第一天:" + firstday);
return firstday;
}
}
package com.olm.util;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.sql.Struct;
import java.util.Date;
/**
* ClassName:FileUtilText Package:com.olm.util Date:2020/8/10 Auth:penghui@olm.com.cn
*/
@Slf4j
public class FileUtilText {
public static boolean writeTxtFile(String content){
String logFile = Configure.getValue("logoutpath");
if (StrUtil.contains(logFile, "2022")){
logFile = logFile.replace("2022", DateUtil.format(DateUtil.date(), "YYYY"));
}
File outFile = new File(logFile);
String logPath= outFile.getParent();
File filePath = new File(logPath);
if(!filePath.exists() && !filePath.isDirectory()){
boolean mkOk= filePath.mkdirs();
if (mkOk){
log.info("导出文件夹不存在,自动创建成功!");
}
}
if (!outFile.exists()){
try {
boolean createOk= outFile.createNewFile();
if (createOk){
log.info("导出记录不存在,自动创建成功!");
}
}catch (IOException e){
log.error("日期文件创建失败", e);
}
}
FileOutputStream fOut;
fOut = null;
boolean result = false;
try {
fOut = new FileOutputStream(outFile, true);
fOut.write((DateUtil.now() +"\t"+ content + " \r\n").getBytes(StandardCharsets.UTF_8));
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fOut != null) {
try {
fOut.close();
} catch (IOException e) {
log.error("写入文件出错",e);
}
}
}
return result;
}
}
package com.olm.util;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
/**
* ClassName:HttpClientUtil Package:com.olm.util Date:2020/7/27 Auth:penghui@olm.com.cn
*/
/**
* HttpClient工具类
*/
public class HttpClientUtil {
/**请求编码*/
private static final String DEFAULT_CHARSET = "UTF-8";
/**
* 执行HTTP POST请求
* @param url url
* @param param 参数
* @return
*/
public static String httpPostWithJSON(String url, Map<String, ?> param) {
CloseableHttpClient client = null;
try {
if (url == null || url.trim().length() == 0) {
throw new Exception("URL is null");
}
HttpPost httpPost = new HttpPost(url);
client = HttpClients.createDefault();
if (param != null) {
StringEntity entity = new StringEntity(JSONUtils.toJSONString(param), DEFAULT_CHARSET);//解决中文乱码问题
entity.setContentEncoding(DEFAULT_CHARSET);
entity.setContentType("application/x-www-form-urlencoded;charset=utf-8");
httpPost.setEntity(entity);
}
HttpResponse resp = client.execute(httpPost);
if (resp.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toString(resp.getEntity(), DEFAULT_CHARSET);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(client);
}
return null;
}
/**
* 执行HTTP GET请求
* @param url url
* @param param 参数
* @return
*/
public static String httpGetWithJSON(String url, Map<String, ?> param) {
CloseableHttpClient client = null;
try {
if (url == null || url.trim().length() == 0) {
throw new Exception("URL is null");
}
client = HttpClients.createDefault();
if (param != null) {
StringBuffer sb = new StringBuffer("?");
for (String key : param.keySet()) {
sb.append(key).append("=").append(param.get(key)).append("&");
}
url = url.concat(sb.toString());
url = url.substring(0, url.length() - 1);
}
HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Accept", "text/html");
httpGet.addHeader("Accept-Charset", "utf-8");
httpGet.addHeader("Accept-Encoding", "gzip");
httpGet.addHeader("Accept-Language", "en-US,en");
//httpGet.addHeader("Authorization","Bearer ca4b6e4550d791b636e9a1d06869985fc0c2e1314ba85392a76bc94fc58b3ca9.MzYxNzk1");
httpGet.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
HttpResponse resp = client.execute(httpGet);
if (resp.getStatusLine().getStatusCode() == 200) {
return EntityUtils.toString(resp.getEntity(), DEFAULT_CHARSET);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(client);
}
return null;
}
/**
* 关闭HTTP请求
* @param client
*/
private static void close(CloseableHttpClient client) {
if (client == null) {
return;
}
try {
client.close();
} catch (Exception e) {
}
}
public static void main(String[] args) throws Exception {
Map param = new HashMap();
param.put("grant_type", "password");
param.put("Client_Id", "c97fbd8aca50ba94068da6ded23905df");
param.put("Client_Secret", "7a4d178ebf1d55229fd28c5cb18703da");
param.put("Redirect_Uri", "https://api.xiaoshouyi.com");
param.put("userName", "lyp@olm.com.cn");
param.put("password", "lyp123456" + "K5vsHr3N");
String result = httpPostWithJSON("https://api.xiaoshouyi.com/oauth2/token", param);
System.out.println("result:" + result);
}
}
\ No newline at end of file
package com.olm.util;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.beanutils.BeanUtils;
import java.util.*;
/**
* ClassName:JSONUtils Package:com.olm.util Date:2020/7/27 Auth:penghui@olm.com.cn
*/
public class JSONUtils {
/***
* 将List对象序列化为JSON文本
*/
public static <T> String toJSONString(List<T> list) {
JSONArray jsonArray = JSONArray.fromObject(list);
return jsonArray.toString();
}
/***
* 将对象序列化为JSON文本
* @param object
* @return
*/
public static String toJSONString(Object object) {
JSONArray jsonArray = JSONArray.fromObject(object);
return jsonArray.toString();
}
/***
* 将JSON对象数组序列化为JSON文本
* @param jsonArray
* @return
*/
public static String toJSONString(JSONArray jsonArray) {
return jsonArray.toString();
}
/***
* 将JSON对象序列化为JSON文本
* @param jsonObject
* @return
*/
public static String toJSONString(JSONObject jsonObject) {
return jsonObject.toString();
}
/***
* 将对象转换为List对象
* @param object
* @return
*/
public static List toArrayList(Object object) {
List arrayList = new ArrayList();
JSONArray jsonArray = JSONArray.fromObject(object);
Iterator it = jsonArray.iterator();
while (it.hasNext()) {
JSONObject jsonObject = (JSONObject) it.next();
Iterator keys = jsonObject.keys();
while (keys.hasNext()) {
Object key = keys.next();
Object value = jsonObject.get(key);
arrayList.add(value);
}
}
return arrayList;
}
/***
* 将对象转换为Collection对象
* @param object
* @return
*/
public static Collection toCollection(Object object) {
JSONArray jsonArray = JSONArray.fromObject(object);
return JSONArray.toCollection(jsonArray);
}
/***
* 将对象转换为JSON对象数组
* @param object
* @return
*/
public static JSONArray toJSONArray(Object object) {
return JSONArray.fromObject(object);
}
/***
* 将对象转换为JSON对象
* @param object
* @return
*/
public static JSONObject toJSONObject(Object object) {
return JSONObject.fromObject(object);
}
/***
* 将对象转换为HashMap
* @param object
* @return
*/
public static HashMap toHashMap(Object object) {
HashMap<String, Object> data = new HashMap<String, Object>();
JSONObject jsonObject = JSONUtils.toJSONObject(object);
Iterator it = jsonObject.keys();
while (it.hasNext()) {
String key = String.valueOf(it.next());
Object value = jsonObject.get(key);
data.put(key, value);
}
return data;
}
/***
* 将对象转换为List<Map<String,Object>>
* @param object
* @return
*/
// 返回非实体类型(Map<String,Object>)的List
public static List<Map<String, Object>> toList(Object object) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
JSONArray jsonArray = JSONArray.fromObject(object);
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
Map<String, Object> map = new HashMap<String, Object>();
Iterator it = jsonObject.keys();
while (it.hasNext()) {
String key = (String) it.next();
Object value = jsonObject.get(key);
map.put((String) key, value);
}
list.add(map);
}
return list;
}
/***
* 将JSON对象数组转换为传入类型的List
* @param <T>
* @param jsonArray
* @param objectClass
* @return
*/
public static <T> List<T> toList(JSONArray jsonArray, Class<T> objectClass) {
return JSONArray.toList(jsonArray, objectClass);
}
/***
* 将对象转换为传入类型的List
* @param <T>
* @param jsonArray
* @param objectClass
* @return
*/
public static <T> List<T> toList(Object object, Class<T> objectClass) {
JSONArray jsonArray = JSONArray.fromObject(object);
return JSONArray.toList(jsonArray, objectClass);
}
/***
* 将JSON对象转换为传入类型的对象
* @param <T>
* @param jsonObject
* @param beanClass
* @return
*/
public static <T> T toBean(JSONObject jsonObject, Class<T> beanClass) {
return (T) JSONObject.toBean(jsonObject, beanClass);
}
/***
* 将将对象转换为传入类型的对象
* @param <T>
* @param object
* @param beanClass
* @return
*/
public static <T> T toBean(Object object, Class<T> beanClass) {
JSONObject jsonObject = JSONObject.fromObject(object);
return (T) JSONObject.toBean(jsonObject, beanClass);
}
/***
* 将JSON文本反序列化为主从关系的实体
* @param <T> 泛型T 代表主实体类型
* @param <D> 泛型D 代表从实体类型
* @param jsonString JSON文本
* @param mainClass 主实体类型
* @param detailName 从实体类在主实体类中的属性名称
* @param detailClass 从实体类型
* @return
*/
public static <T, D> T toBean(String jsonString, Class<T> mainClass,
String detailName, Class<D> detailClass) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
JSONArray jsonArray = (JSONArray) jsonObject.get(detailName);
T mainEntity = JSONUtils.toBean(jsonObject, mainClass);
List<D> detailList = JSONUtils.toList(jsonArray, detailClass);
try {
BeanUtils.setProperty(mainEntity, detailName, detailList);
} catch (Exception ex) {
throw new RuntimeException("主从关系JSON反序列化实体失败!");
}
return mainEntity;
}
/***
* 将JSON文本反序列化为主从关系的实体
* @param <T>泛型T 代表主实体类型
* @param <D1>泛型D1 代表从实体类型
* @param <D2>泛型D2 代表从实体类型
* @param jsonString JSON文本
* @param mainClass 主实体类型
* @param detailName1 从实体类在主实体类中的属性
* @param detailClass1 从实体类型
* @param detailName2 从实体类在主实体类中的属性
* @param detailClass2 从实体类型
* @return
*/
public static <T, D1, D2> T toBean(String jsonString, Class<T> mainClass,
String detailName1, Class<D1> detailClass1, String detailName2,
Class<D2> detailClass2) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
JSONArray jsonArray1 = (JSONArray) jsonObject.get(detailName1);
JSONArray jsonArray2 = (JSONArray) jsonObject.get(detailName2);
T mainEntity = JSONUtils.toBean(jsonObject, mainClass);
List<D1> detailList1 = JSONUtils.toList(jsonArray1, detailClass1);
List<D2> detailList2 = JSONUtils.toList(jsonArray2, detailClass2);
try {
BeanUtils.setProperty(mainEntity, detailName1, detailList1);
BeanUtils.setProperty(mainEntity, detailName2, detailList2);
} catch (Exception ex) {
throw new RuntimeException("主从关系JSON反序列化实体失败!");
}
return mainEntity;
}
/***
* 将JSON文本反序列化为主从关系的实体
* @param <T>泛型T 代表主实体类型
* @param <D1>泛型D1 代表从实体类型
* @param <D2>泛型D2 代表从实体类型
* @param jsonString JSON文本
* @param mainClass 主实体类型
* @param detailName1 从实体类在主实体类中的属性
* @param detailClass1 从实体类型
* @param detailName2 从实体类在主实体类中的属性
* @param detailClass2 从实体类型
* @param detailName3 从实体类在主实体类中的属性
* @param detailClass3 从实体类型
* @return
*/
public static <T, D1, D2, D3> T toBean(String jsonString,
Class<T> mainClass, String detailName1, Class<D1> detailClass1,
String detailName2, Class<D2> detailClass2, String detailName3,
Class<D3> detailClass3) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
JSONArray jsonArray1 = (JSONArray) jsonObject.get(detailName1);
JSONArray jsonArray2 = (JSONArray) jsonObject.get(detailName2);
JSONArray jsonArray3 = (JSONArray) jsonObject.get(detailName3);
T mainEntity = JSONUtils.toBean(jsonObject, mainClass);
List<D1> detailList1 = JSONUtils.toList(jsonArray1, detailClass1);
List<D2> detailList2 = JSONUtils.toList(jsonArray2, detailClass2);
List<D3> detailList3 = JSONUtils.toList(jsonArray3, detailClass3);
try {
BeanUtils.setProperty(mainEntity, detailName1, detailList1);
BeanUtils.setProperty(mainEntity, detailName2, detailList2);
BeanUtils.setProperty(mainEntity, detailName3, detailList3);
} catch (Exception ex) {
throw new RuntimeException("主从关系JSON反序列化实体失败!");
}
return mainEntity;
}
/***
* 将JSON文本反序列化为主从关系的实体
* @param <T> 主实体类型
* @param jsonString JSON文本
* @param mainClass 主实体类型
* @param detailClass 存放了多个从实体在主实体中属性名称和类型
* @return
*/
public static <T> T toBean(String jsonString, Class<T> mainClass,
HashMap<String, Class> detailClass) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
T mainEntity = JSONUtils.toBean(jsonObject, mainClass);
for (Object key : detailClass.keySet()) {
try {
Class value = (Class) detailClass.get(key);
BeanUtils.setProperty(mainEntity, key.toString(), value);
} catch (Exception ex) {
throw new RuntimeException("主从关系JSON反序列化实体失败!");
}
}
return mainEntity;
}
}
\ No newline at end of file
package com.olm.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* ClassName:LasMonth Package:com.olm.util Date:2020/8/6 Auth:penghui@olm.com.cn
*/
public class LasMonth {
public static void main(String... args) {
//SimpleDateFormat format233 = new SimpleDateFormat("yyyy-MM-dd");
//Calendar d = Calendar.getInstance();
//Date dd = new LastMonthDate().convert(d);
//Date lld = new LastLastMonthDate().convert(d);
//System.out.println(format233.format(dd));
//System.out.println(format233.format(lld));
//System.out.println(new LasMonth().getFisrtDayOfMonth());
}
public String getFisrtDayOfMonth() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
return format.format(cale.getTime());
}
interface Convertor<S, R> {
R convert(S s);
}
static public class LastMonthDate implements Convertor<Calendar, Date> {
public Date convert(Calendar calendar) {
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 25);
return calendar.getTime();
}
}
static public class LastLastMonthDate implements Convertor<Calendar, Date> {
public Date convert(Calendar calendar) {
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 26);
return calendar.getTime();
}
}
}
package com.olm.util;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.rkhd.platform.sdk.http.CommonData;
import com.rkhd.platform.sdk.http.CommonHttpClient;
import com.rkhd.platform.sdk.log.Logger;
import com.rkhd.platform.sdk.log.LoggerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* ClassName:TokenTest Package:com.olm.util Date:2020/7/27 Auth:penghui@olm.com.cn
*/
public class TokenTest {
// 租户域:AWS
@SuppressWarnings("unused")
private static final String RANT_DOMAIN = "https://api.xiaoshouyi.com";
// 连接器数据:
private static final String CLIENT_ID = "c97fbd8aca50ba94068da6ded23905df";
private static final String CLIENT_SECRET = "7a4d178ebf1d55229fd28c5cb18703da";
private static final String REDIRECT_URL = "https://api.xiaoshouyi.com";
// 账号
private static final String USER_ACCOUNT = "lixuejin@olm.com.cn";
// 密码
private static final String USER_PASSWORD = "Lydia315";
// 安全令牌
private static final String SECURITY_CODE = "TSu53FnT";
private static final Logger logger = LoggerFactory.getLogger();
/**
* 获取管理员TOKEN(CommonHttpClient获取)
* @return String 管理员Token
*/
public static String getAccessTokenString() {
CommonHttpClient client = CommonHttpClient.instance();
CommonData data = new CommonData();
String urlNameString = RANT_DOMAIN + "/oauth2/token.action?grant_type=password&client_id=" + CLIENT_ID
+ "&client_secret=" + CLIENT_SECRET + "&redirect_uri=" + REDIRECT_URL + "&username=" + USER_ACCOUNT
+ "&password=" + USER_PASSWORD + SECURITY_CODE;
data.setCall_type("POST");
data.setCallString(urlNameString);
client.setContentEncoding("UTF-8");
JSONObject result = JSONObject.parseObject(client.execute(data).getResult());
client.close();
long issuedAt = Long.parseLong(result.get("issued_at").toString());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(issuedAt);
String issuedAtStr = dateFormat.format(date);
String token = result.get("access_token").toString();
String type = result.get("token_type").toString();
String accessToken = type + " " + token;
logger.info("管理员token=>" + accessToken + "\t token生成时间:" + issuedAtStr);
return accessToken;
}
/**
* 获取新Token(HttpUtil获取)
* @return String 新Token
*/
public static String getAccessToken(){
String token;
String urlStr =RANT_DOMAIN + "/oauth2/token.action";
cn.hutool.json.JSONObject jsonReq = new cn.hutool.json.JSONObject();
jsonReq.putOpt("grant_type", "password");
jsonReq.putOpt("redirect_uri", REDIRECT_URL);
jsonReq.putOpt("username", USER_ACCOUNT);
jsonReq.putOpt("password", USER_PASSWORD + SECURITY_CODE);
jsonReq.putOpt("client_id", CLIENT_ID);
jsonReq.putOpt("client_secret", CLIENT_SECRET);
cn.hutool.json.JSONObject jsonResp= JSONUtil.parseObj(HttpUtil.post(urlStr, jsonReq.toString()));
String access_token = jsonResp.get("access_token").toString();
String token_type = jsonResp.get("token_type").toString();
token = token_type+ " " +access_token;
logger.info("[String]新获取:"+ token);
return token;
}
public static void main(String[] args) {
//两种获取方式,结果一样,只是获取时使用的方法不一样;
String accessToken1 = getAccessTokenString();
System.out.println("==>1、" + accessToken1);
String accessToken = getAccessToken();
System.out.println("==>2、" + accessToken);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<!-- here is a sample which processes the input files
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath -->
<route>
<from uri="file:src/data?noop=true"/>
<choice>
<when>
<xpath>/person/city = 'London'</xpath>
<log message="UK message"/>
<to uri="file:target/messages/uk"/>
</when>
<otherwise>
<log message="Other message"/>
<to uri="file:target/messages/others"/>
</otherwise>
</choice>
</route>
</camelContext>
</beans>
### dev
#fileoutpath=D:/Temp/2022-09-24/olmcrm/
#logoutpath=D:/Temp/2022-09-24/olmcrm/running.log
#fistAll=false
### server
fileoutpath=/data/olmCrmPdfFile/2022/
logoutpath=/data/olmCrmPdfFile/2022/running.log
fistAll=false
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<Configuration status="OFF" monitorInterval="300">
<properties>
<property name="log.home">./logs</property>
<property name="log.pattern" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) 优先级,即DEBUG,INFO,WARN,ERROR,
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/> -->
<!-- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />-->
<PatternLayout pattern="${log.pattern}"/>
</Console>
<!-- 消息在粗粒度级别上突出强调应用程序的运行过程 -->
<RollingRandomAccessFile name="InfoFile"
fileName="${log.home}/info.log"
filePattern="${log.home}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
<!-- 输出错误信息日志 -->
<RollingRandomAccessFile name="ErrorFile"
fileName="${log.home}/error.log"
filePattern="${log.home}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
<!-- 输出每个严重的错误事件将会导致应用程序的退出的日志. -->
<RollingRandomAccessFile name="FatalFile"
fileName="${log.home}/fatal.log"
filePattern="${log.home}/$${date:yyyy-MM}/fatal-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
<PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
<!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
<RollingFile name="RollingFile" fileName="${log.home}/pdf.log"
filePattern="${log.home}/$${date:yyyy-MM}/pdf-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="[%d{yyyy-MM-dd 'at' HH:mm:ss z}] [%-5p] %l - %m%n"/>
<SizeBasedTriggeringPolicy size="2MB"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO"> <!-- 这里的TRACE控制总下面的各类日志的日志级别,凡是高于此级别的都会在各自的级别文件中生成-->
<!-- <AppenderRef ref="RollingFile" />-->
<AppenderRef ref="Console" />
<AppenderRef ref="InfoFile" />
<!-- <AppenderRef ref="ErrorFile" />-->
<!-- <AppenderRef ref="FatalFile" />-->
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
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