分润补漏功能

This commit is contained in:
zhangbeibei 2021-04-09 16:38:12 +08:00
parent 82bfd45337
commit 1d586480aa
2 changed files with 147 additions and 4 deletions

View File

@ -12,6 +12,7 @@ include
dwTemp.genHTMLObjectWindow(CurPage.getParameter("ID"));
String sButtons[][] = {
{"true", "All", "Button", "保存","保存所有修改", "saveRecord()", "", "", "", ""},
{"true","All","Button","根据产品ID补录分润计划","根据产品ID补录分润计划","split()","","","","btn_icon_delete",""},
};
%><%@ include file="/Frame/resources/include/ui/include_info.jspf"%>
<script type="text/javascript">
@ -53,5 +54,15 @@ include
as_save("myiframe0", "goBack()");
}
function split(){
var distributorId = getItemValue(0,0,'distributor_id');
var productId = getItemValue(0,0,'product_id');
var message = AsControl.RunJavaMethodTrans("com.tenwa.reckon.executor.CreateTransactionExecutor","getSplitByProductId","productId="+productId+",distributorId="+distributorId);
if(message=="success"){
alert("操作成功");
}else{
alert(message);
}
}
</script>
<%@ include file="/Frame/resources/include/include_end.jspf"%>

View File

@ -16,15 +16,14 @@ import com.tenwa.quartz.StringUtil;
import com.tenwa.reckon.bean.*;
import com.tenwa.reckon.executor.rentChange.RentChangeExe;
import com.tenwa.reckon.executor.rentTerminate.RentTerminateExe;
import com.tenwa.reckon.help.CalYearRateFromRent;
import com.tenwa.reckon.help.ConditionHelper;
import com.tenwa.reckon.help.RentPlanContrCalDAOImpl;
import com.tenwa.reckon.help.*;
import com.tenwa.reckon.util.*;
import jbo.app.tenwa.calc.*;
import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT;
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
import jbo.com.tenwa.lease.comm.LB_EQUIPMENT_TEMP;
import jbo.com.tenwa.lease.comm.LC_PAY_CONDTION_TEMP;
import jbo.prd.LB_SPLITTING_RATIO;
import jbo.sys.CODE_LIBRARY;
import java.io.InputStream;
@ -58,6 +57,8 @@ public class CreateTransactionExecutor implements Transaction {
private String flow_name;
private String ebanknumber;
private String projectId;
private String distributorId;
public String getStartDate() {
return startDate;
@ -384,6 +385,38 @@ public class CreateTransactionExecutor implements Transaction {
}
public String getSplitByProductId(JBOTransaction tx) {
try{
com.amarsoft.awe.util.Transaction Sqlca = com.amarsoft.awe.util.Transaction.createTransaction(tx);
String splitType = Sqlca.getString( "select attribute5 from business_type where typeno = '" + productId + "'" );
BizObjectManager bmLSR = JBOFactory.getBizObjectManager(LB_SPLITTING_RATIO.CLASS_NAME,tx);
BizObjectManager bmLCI = JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME,tx);
BizObjectManager bmLRP = JBOFactory.getBizObjectManager(LC_RENT_PLAN.CLASS_NAME,tx);
BizObject boLSR= bmLSR.createQuery("product_id=:productId and distributor_id=:distributorId").setParameter("productId",productId).setParameter("distributorId",distributorId).getSingleResult(false);
String splitRatio = boLSR.getAttribute("splitting_ratio").toString();
List<BizObject> boLCIs = bmLCI.createQuery("product_id=:productId and distributor_id=:distributorId").setParameter("productId",productId).setParameter("distributorId",distributorId).getResultList(false);
if(boLCIs.size()>0){
for(BizObject boLCI : boLCIs){
String contractId = boLCI.getAttribute("ID").toString();
BizObject boLRP = bmLRP.createQuery("contract_id=:contractId and corpus_sp is null").setParameter("contractId",contractId).getSingleResult(false);
if(boLRP!=null){
setPlannumber(boLRP.getAttribute("PAYMENT_NUMBER").toString());
insertRentPlan_SP(splitRatio,Sqlca,splitType);
}else{
return "当前产品和经销商下的起租合同均已经有分润";
}
}
}else{
return "未找到对应的起租合同";
}
return "success";
}catch (Exception e){
return "操作失败";
}
}
public void insertRentPlan_SP_Flexible(String ratio,Transaction Sqlca){
}
@ -762,6 +795,100 @@ public class CreateTransactionExecutor implements Transaction {
return "服务器繁忙,请稍后再试!";
}
}
/**
* 租金计划休眠
*/
@Override
public String runRentdormant() throws Exception{
JSONObject jsonObject = JSONObject.createObject();
JBOTransaction tx=null;
try {
tx=JBOFactory.createJBOTransaction();
//组装实体bean
TabCalBean bean = TbBeanTools.getTabInfo(calType, flowunid,plannumber,productId);
ConditionBean cb = bean.getCb();
cb = DictTools.getReversDict(cb);
bean.setCb(cb);
BizObject bo = JBOFactory.getFactory().getManager("jbo.app.tenwa.calc.LC_DORMANT_RENT_ADJUST_TEMP").createQuery("flowunid =:flowunid and payment_number=:payment_number").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getSingleResult(false);
int startList = bo.getAttribute("START_LIST").getInt();
int endList = bo.getAttribute("END_LIST").getInt();
String dormantYearRate = bo.getAttribute("DORMANT_YEAR_RATE").toString();
BizObjectManager bomLRPT = JBOFactory.getFactory().getManager(LC_RENT_PLAN_TEMP.CLASS_NAME,tx);
List<BizObject> bolLRPT = bomLRPT.createQuery("flowunid =:flowunid and payment_number=:payment_number order by plan_list").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getResultList(true);
String ALL_REMAIN_CORPUS = bolLRPT.get(startList-1).getAttribute("ALL_REMAIN_CORPUS").toString();
String CORPUS = bolLRPT.get(startList-1).getAttribute("CORPUS").toString();
BigDecimal allRemainCorpus = new BigDecimal(ALL_REMAIN_CORPUS).add(new BigDecimal(CORPUS));
BigDecimal dormantInterest = allRemainCorpus.multiply(new BigDecimal(dormantYearRate)).divide(new BigDecimal("100")).divide(new BigDecimal("12"),2,BigDecimal.ROUND_HALF_UP);
BigDecimal finalPayment = new BigDecimal(cb.getFinalPayment()==null?"0":cb.getFinalPayment());
String preRate = RateTools.getPreRate(cb.getYearRate(), cb.getIncomeNumberYear(),cb.getRateAdjustType());
String rent = new BigDecimal(RentTools.getPMT(preRate, bolLRPT.size()-endList + "", "-"+allRemainCorpus.toString(), finalPayment.toString(), cb.getPeriodType())).toString();
List<String> rentList = new ArrayList<>();
for(int i=0;i<bolLRPT.size()-endList;i++){
rentList.add(i,rent);
}
// 加载利息列表
InterestCalServiceImpl icsi = new InterestCalServiceImpl();
List<String> interests = icsi.getInterestList(rentList, allRemainCorpus.toString(), cb.getYearRate(), cb.getPeriodType(), cb.getGrace(), cb.getIncomeNumberYear(), cb.getEquipEndValue(),cb.getRateAdjustType());
// 加载本金列表103196.63*(1.0075)
CorpusServiceImpl csi = new CorpusServiceImpl();
List<String> corpusList = csi.getCorpusList(rentList, interests);
FundRentPlanBean frpb = new FundRentPlanBean();
frpb.setRentList(rentList);
frpb.setCorpusBusinessList(corpusList);
frpb.setInterestBusinessList(interests);
// 加载调整信息列表
RentPlanServiceImpl rpsi = new RentPlanServiceImpl();
rpsi.adjustLastRentPlan(frpb, allRemainCorpus.toString(), cb.getEquipEndValue());
// 加载本金余额列表
List<String> corpusOverageBusinessList = TransRateHelper.getCorpusOvergeList(allRemainCorpus.toString(), frpb.getCorpusBusinessList());
for(int i=0;i<bolLRPT.size();i++){
int planNo = bolLRPT.get(i).getAttribute("PLAN_LIST").getInt();
if(planNo>=startList&&planNo<=endList){
String interest = dormantInterest.toString();
String remainCorpus = allRemainCorpus.toString();
bolLRPT.get(i).setAttributeValue("RENT",interest);
bolLRPT.get(i).setAttributeValue("CORPUS","0.00");
bolLRPT.get(i).setAttributeValue("INTEREST",interest);
bolLRPT.get(i).setAttributeValue("CORPUS_BUSINESS","0.00");
bolLRPT.get(i).setAttributeValue("INTEREST_BUSINESS",interest);
bolLRPT.get(i).setAttributeValue("ALL_REMAIN_CORPUS",remainCorpus);
}else if (planNo>endList){
bolLRPT.get(i).setAttributeValue("RENT",frpb.getRentList().get(i-endList));
bolLRPT.get(i).setAttributeValue("CORPUS",frpb.getCorpusBusinessList().get(i-endList));
bolLRPT.get(i).setAttributeValue("INTEREST",frpb.getInterestBusinessList().get(i-endList));
bolLRPT.get(i).setAttributeValue("CORPUS_BUSINESS",frpb.getCorpusBusinessList().get(i-endList));
bolLRPT.get(i).setAttributeValue("INTEREST_BUSINESS",frpb.getInterestBusinessList().get(i-endList));
bolLRPT.get(i).setAttributeValue("ALL_REMAIN_CORPUS",corpusOverageBusinessList.get(i-endList));
}
bomLRPT.saveObject(bolLRPT.get(i));
}
String irr = this.createCashFlow(bean,tx);
BizObjectManager bomLCCT = JBOFactory.getFactory().getManager(LC_CALC_CONDITION_TEMP.CLASS_NAME);
BizObject boLCCT = bomLCCT.createQuery("flowunid =:flowunid and payment_number=:payment_number").setParameter("flowunid", flowunid).setParameter("payment_number", plannumber).getSingleResult(true);
boLCCT.setAttributeValue("IRR",irr);
bomLCCT.saveObject(boLCCT);
jsonObject.appendElement("result", "true");
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
jsonObject.appendElement("result", "false");
}finally{
if(tx!=null){
tx.commit();
}
}
return JSONEncoder.encode(jsonObject);
}
/**
* 租金计划变更
*/
@ -1334,7 +1461,12 @@ public class CreateTransactionExecutor implements Transaction {
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public String getDistributorId() {
return distributorId;
}
public void setDistributorId(String distributorId) {
this.distributorId = distributorId;
}
}