diff --git a/src_core/com/tenwa/voucher/service/VoucherInfoService.java b/src_core/com/tenwa/voucher/service/VoucherInfoService.java new file mode 100644 index 000000000..65e0fef9e --- /dev/null +++ b/src_core/com/tenwa/voucher/service/VoucherInfoService.java @@ -0,0 +1,5 @@ +package com.tenwa.voucher.service; + +public interface VoucherInfoService { + void run() throws Exception; +} diff --git a/src_core/com/tenwa/voucher/serviceImp/FundIncomeVoucherInfoServiceImpl.java b/src_core/com/tenwa/voucher/serviceImp/FundIncomeVoucherInfoServiceImpl.java new file mode 100644 index 000000000..d2c786a16 --- /dev/null +++ b/src_core/com/tenwa/voucher/serviceImp/FundIncomeVoucherInfoServiceImpl.java @@ -0,0 +1,130 @@ +package com.tenwa.voucher.serviceImp; + +import com.amarsoft.are.jbo.*; +import com.amarsoft.dict.als.manage.NameManager; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import com.tenwa.flow.util.FlowUtil; +import com.tenwa.reckon.util.DateUtil; +import com.tenwa.voucher.service.VoucherInfoService; +import jbo.app.VOUCHER_V8; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class FundIncomeVoucherInfoServiceImpl implements VoucherInfoService { + //todo 这个字段是自增的,更新生产时,先在生产配置,然后根据生产的编号再更改 + private static final String VOUCHER_CONFIGNO = "PZ2021072100000020";//凭证号 + private static final String EVIDENCE_MESSAGE = "凭证输出";//查看凭证表,发现只有这一个值,目前先设置为固定值 + private static final String EAS_FLAG = "0";//导入财务系统状态 默认0 (同上,只有这一个值) + public void run() { + JBOTransaction tx = null; + try { + tx = JBOFactory.createJBOTransaction(); + //凭证编号 + String voucherNo ="k" + FlowUtil.getVoucher_Number(tx); + System.out.println(voucherNo+"======"); + } catch (JBOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + }finally { + try { + tx.commit(); + } catch (JBOException e) { + e.printStackTrace(); + } + } + + + } + + public void createVoucher(List> list, JBOTransaction tx) throws Exception { + BizObjectManager bomV8 = JBOFactory.getBizObjectManager(VOUCHER_V8.CLASS_NAME,tx); + List> loanInfoList = this.getHasLoanContract(tx); + for(Map loanInfo : loanInfoList){ + loanInfo = this.getCommonParam(loanInfo,tx); + List> paramList = getParamOfVoucher(tx); + for(Map param : paramList){ + param.putAll(loanInfo); + BizObject boV8 = bomV8.newObject(); + boV8.setAttributesValue(this.getFinalParam(param)); + bomV8.saveObject(boV8); + } + } + } + public List> getHasLoanContract(JBOTransaction tx) throws Exception { + //todo 目前为邮储,九江的时候将where条件更改参数 + String sql = "select frl.loan_no,frl.customer_name,frl.loan_date,frl.loan_amt,frl.business_rate,frl.TRANS_AMT,fr.CONTRACT_ID,fr.CONTRACT_NO " + + "from fc_request_loan frl " + + "left join fc_request fr on frl.LOAN_NO = fr.FC_LOAN_ID " + + "where frl.del_flag='0' and fr.DEL_FLAG='0' and voucher_status='0' and fr.CHANNEL_NO='PSBC' "; + return DataOperatorUtil.getDataBySql(sql,tx); + } + public Map getCommonParam(Map loanInfo,JBOTransaction tx) throws Exception { + + String contractId = loanInfo.get("CONTRACT_ID"); + String voucherNo ="k" + FlowUtil.getVoucher_Number(tx); + loanInfo.put("voucherNo",voucherNo); + String userId = "administrator";//操作人 + String userName = NameManager.getUserName(userId); + loanInfo.put("userId",userId); + loanInfo.put("userName",userName); + //日期 + String loanDate = loanInfo.get("loan_date").substring(0,8); + String periodYear = loanDate.substring(0,4); + String periodMonth = loanDate.substring(4,6); + Date date = new SimpleDateFormat("yyyyMMdd").parse(loanDate); + loanDate = new SimpleDateFormat("yyyy/MM/dd").format(date); + loanInfo.put("periodYear",periodYear); + loanInfo.put("periodMonth",periodMonth); + loanInfo.put("accountingDate",loanDate); + loanInfo.put("generate_date", DateUtil.getSystemDateDetailTime()); + + return loanInfo; + } + public List> getParamOfVoucher(JBOTransaction tx) throws Exception { + String sql = "select lvl.SORT_NUMBER as sortNumber,lvl.LOAN_SUBJECT as loanSubject,CASE WHEN lvl.loan_direction = '1' THEN '1' ELSE '-1' END as entrydc,lvl.VALUE_ABSTRACT as valueAbstract,lsc.SUBJECTS_CODE as subjectsCode,lsc.SUBJECTS_NAME as subjectsName " + + "from lv_voucher_loan lvl " + + "left join LV_STACTS_CONFIG lsc on lvl.LOAN_SUBJECT=lsc.id " + + "left join lv_voucher_config lvc on lvl.VOUCHER_ID=lvc.id " + + "where lvc.VOUCHER_NO='"+VOUCHER_CONFIGNO+"'"; + return DataOperatorUtil.getDataBySql(sql,tx); + } + public Map getFinalParam(Map param){ + Map finalParam = new HashMap<>(); + finalParam.put("evidence_message",EVIDENCE_MESSAGE);//固定值:凭证输出 + finalParam.put("periodyear",param.get("periodYear")); //年 + finalParam.put("f1",param.get("accountingDate"));//会计日期 + finalParam.put("f2",param.get("subjectsCode"));//科目编码 + finalParam.put("f3",param.get("voucherNo"));//凭证编号 + finalParam.put("f5",param.get("valueAbstract"));//摘要 + finalParam.put("f6",param.get("loanSubject"));//科目表id + finalParam.put("f7",param.get("periodYear"));//借方金额 + finalParam.put("f8",param.get("periodYear"));//贷方金额 + finalParam.put("f12",param.get("userName"));//操作人 + finalParam.put("f15",param.get("accountingDate"));//日期(与会计日期相同) + finalParam.put("f47",param.get("CONTRACT_NO"));//业务合同编号 + finalParam.put("f48",param.get("periodYear"));//本方信息No + finalParam.put("f49",param.get("periodYear"));//所属公司ID(注意:实际此字段存的是code_library表中codeno='ManySubject' 的 itemno 字段) + finalParam.put("f50",param.get("periodYear"));//所属公司名称 + finalParam.put("f51",param.get("periodYear"));//会计期间-年(与上面 ‘年’ 相同) + finalParam.put("f52",param.get("periodMonth"));//会计期间-月 + finalParam.put("f59",param.get("sortNumber"));//凭证配置中排序号 + finalParam.put("f60",param.get("CONTRACT_NO"));//业务合同号,与f47相同(尚不明为何重复) + finalParam.put("f61",param.get("customer_name"));//客户名称 + finalParam.put("f62",param.get("loanSubject"));//科目表id,与f6相同(尚不明为何重复) + finalParam.put("f65",VOUCHER_CONFIGNO);//凭证配置编号 + finalParam.put("v8_status","已完整");//凭证状态 : 已完整;未完整 + finalParam.put("generate_date",param.get("generate_date"));//创建时间 + finalParam.put("v8_flag",EAS_FLAG);//导入财务系统状态 默认0(尚不知有何逻辑,目前整个表中全部为0) + finalParam.put("module_name",param.get("subjectsName"));//凭证名称 + finalParam.put("entrydc",param.get("entrydc"));//借贷:1,借;-1,贷 + finalParam.put("inputuserid",param.get("userId"));//操作人id + + return finalParam; + } + +} diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java new file mode 100644 index 000000000..fcfdb2a57 --- /dev/null +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/CorpusSourceFundIncomeCreateVoucherJob.java @@ -0,0 +1,40 @@ +package com.tenwa.lease.app.quartzmession; + +import com.amarsoft.are.jbo.JBOFactory; +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.are.util.StringFunction; +import com.base.util.QuartzUtil; +import com.tenwa.voucher.CreateVoucherProcess.InsertVoucherRentCompensatory; +import com.tenwa.voucher.CreateVoucherProcess.InsertVoucherRentIncome; +import com.tenwa.voucher.service.VoucherInfoService; +import com.tenwa.voucher.serviceImp.FundIncomeVoucherInfoServiceImpl; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +/** + * 生成外资方放款凭证-定时任务 + * @author + */ +public class CorpusSourceFundIncomeCreateVoucherJob implements Job { + + @Override + public void execute(JobExecutionContext arg0) throws JobExecutionException { + String startime = StringFunction.getTodayNow(); + + Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId"); + String curUserId = userId == null? "system" : userId.toString(); + JBOTransaction tx = null; + try{ + tx = JBOFactory.createJBOTransaction(); + // + VoucherInfoService voucher = new FundIncomeVoucherInfoServiceImpl(); + voucher.run(); + + QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "success", "成功", curUserId); + } catch (Exception e) { + QuartzUtil.insertLog(startime,"com.tenwa.comm.message.controller.BusinessCancelJob", "error", "失败", curUserId); + } + } + +}