新需求贴息导入变更

This commit is contained in:
xiezhiwen 2019-04-09 10:37:21 +08:00
parent c795821cf2
commit 01772a46fe
6 changed files with 147 additions and 37 deletions

View File

@ -201,7 +201,6 @@ function testTemplateLable(){
window.frames["AttachmentList"].viewFile();
}
function importConfigure(){
alert(11);
var sPara = getItemValue(0,getRow(0),'id');
if(typeof(sPara)=="undefined" || sPara.length==0 ){
alert("参数不能为空!");

View File

@ -4180,7 +4180,7 @@
</managerProperties>
</manager>
</class>
<class name="LB_DISCOUNT" label="贴息导入" keyAttributes="ID">
<!-- <class name="LB_DISCOUNT" label="贴息导入" keyAttributes="ID">
<attributes>
<attribute name="ID" label="标识" type="STRING" length="64"/>
<attribute name="CONTRACT_NO" label="合同编号" type="STRING" length="64"/>
@ -4208,7 +4208,7 @@
<property name="createKey" value="true" />
</managerProperties>
</manager>
</class>
</class> -->
<class name="INVOICE_INTERFACE" label="" keyAttributes="ID">
<attributes>
<attribute name="ID" label="标识" type="STRING" length="32"/>

View File

@ -228,7 +228,7 @@
</managerProperties>
</manager>
</class>
<!-- <class name="LB_DISCOUNT" label="贴息导入" keyAttributes="ID">
<class name="LB_DISCOUNT" label="贴息导入" keyAttributes="ID">
<attributes>
<attribute name="ID" label="ID" type="STRING" length="64"/>
<attribute name="EBAND_NO" label="网银流水号" type="STRING" length="32"/>
@ -257,7 +257,7 @@
<property name="createKey" value="true" />
</managerProperties>
</manager>
</class> -->
</class>
<class name="TAX_CODE" label="利率编码" keyAttributes="ID">
<attributes>
<attribute name="ID" label="主键ID" type="STRING" length="32"/>

View File

@ -54,14 +54,13 @@ public class CreateVoucherForInterestSubsidyImport {
String DISTRIBUTOR_NAME=null;
String CUSTID=null;
String CUSTNAME=null;
String SUBJECTCODE=null;
String ACC_NUMBER=null;
String EBANK_SN=null;
String TAX_NUM=null;
String voucherNo = "PZ2018072100000028";
Map<String, String> param = new HashMap<String, String>();
// 获取新导入的贴息数据
String sql = "SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM,IFNULL(LD.DISCOUNT_MONEY, 0) AS MONEY,IFNULL(ROUND(LD.DISCOUNT_MONEY/getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2),0) AS MONEYNOTAX,IFNULL((LD.DISCOUNT_MONEY- ROUND(LD.DISCOUNT_MONEY/getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)),0) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(LD.RECEIVED_DATE, '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,LD.BANK_SUBJECT AS SUBJECTCODE,LD.ACC_NUMBER FROM LB_DISCOUNT LD LEFT JOIN LB_EQUIPMENT_CAR LEC ON LEC.FRAME_NUMBER=LD.FRAME_NUMBER LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LEC.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID=LCCT.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE IS_VOUCHER IS NULL AND lul.IS_MAIN='Y' ";
String sql = "SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM,LE.EBANK_SN,IFNULL(LD.DISCOUNT_MONEY, 0) AS MONEY,IFNULL(ROUND(LD.DISCOUNT_MONEY / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2),0) AS MONEYNOTAX,IFNULL((LD.DISCOUNT_MONEY - ROUND(LD.DISCOUNT_MONEY / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)),0) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME FROM LB_DISCOUNT LD LEFT JOIN LC_EBANK LE ON LE.EBANK_SN=LD.EBAND_NO LEFT JOIN LB_CONTRACT_INFO LCI ON LD.CONTRACT_NO=LCI.CONTRACT_NUMBER LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE IS_VOUCHER IS NULL AND LUL.IS_MAIN='Y' ";
// 查询sql, 将结果集封装到list集合中
List<Map<String, String>> dataList = DataOperatorUtil.getDataBySql(Sqlca, sql, null);
CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl();
@ -84,8 +83,7 @@ public class CreateVoucherForInterestSubsidyImport {
DISTRIBUTOR_NAME=dataList.get(i).get("DISTRIBUTOR_NAME");
CUSTID=dataList.get(i).get("CUSTOMERID");
CUSTNAME=dataList.get(i).get("CUSTOMERNAME");
SUBJECTCODE=dataList.get(i).get("SUBJECTCODE");
ACC_NUMBER=dataList.get(i).get("ACC_NUMBER");
EBANK_SN=dataList.get(i).get("EBANK_SN");
TAX_NUM=dataList.get(i).get("TAX_NUM");
// 通过税率获取编码
BizObject TAX_CODES=null;
@ -106,14 +104,12 @@ public class CreateVoucherForInterestSubsidyImport {
param.put("DISTRIBUTOR_NAME",DISTRIBUTOR_NAME);
param.put("CUSTID",CUSTID);
param.put("CUSTNAME",CUSTNAME);
param.put("SUBJECTCODE",SUBJECTCODE);
param.put("ACC_NUMBER",ACC_NUMBER);
param.put("EBANK_SN",EBANK_SN);
param.put("VOUCHERNO",voucherNo);
if(TAX_CODES!=null) {
param.put("TAX_CODE",TAX_CODES.getAttribute("TAX_CODES").getString());
}
param.put("CASHFLOW", "11213");// 现金流项目
param.put("CASHFLOW", "");// 现金流项目
Map<String, String> map = new HashMap<String, String>();
map.put("PROJ_TYPE", "02");
@ -122,8 +118,11 @@ public class CreateVoucherForInterestSubsidyImport {
if (vouch != null) {
vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(),vouch.getAttribute("OWNED_COMPANY").getString(), "02", VOUCHER_TYPE, userid, param, Sqlca);
}
String updSql="UPDATE LB_DISCOUNT SET IS_VOUCHER='1'";
Sqlca.executeSQL(updSql);
String updSql1="UPDATE LB_DISCOUNT SET IS_VOUCHER='1' WHERE CONTRACT_NO='"+CONTRACT_NUMBER+"'";
Sqlca.executeSQL(updSql1);
String updSql2="UPDATE LC_EBANK SET MAYOPE_MONEY=(MAYOPE_MONEY-"+MONEY+"),HAD_MONEY=(HAD_MONEY+"+MONEY+") WHERE EBANK_SN='"+EBANK_SN+"'";
Sqlca.executeSQL(updSql2);
}
Sqlca.commit();
}
@ -152,7 +151,7 @@ public class CreateVoucherForInterestSubsidyImport {
String voucherNo = "PZ2018072100000041";
Map<String, String> param = new HashMap<String, String>();
// 获取新导入的贴息数据
String sql = "SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM,-IFNULL(LD.DISCOUNT_MONEY, 0) AS MONEY,-IFNULL(ROUND(LD.DISCOUNT_MONEY / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2),0) AS MONEYNOTAX,-IFNULL((LD.DISCOUNT_MONEY - ROUND(LD.DISCOUNT_MONEY / getTax(LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)),0) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME,LD.BANK_SUBJECT AS SUBJECTCODE,LD.ACC_NUMBER FROM LB_DISCOUNT LD LEFT JOIN LB_EQUIPMENT_CAR LEC ON LEC.FRAME_NUMBER = LD.FRAME_NUMBER LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID = LEC.CONTRACT_ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LCCT.CONTRACT_ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE lul.IS_MAIN='Y' AND LD.ID=:ID";
String sql = "SELECT ROUND((getTax(lci.LEAS_FORM,'租息',LCCT.START_DATE)-1)*100,0) AS TAX_NUM,- IFNULL(LD.DISCOUNT_MONEY, 0) AS MONEY,- IFNULL(ROUND(LD.DISCOUNT_MONEY / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2),0) AS MONEYNOTAX,- IFNULL((LD.DISCOUNT_MONEY - ROUND(LD.DISCOUNT_MONEY / getTax (LCI.LEAS_FORM,'租息',LCCT.START_DATE),2)),0) AS MONEYTAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LCCT.CONTRACT_ID,LCI.CONTRACT_NUMBER,LCI.PROJECT_NAME,LCI.LEAS_FORM,DI.DISTRIBUTOR_CODING DISTRIBUTOR_ID,DI.DISTRIBUTOR_NAME,CIF.CUSTOMER_NUM AS CUSTOMERID,CIF.CUSTOMERNAME FROM LB_DISCOUNT LD LEFT JOIN LC_EBANK LE ON LE.EBANK_SN=LD.EBAND_NO LEFT JOIN LB_CONTRACT_INFO LCI ON LD.CONTRACT_NO=LCI.CONTRACT_NUMBER LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN DISTRIBUTOR_INFO DI ON DI.DISTRIBUTOR_NO = LCI.DISTRIBUTOR_ID LEFT JOIN lb_union_lessee lul ON lul.contract_id = lci.id LEFT JOIN customer_info cif ON cif.customerid = lul.customer_id LEFT JOIN LB_PROJECT_INFO LPI ON LPI.ID = LUL.PROJECT_ID WHERE lul.is_main='Y' AND LD.ID = :ID ";
// 查询sql, 将结果集封装到list集合中
Map<String,String>map1 = new HashMap<String,String>();
map1.put("ID",id);
@ -178,8 +177,6 @@ public class CreateVoucherForInterestSubsidyImport {
DISTRIBUTOR_NAME=dataList.get(i).get("DISTRIBUTOR_NAME");
CUSTID=dataList.get(i).get("CUSTOMERID");
CUSTNAME=dataList.get(i).get("CUSTOMERNAME");
SUBJECTCODE=dataList.get(i).get("SUBJECTCODE");
ACC_NUMBER=dataList.get(i).get("ACC_NUMBER");
TAX_NUM=dataList.get(i).get("TAX_NUM");
// 通过税率获取编码
BizObject TAX_CODES=null;
@ -200,13 +197,11 @@ public class CreateVoucherForInterestSubsidyImport {
param.put("DISTRIBUTOR_NAME",DISTRIBUTOR_NAME);
param.put("CUSTID",CUSTID);
param.put("CUSTNAME",CUSTNAME);
param.put("SUBJECTCODE",SUBJECTCODE);
param.put("ACC_NUMBER",ACC_NUMBER);
param.put("VOUCHERNO",voucherNo);
if(TAX_CODES!=null) {
param.put("TAX_CODE",TAX_CODES.getAttribute("TAX_CODES").getString());
}
param.put("CASHFLOW", "11213");// 现金流项目
param.put("CASHFLOW", "");// 现金流项目
Map<String, String> map = new HashMap<String, String>();
map.put("PROJ_TYPE", "02");

View File

@ -253,12 +253,12 @@ public class CreateVoucherServiceImpl {
/**
* 贴息根据导入的科目编码获取科目信息, 其他的正常
*/
if("PZ2018072100000028".equals(VOUCHERNO) || "PZ2018072100000041".equals(VOUCHERNO)) {
/*if("PZ2018072100000028".equals(VOUCHERNO) || "PZ2018072100000041".equals(VOUCHERNO)) {
if("1".equals(SORT_NUMBER)) {
String SUBJECTCODE = param.get("SUBJECTCODE");
sub=JBOFactory.createBizObjectQuery(LV_STACTS_CONFIG.CLASS_NAME,"SUBJECTS_CODE=:SUBJECTS_CODE").setParameter("SUBJECTS_CODE", SUBJECTCODE).getSingleResult(false);
}
}
}*/
/**
* 网银存款转预收银行科目
*/

View File

@ -1,10 +1,15 @@
package com.tenwa.apzl.discount;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jbo.app.tenwa.calc.LC_EBANK;
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
import jbo.voucher.LB_DISCOUNT;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.JBOFactory;
@ -17,21 +22,132 @@ import com.tenwa.officetempalte.importcallback.impl.BaseImportExcelCallBack;
public class DiscountCallBack extends BaseImportExcelCallBack{
@Override
public void run(ASUser CurUser, BizObject importObject,
Map<String, String> model, Integer rowIndex, JBOTransaction tx,
Transaction Sqlca) throws Exception {
public void run(ASUser CurUser, BizObject importObject,Map<String, String> model, Integer rowIndex, JBOTransaction tx,Transaction Sqlca) throws Exception {
// 设置默认导入日期
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置日期格式
importObject.setAttributeValue("INPUTTIME",df.format(new Date()));
/*String contractNo = importObject.getAttribute("CONTRACT_NO").getString();
BizObject contractInfo = JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME, "select * from O where contract_no=:contractNo").setParameter(contractNo, contractNo).getSingleResult(false);
if(null!=contractInfo){
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置日期格式
importObject.setAttributeValue("INPUTTIME",df.format(new Date()));
}else{
throw new BusinessException("该合同编号不存在");
}*/
}
/**
* 贴息导入校验
*/
@Override
public void runBefore(ASUser CurUser, Map<String, String> model, List<BizObject> importObjects, JBOTransaction tx,Transaction Sqlca) throws Exception {
// 错误描述
String error="";
// 用于判断是否错
boolean flag = false;
/**
* 获取网银信息, 并将网银编号及可核销金额存入map集合
*/
// 存储网银可核销金额
Map<String,Double> Ebank_Map =new HashMap<String,Double>();
List<BizObject> list=JBOFactory.createBizObjectQuery(LC_EBANK.CLASS_NAME,null).getResultList(false);
for(int i=0;i<list.size();i++) {
Ebank_Map.put(list.get(i).getAttribute("EBANK_SN").getString(),Double.parseDouble(list.get(i).getAttribute("MAYOPE_MONEY").getString()));
}
/**
* 校验网银编号是否正确
*/
// 存储本次导入的所有不重复网银
for(BizObject bo:importObjects){
// 获取本次导入网银编号
String ebankSn = bo.getAttribute("EBAND_NO").getString();
if(!Ebank_Map.containsKey(ebankSn)){
error+=",【"+ebankSn+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("网银: "+error+"不存在!");
}
/**
* 校验网银可核销金额是否大于等于贴息金额
*/
// 用于存放本次同一个网银的贴息金额
Map<String, Double> map= new HashMap<String, Double>();
// 存放本次导入唯一网银流水号
List<String> DisCountEbandList = new ArrayList<String>();
for(BizObject bo:importObjects){
// 获取本次导入的网银编号
String ebankSn = bo.getAttribute("EBAND_NO").getString();
// 没有新新增, 有就把贴息金额相加, 没有就直接存
double DISCOUNT_MONEY=Double.parseDouble(bo.getAttribute("DISCOUNT_MONEY").getString());
if(!DisCountEbandList.contains(ebankSn)) {
DisCountEbandList.add(ebankSn);
map.put(ebankSn, DISCOUNT_MONEY);
}else {
Double old_money = map.get(ebankSn);
map.put(ebankSn, old_money+=DISCOUNT_MONEY);
}
}
// 判断网银金额是否大于等于贴息金额
for(String ss : DisCountEbandList) {
double Ebank_money = Ebank_Map.get(ss);
double DISCOUNT_MONEY =map.get(ss);
if(DISCOUNT_MONEY>Ebank_money) {
error+=",【"+ss+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("网银:"+error+"可核销金额小于贴息金额 ");
}
/**
* 将业务合同号增加到集合中
*/
// 用于校验合同号是否存在
List<String> contractNo = new ArrayList<String>();
// 经所有业务合同号存入集合
List<BizObject> ConList=JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME,null).getResultList(false);
for(int i=0;i<ConList.size();i++) {
contractNo.add(ConList.get(i).getAttribute("CONTRACT_NUMBER").getString());
}
/**
* 校验合同号是否存在
*/
for(BizObject bo:importObjects){
String CONTRACT_NO = bo.getAttribute("CONTRACT_NO").getString();
if(!contractNo.contains(CONTRACT_NO)){
error+=",【"+CONTRACT_NO+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("合同号:"+error+"不存在!");
}
/**
* 校验合同号是否重复
*/
// 用于校验合同号是否重复
List<String> DcontractNo = new ArrayList<String>();
List<BizObject>DiscountList=JBOFactory.createBizObjectQuery(LB_DISCOUNT.CLASS_NAME,null).getResultList(false);
// 将贴息已有的合同号存入集合
for(int i=0;i<DiscountList.size();i++) {
DcontractNo.add(DiscountList.get(i).getAttribute("CONTRACT_NO").getString());
}
for(BizObject bo:importObjects){
String CONTRACT_NO = bo.getAttribute("CONTRACT_NO").getString();
if(!DcontractNo.contains(CONTRACT_NO)){
DcontractNo.add(CONTRACT_NO);
}else {
error+=",【"+CONTRACT_NO+"";
flag=true;
}
}
if(flag) {
error = error.substring(1);
throw new BusinessException("合同号:"+error+"重复!");
}
}
}