一. Java代码
package com. abc ;
import java. io. * ;
import java. text. DateFormat ;
import java. text. ParseException ;
import java. text. SimpleDateFormat ;
import java. util. * ;
import com. alibaba. fastjson. JSONObject ;
public class controller {
public static Map < String , String > m = new HashMap < > ( ) ;
public static Map < String , String > m2= new HashMap < > ( ) ;
static {
m. put ( "001" , "{ \"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"重庆公司\",\"consumerId\":\"230\",\"consumerProject\":\"重庆移动基于隐私多方安全计算平台\"}" ) ;
m. put ( "1" , " {\"a\":\"b\"} " ) ;
m. put ( "002" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"中移(上海)产业研究院\",\"consumerId\":\"034\",\"consumerProject\":\"基于联邦学习技术的运营商联合反欺诈模型研究及应用\"}" ) ;
m. put ( "003" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"集成公司\",\"consumerId\":\"036\",\"consumerProject\":\"众邦银行信用风控项目\"}" ) ;
m. put ( "004" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"信息技术中心\",\"consumerId\":\"006\",\"consumerProject\":\"浦发银行信用风控项目\"}" ) ;
m. put ( "005" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"信息技术中心\",\"consumerId\":\"006\",\"consumerProject\":\"试用多方安全计算,发掘与区块链的结合点\"}" ) ;
m. put ( "006" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"天津公司\",\"consumerId\":\"220\",\"consumerProject\":\"联邦学习天津试点项目\"}" ) ;
m. put ( "007" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"江西公司\",\"consumerId\":\"791\",\"consumerProject\":\"江西公司数据中台2022年4月相关能力引入申请\"}" ) ;
m. put ( "008" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"互联网公司\",\"consumerId\":\"230\",\"consumerProject\":\"5G消息不良信息管控系统申请使用多方安全计算能力\"}" ) ;
m. put ( "009" , "{\"abId\":\"A200600106\",\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"研究院\",\"consumerId\":\"230\",\"consumerProject\":\"基于联邦学习技术的运营商联合反欺诈模型研究及应用\"}" ) ;
m2. put ( "A200600106" , "{\"abName\":\"多方安全计算能力\",\"abPeople\":\"848\",\"abTypeM\":\"0\",\"abTypeD\":\"SDK\",\"serName\":\"Paas\",\"ownerName\":\"信息技术中心\",\"abOwnerId\":\"006\",\"consumerName\":\"重庆公司\",\"consumerId\":\"230\",\"consumerProject\":\"重庆移动基于隐私多方安全计算平台\"}" ) ;
}
Map < String , String > fileMap = new HashMap < > ( ) ;
Map < String , String > fileMapSDK = new HashMap < > ( ) ;
public String testMonth ( String filepath) {
for ( Map. Entry < String , String > k : m2. entrySet ( ) ) {
StringBuffer stringBuffer1 = new StringBuffer ( ) ;
StringBuffer stringBuffer2 = new StringBuffer ( ) ;
StringBuffer stringBuffer3 = new StringBuffer ( ) ;
System . out. print ( "key=" + k. getKey ( ) + ", value=" + k. getValue ( ) ) ;
System . out. println ( "\n" ) ;
String lastMonth = getLastMonth ( ) ;
JSONObject abJson = JSONObject . parseObject ( k. getValue ( ) ) ;
if ( stringBuffer1. length ( ) != 0 ) {
stringBuffer1. append ( "\r\n" ) ;
}
stringBuffer1. append ( lastMonth + "€€" ) ;
stringBuffer1. append ( k. getKey ( ) + "€€" ) ;
stringBuffer1. append ( abJson. get ( "abName" ) . toString ( ) + "€€" ) ;
stringBuffer1. append ( "市场" + "€€" ) ;
stringBuffer1. append ( "提智" + "€€" ) ;
stringBuffer1. append ( 0 ) ;
String fileMapKey = "M_" + "006" + "_" + "F10001" + "_" + "006" + "_" + abJson. get ( "abPeople" ) . toString ( ) + "_" + lastMonth + "_" + "00" ;
if ( null == fileMap. get ( fileMapKey) ) {
fileMap. put ( fileMapKey, stringBuffer1. toString ( ) ) ;
} else {
fileMap. put ( fileMapKey, fileMap. get ( fileMapKey) + "\r\n" + stringBuffer1. toString ( ) ) ;
}
if ( stringBuffer2. length ( ) != 0 ) {
stringBuffer2. append ( "\r\n" ) ;
}
stringBuffer2. append ( lastMonth + "€€" ) ;
stringBuffer2. append ( k. getKey ( ) + "€€" ) ;
stringBuffer2. append ( abJson. get ( "abName" ) . toString ( ) + "€€" ) ;
stringBuffer2. append ( "市场" + "€€" ) ;
stringBuffer2. append ( "提效" + "€€" ) ;
stringBuffer2. append ( "满意度" + "€€" ) ;
stringBuffer2. append ( 85 ) ;
fileMapKey = "M_" + "006" + "_" + "F10002" + "_" + "006" + "_" + abJson. get ( "abPeople" ) . toString ( ) + "_" + lastMonth + "_" + "00" ;
if ( null == fileMap. get ( fileMapKey) ) {
fileMap. put ( fileMapKey, stringBuffer2. toString ( ) ) ;
} else {
fileMap. put ( fileMapKey, fileMap. get ( fileMapKey) + "\r\n" + stringBuffer2) ;
}
if ( stringBuffer3. length ( ) != 0 ) {
stringBuffer3. append ( "\r\n" ) ;
}
stringBuffer3. append ( lastMonth + "€€" ) ;
stringBuffer3. append ( k. getKey ( ) + "€€" ) ;
stringBuffer3. append ( abJson. get ( "abName" ) . toString ( ) + "€€" ) ;
stringBuffer3. append ( abJson. get ( "abTypeM" ) . toString ( ) + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
stringBuffer3. append ( 0 + "€€" ) ;
long aTime = getDistanceDay ( ) ;
stringBuffer3. append ( aTime) ;
fileMapKey = "M_" + "006" + "_" + "F10003" + "_" + "006" + "_" + abJson. get ( "abPeople" ) . toString ( ) + "_" + lastMonth + "_" + "00" ;
if ( null == fileMap. get ( fileMapKey) ) {
fileMap. put ( fileMapKey, stringBuffer3. toString ( ) ) ;
} else {
fileMap. put ( fileMapKey, fileMap. get ( fileMapKey) + "\r\n" + stringBuffer3. toString ( ) ) ;
}
}
for ( Map. Entry < String , String > k : fileMap. entrySet ( ) ) {
System . out. println ( "Key = " + k. getKey ( ) + ", Value = " + k. getValue ( ) ) ;
try {
File filemkdir = new File ( filepath + getlastDay ( ) ) ;
if ( ! filemkdir. exists ( ) && ! filemkdir. isDirectory ( ) ) {
System . out. println ( "//directory is not exists" ) ;
filemkdir. mkdir ( ) ;
System . out. println ( filemkdir. getAbsoluteFile ( ) . toString ( ) ) ;
}
File file = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".txt" ) ;
if ( ! file. exists ( ) ) {
file. createNewFile ( ) ;
}
FileWriter fw = new FileWriter ( file. getAbsoluteFile ( ) ) ;
BufferedWriter bw = new BufferedWriter ( fw) ;
bw. write ( k. getValue ( ) ) ;
bw. flush ( ) ;
bw. close ( ) ;
File file1 = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".txt" ) ;
long timestamp = file1. lastModified ( ) ;
SimpleDateFormat sf = new SimpleDateFormat ( "yyyyMMddHHmmss" ) ;
String formateDate = sf. format ( new Date ( timestamp) ) ;
String fileCHK = k. getKey ( ) + ".txt" + "\t" + k. getKey ( ) + ".CHK" + "\t" + formateDate + "\t" + file1. length ( ) + "\t" + getLineNumber ( file1) + "\t" ;
File file2 = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".CHK" ) ;
if ( ! file2. exists ( ) ) {
file2. createNewFile ( ) ;
}
FileWriter fw2 = new FileWriter ( file2. getAbsoluteFile ( ) ) ;
BufferedWriter bw2 = new BufferedWriter ( fw2) ;
bw2. write ( fileCHK) ;
bw2. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
return "月文件生成完毕" ;
}
public String testSDK ( String filepath) {
for ( Map. Entry < String , String > k : m. entrySet ( ) ) {
StringBuffer stringBuffer4 = new StringBuffer ( ) ;
System . out. print ( "key=" + k. getKey ( ) + ", value=" + k. getValue ( ) ) ;
System . out. println ( "\n" ) ;
String lastDay = getlastDay ( ) ;
JSONObject abJson = JSONObject . parseObject ( k. getValue ( ) ) ;
if ( stringBuffer4. length ( ) != 0 ) {
stringBuffer4. append ( "\r\n" ) ;
}
stringBuffer4. append ( lastDay + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( "" + "€€" ) ;
stringBuffer4. append ( abJson. get ( "abId" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "abName" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "abTypeD" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( "" + "€€" ) ;
stringBuffer4. append ( abJson. get ( "serName" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( "" + "€€" ) ;
stringBuffer4. append ( abJson. get ( "ownerName" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "abOwnerId" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "consumerName" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "consumerId" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( abJson. get ( "consumerProject" ) . toString ( ) + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( "内部" + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( 0 + "€€" ) ;
stringBuffer4. append ( 0 ) ;
String num = null ;
String yesterday= getlastDay ( ) ;
if ( yesterday. lastIndexOf ( "1" ) == 6 && yesterday. lastIndexOf ( "7" ) == 7 ) {
num= "01" ;
} else {
num= "00" ;
}
String fileMapSDKKey = "D_" + "006" + "_" + "F10006" + "_" + "006" + "_" + abJson. get ( "abPeople" ) . toString ( ) + "_" + lastDay + "_" + num;
if ( null == fileMapSDK. get ( fileMapSDKKey) ) {
fileMapSDK. put ( fileMapSDKKey, stringBuffer4. toString ( ) ) ;
} else {
fileMapSDK. put ( fileMapSDKKey, fileMapSDK. get ( fileMapSDKKey) + "\r\n" + stringBuffer4. toString ( ) ) ;
}
}
for ( Map. Entry < String , String > k : fileMapSDK. entrySet ( ) ) {
System . out. println ( "Key = " + k. getKey ( ) + ", Value = " + k. getValue ( ) ) ;
try {
File filemkdir = new File ( filepath + getlastDay ( ) ) ;
if ( ! filemkdir. exists ( ) && ! filemkdir. isDirectory ( ) ) {
System . out. println ( "//不存在" ) ;
filemkdir. mkdir ( ) ;
System . out. println ( "目录的路径:" + filemkdir. getAbsoluteFile ( ) . toString ( ) ) ;
}
File file = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".txt" ) ;
if ( ! file. exists ( ) ) {
file. createNewFile ( ) ;
}
FileWriter fw = new FileWriter ( file. getAbsoluteFile ( ) ) ;
BufferedWriter bw = new BufferedWriter ( fw) ;
bw. write ( k. getValue ( ) ) ;
bw. flush ( ) ;
bw. close ( ) ;
File file1 = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".txt" ) ;
long timestamp = file1. lastModified ( ) ;
SimpleDateFormat sf = new SimpleDateFormat ( "yyyyMMddHHmmss" ) ;
String formateDate = sf. format ( new Date ( timestamp) ) ;
String fileCHK = k. getKey ( ) + ".txt" + "\t" + k. getKey ( ) + ".CHK" + "\t" + formateDate + "\t" + file1. length ( ) + "\t" + getLineNumber ( file1) + "\t" ;
File file2 = new File ( filepath + getlastDay ( ) + "/" + k. getKey ( ) + ".CHK" ) ;
if ( ! file2. exists ( ) ) {
file2. createNewFile ( ) ;
}
FileWriter fw2 = new FileWriter ( file2. getAbsoluteFile ( ) ) ;
BufferedWriter bw2 = new BufferedWriter ( fw2) ;
bw2. write ( fileCHK) ;
bw2. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
return "SDK文件生成完毕" ;
}
private static String getlastDay ( ) {
Date now = new Date ( ) ;
SimpleDateFormat sf = new SimpleDateFormat ( "yyyyMMdd" ) ;
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( now) ;
calendar. add ( Calendar . DATE , - 1 ) ;
String lastDay = sf. format ( calendar. getTime ( ) ) ;
return lastDay;
}
public static String getLastMonth ( ) {
Date now = new Date ( ) ;
SimpleDateFormat sf = new SimpleDateFormat ( "yyyyMM" ) ;
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( now) ;
calendar. add ( Calendar . MONTH , - 1 ) ;
String lastMonth = sf. format ( calendar. getTime ( ) ) ;
return lastMonth;
}
public static String getLastMonthDay ( ) {
Date now = new Date ( ) ;
SimpleDateFormat sf = new SimpleDateFormat ( "yyyyMMdd" ) ;
Calendar calendar = Calendar . getInstance ( ) ;
calendar. setTime ( now) ;
calendar. add ( Calendar . MONTH , - 1 ) ;
String lastMonthDay = sf. format ( calendar. getTime ( ) ) ;
return lastMonthDay;
}
public static long getDistanceDay ( ) {
SimpleDateFormat f= new SimpleDateFormat ( "yyyyMMdd" ) ;
Calendar lastM= Calendar . getInstance ( ) ;
lastM. add ( Calendar . MONTH , - 1 ) ;
lastM. set ( Calendar . DAY_OF_MONTH , 1 ) ;
String starttime = f. format ( lastM. getTime ( ) ) ;
System . out. println ( "strattime:" + starttime) ;
String endtime = getlastDay ( ) ;
System . out. println ( "endtime" + endtime) ;
long distanceDays = getDistanceDays ( starttime, endtime) ;
return distanceDays;
}
public static long getDistanceDays ( String starttime, String endtime) {
DateFormat df = new SimpleDateFormat ( "yyyyMMdd" ) ;
Date one;
Date two;
long days = 0 ;
try {
one = df. parse ( starttime) ;
two = df. parse ( endtime) ;
long time1 = one. getTime ( ) ;
long time2 = two. getTime ( ) ;
long diff;
if ( time1 < time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
days = diff / ( 1000 * 60 * 60 * 24 ) ;
} catch ( ParseException e) {
e. printStackTrace ( ) ;
}
return days;
}
public static long getLineNumber ( File file) {
if ( file. exists ( ) ) {
try {
FileReader fileReader = new FileReader ( file) ;
LineNumberReader lineNumberReader = new LineNumberReader ( fileReader) ;
lineNumberReader. skip ( Long . MAX_VALUE ) ;
long lines = lineNumberReader. getLineNumber ( ) + 1 ;
fileReader. close ( ) ;
lineNumberReader. close ( ) ;
return lines;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
return 0 ;
}
public static void main ( String [ ] args) {
String pathFile = args[ 0 ] . toString ( ) ;
controller con = new controller ( ) ;
String lastMonth= getLastMonthDay ( ) ;
System . out. println ( "last month:" + lastMonth+ "\n" ) ;
if ( lastMonth. lastIndexOf ( "0" ) == 6 && lastMonth. lastIndexOf ( "1" ) == 7 ) {
con. testMonth ( pathFile) ;
System . out. println ( "\n month file product !!\n" ) ;
} else {
System . out. println ( "\nno month file product !\n" ) ;
}
con. testSDK ( pathFile) ;
}
}
二. 脚本
upload.sh
source ~/ . bash_profile
EXEDATE=`date - d "-1 day" + "%Y%m%d" `
USER=sftpaqjsyy
PASSWORD=Sftp_Dfaq_123!
SRCDIR=${ EXEDATE}
DESDIR=/ incoming/EC-DATA / 006/
IP=172. 16. 248. 90
PORT=3948
lftp - u ${ USER} , ${ PASSWORD} sftp:/ / ${ IP} :${ PORT} << SFTP
cd ${ DESDIR}
lcd / home/aisware/test/
lcd ${ SRCDIR}
mput * . txt
mput * . CHK
close
bye
SFTP
DATE=`date`
if [ $? == 0 ] ; then
echo - e "${EXEDATE}uplaod successfully with ${DATE}"
else
echo - e "${EXEDATE}uplaod failed with ${DATE}"
fi
crontab - e 编辑定时任务:
0 1 * * * sh / home/aisware/test/write . sh >> / home/aisware/test/s. log
5 1 * * * sh / home/aisware/test/upload1. sh >> / home/aisware/test/s. log