apzl_leasing/src_tenwa/com/tenwa/lease/app/quartzmession/GenerateVoucherSumJob.java
2022-08-04 09:42:24 +08:00

86 lines
4.4 KiB
Java

package com.tenwa.lease.app.quartzmession;
import com.amarsoft.are.jbo.JBOException;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.sql.Connection;
import com.amarsoft.are.util.StringFunction;
import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
import com.base.util.QuartzUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.sql.CallableStatement;
/**
* @program: apzl_leasing
* @description:
* @author: 李超杰
* @create: 2021-11-03 15:38
*/
@DisallowConcurrentExecution
public class GenerateVoucherSumJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
JBOTransaction tx;
Transaction tran = null;
String startime = StringFunction.getTodayNow();
Object userId = jobExecutionContext.getTrigger().getJobDataMap().get("CurUserId");
String curUserId = userId == null? "system" : userId.toString();
try {
tx = JBOFactory.createJBOTransaction();
tran = Transaction.createTransaction(tx);
/**
* 将所有未插入中间表的凭证插入中间表
*/
String sql="INSERT INTO VOUCHER_LIST( F3, MODULE_NAME, CONTRACT_NUMBER, F5, F1, F15, MONEYS, NC_FLAG, NC_BATCH, NC_DATE, GENERATE_DATE, F48, F50, F51, F52) SELECT V8.F3, MAX(V8.MODULE_NAME) AS MODULE_NAME, MAX(V8.F47) AS CONTRACT_NUMBER, MAX(V8.F5) AS F5, MAX(V8.F1) AS F1, MAX(V8.F15) AS F15, SUM(IFNULL(V8.F7,0)) AS MONEYS, (SELECT CASE IFNULL(MAX(FLAG),'2') WHEN '1' THEN '传输成功' WHEN '2' THEN '未传输' ELSE '传输失败' END FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_FLAG, (SELECT MAX(BATCH) FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_BATCH, (SELECT MAX(O.CREATE_TIME) FROM NCXML_DETAIL_RECORDS O WHERE O.XML_TYPE='voucher' AND O.TABLE_NUM=V8.F3) AS NC_DATE, MAX(LEFT(V8.GENERATE_DATE,19)) AS GENERATE_DATE, MAX(V8.F48) AS F48, MAX(V8.F50) AS F50, MAX(V8.F51) AS F51, MAX(V8.F52) AS F52 FROM VOUCHER_V8 V8 WHERE V8.F9 IS NULL GROUP BY V8.F3 ORDER BY MAX(LEFT(V8.GENERATE_DATE,19))";
int con = tran.executeSQL(new SqlObject(sql));
System.out.println("插入凭证列表: "+con+"条!!!");
System.out.println("插入凭证列表: "+con+"条!!!");
System.out.println("插入凭证列表: "+con+"条!!!");
/**
* 将所有已插入中间表的凭证, 变更状态
*/
sql="UPDATE VOUCHER_V8 V8,VOUCHER_LIST VL SET V8.F9='Y' WHERE V8.F9 IS NULL AND V8.F3=VL.F3";
con = tran.executeSQL(new SqlObject(sql));
System.out.println("更新凭证明细是否入中间表: "+con+"条!!!");
System.out.println("更新凭证明细是否入中间表: "+con+"条!!!");
System.out.println("更新凭证明细是否入中间表: "+con+"条!!!");
/**
* 更新传输状态
*/
sql="UPDATE VOUCHER_LIST VL,NCXML_DETAIL_RECORDS NDR SET VL.NC_FLAG=CASE IFNULL(NDR.FLAG,'2') WHEN '1' THEN '传输成功' WHEN '2' THEN '未传输' ELSE '传输失败' END, VL.NC_BATCH=NDR.BATCH,VL.NC_DATE=DATE_FORMAT(NDR.CREATE_TIME,'%Y/%m/%d') WHERE NDR.XML_TYPE='voucher' AND NDR.TABLE_NUM=VL.F3 AND VL.NC_FLAG<>'传输成功'";
con = tran.executeSQL(new SqlObject(sql));
System.out.println("更新凭证列表传输状态: "+con+"条!!!");
System.out.println("更新凭证列表传输状态: "+con+"条!!!");
System.out.println("更新凭证列表传输状态: "+con+"条!!!");
/*Connection connection = tran.getConnection(tran);
CallableStatement callableStatement = connection.prepareCall("{call PROC_CALC_VOUCHER_SUM()}");
callableStatement.execute();
callableStatement.close();
*/
tran.commit();
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.GenerateVoucherSumJob", "success", "成功", curUserId);
} catch (Exception e) {
e.printStackTrace();
QuartzUtil.insertLog(startime,"com.tenwa.lease.app.quartzmession.GenerateVoucherSumJob", "error", "失败", curUserId);
try {
if (tran != null) {
tran.rollback();
}
} catch (JBOException e1) {
e1.printStackTrace();
}
throw new JobExecutionException(e);
}
}
}