Commit 617c404a by zhaoyang

删除无用类

parent 223b220a
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.account;
import com.abssqr.plat.common.facade.enums.AccountTypeEnum;
import com.abssqr.plat.common.facade.enums.PlanStatusEnum;
import com.abssqr.plat.common.facade.model.account.Account;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.service.AccountService;
import com.abssqr.plat.common.model.exception.AbssqrBizException;
import com.abssqr.plat.common.model.repo.plan.PlanRepo;
import com.abssqr.plat.core.service.acct.AcctManager;
import com.general.system.common.model.exception.BaseCommonException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 账户处理
* @author hanfei
* @version $Id: AccountServiceImpl.java, v 0.1 2019-12-27 12:42 AM hanfei Exp $
*/
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AcctManager acctManager;
@Autowired
private PlanRepo planRepo;
/**
* 查询存续中计划所有账户余额
* @return
*/
@Override
public List<Account> queryBalance(){
// 1. 查询存续中的所有计划
List<PlanBase> planBases = planRepo.getPlansByStatus(null, PlanStatusEnum.ONGOING);
List<Account> accountList = new ArrayList<>();
for(PlanBase planBase : planBases){
int maxCnt = 3;
List<Account> accounts = null;
while (accounts == null && maxCnt > 0){
try {
// 查询计划对应虚拟户账户余额
accounts = acctManager.getAcctByPlanNoAndType(planBase.getPlanNo(),
AccountTypeEnum.PLAT_VIRTUAL,true);
accountList.addAll(accounts);
maxCnt = 0;
Thread.sleep(2000);
} catch (BaseCommonException e){
maxCnt --;
} catch (InterruptedException e) {
throw new AbssqrBizException("线程等待异常");
}
}
}
return accountList;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse;
import cn.hutool.core.collection.CollectionUtil;
import com.abssqr.plat.biz.api.analyse.node.AnalyseChartContext;
import com.abssqr.plat.biz.api.analyse.node.AnalyseChartNodeBase;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.general.system.common.util.LogUtil;
import com.general.system.util.adapter.selector.AbstractMultipleActionSelector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 统计图执行多个符合条件节点的 数据整合
* @author hanfei
* @version $Id: AnalyseChartSelector.java, v 0.1 2019-09-25 11:58 PM hanfei Exp $
*/
@Component
public class AnalyseChartMultipleSelector extends AbstractMultipleActionSelector<AnalyseChartContext, AnalyseServiceEnum> {
protected final Logger LOGGER = LoggerFactory.getLogger(getClass());
@Autowired(required = false)
private AnalyseChartNodeBase[] analyseChartNodeBases;
@Override
public void initHandlers() {
LogUtil.info(LOGGER, "统计图总执行器加载可执行节点[{0}]", analyseChartNodeBases.length );
super.setHandlers(CollectionUtil.newArrayList(analyseChartNodeBases));
}
@Override
public List<AnalyseServiceEnum> getAllAllowTypeValues() {
return CollectionUtil.newArrayList(AnalyseServiceEnum.values());
}
@Override
public List<AnalyseServiceEnum> getRequestAllowTypes(AnalyseChartContext context) {
return context.getServices();
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
/**
* 整体逾期率
* @author hanfei
* @version $Id: AnalyseChartAna101Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna101Node extends AnalyseChartNodeBase {
/**
* 放款池、承接池报表的逾期剩余本金和 (WK012) / 放款池、承接池资产剩余本金和 (WK017)
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK012,
WkAstReportFields.WK017
);
super.handleDayTrendChart(context, amtFields, true, (acctDate, itemMap) -> {
// 计算逾期率 = 放款池、承接池报表的逾期剩余本金和 / 放款池、承接池资产剩余本金和
BigDecimal denominator = AnalyseReportUtil.getItemBig(itemMap, WkAstReportFields.WK017);
return CalcUtil.dividePercRate(
AnalyseReportUtil.getItemBig(itemMap, WkAstReportFields.WK012), denominator);
});
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.DAY_OVD;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
/**
* 早偿率计算
* @author hanfei
* @version $Id: AnalyseChartAna102Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna102Node extends AnalyseChartNodeBase {
/**
* 放款池、承接池早偿金额和 (WK042+WK043) / 放款池、承接吃资产剩余本金和 (WK017)
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK042,
WkAstReportFields.WK043,
WkAstReportFields.WK017
);
super.handleDayTrendChart(context, amtFields, true, (acctDate, itemMap) -> {
List<ReportField> repayFields = Lists.newArrayList(
WkAstReportFields.WK042,
WkAstReportFields.WK043
);
// 计算早偿率 = 放款池、承接池早偿金额和 (WK042+WK043) / 放款池、承接吃资产剩余本金和 (WK017)
BigDecimal denominator = AnalyseReportUtil.getItemBig(itemMap, WkAstReportFields.WK017);
return CalcUtil.dividePercRate(AnalyseReportUtil.getItemBig(itemMap, repayFields), denominator);
});
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.DAY_PRE;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 统计 新增放贷金额
* @author hanfei
* @version $Id: AnalyseChartAna103Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna103Node extends AnalyseChartNodeBase {
/**
* 日期区间 新增放贷金额
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK111
);
super.handleDayTrendChart(context, amtFields, false,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(itemMap, WkAstReportFields.WK111).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.GRANT;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 统计 转让资产金额
* @author hanfei
* @version $Id: AnalyseChartAna104Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna104Node extends AnalyseChartNodeBase {
/**
* 日期区间 交易贷款发生额
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK028
);
super.handleDayTrendChart(context, amtFields, false,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(itemMap, WkAstReportFields.WK028).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.TRANS;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 统计 总资产规模
* @author hanfei
* @version $Id: AnalyseChartAna105Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna105Node extends AnalyseChartNodeBase {
/**
* 日期区间 总贷款本金余额
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK017
);
super.handleDayTrendChart(context, amtFields,true,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(itemMap, WkAstReportFields.WK017).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.TOTAL_SCALE;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 闲置资金余额
* @author hanfei
* @version $Id: AnalyseChartAna201Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna201Node extends AnalyseChartNodeBase {
/**
* 闲置资金余额
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK001
);
super.handleDayTrendChart(context, amtFields, true,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(itemMap, WkAstReportFields.WK001).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.BAL_FUND;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 资金流出
* @author hanfei
* @version $Id: AnalyseChartAna202Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna202Node extends AnalyseChartNodeBase {
/**
* 资金流出
* 放款池兑付流出+承接池兑付流出+金融服务费+放款户贷款投放
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK005,
WkAstReportFields.WK108,
WkAstReportFields.WK111
);
super.handleDayTrendChart(context, amtFields, true,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(itemMap, amtFields).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.OUT_FUND;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 资金流入
* @author hanfei
* @version $Id: AnalyseChartAna203Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna203Node extends AnalyseChartNodeBase {
/**
* 资金流入
* 放款池、承接池信托本金投入、贷款还款流入
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK004, WkAstReportFields.WK007
);
super.handleDayTrendChart(context, amtFields, true,
(acctDate, itemMap) -> AnalyseReportUtil.getItemMoney(
itemMap, WkAstReportFields.WK004, WkAstReportFields.WK007).getAmount());
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.IN_FUND;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.general.system.common.model.Money;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
/**
* 日闲置率
* @author hanfei
* @version $Id: AnalyseChartAna204Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna204Node extends AnalyseChartNodeBase {
/**
* 日闲置率
* 放款池、承接池 日可用资金总额/ 放款池 + 承接池信托规模
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> amtFields = Lists.newArrayList(
WkAstReportFields.WK001
);
// 查询对应受让池计划
List<PlanBase> planBases = analyseSpvReportManager.getPlanBySpv(context.getPlanBase().getPlanNo());
// 统计图获取数据
super.handleDayTrendChart(context, amtFields, true, (acctDate, itemMap) -> {
// 放款池、承接池 日可用资金总额
BigDecimal numerator = AnalyseReportUtil.getItemBig(itemMap, WkAstReportFields.WK001);
// 获取放款池、承接池信托计划规模合计
Money denominator = AnalyseReportUtil.getPlanTotalAmtBySpvPlanNo(context.getPlanBase(), planBases);
return CalcUtil.dividePercRate(numerator, denominator.getAmount());
});
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.DAY_IDLE;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.PlanReportItem;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.model.report.wk.WkAstReportFields;
import com.abssqr.plat.common.facade.result.analyse.AnalyseChartItemVO;
import com.abssqr.plat.core.service.util.AnalyseReportUtil;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 资金情况流动
* @author hanfei
* @version $Id: AnalyseChartAna205Node.java, v 0.1 2019-10-09 11:26 PM hanfei Exp $
*/
@Component
public class AnalyseChartAna205Node extends AnalyseChartNodeBase {
/**
* 资金情况流动
资金流出项 图表:资金流出明细
资金流入项 图表:资金流入明细
转让贷款资金发生额
兑付流出 兑付流出-启鑫、兑付流出-汇鑫……
金融服务费 金融服务费-启鑫、金融服务费-汇鑫……
新增贷款投放 启鑫放款
* @param context
* @return
*/
@Override
protected Void handle(AnalyseChartContext context) {
List<ReportField> statFields = Lists.newArrayList(
// 新增贷款投放 负
WkAstReportFields.WK111,
// 还款资金发生额 正
WkAstReportFields.WK004,
// 兑付流出 负
WkAstReportFields.WK005,
// 放款冲正金额 正
WkAstReportFields.WK101,
// 金融服务费 负
WkAstReportFields.WK108,
// 其他流入 正
WkAstReportFields.WK007,
// 其他流出 负
WkAstReportFields.WK006
);
// 查询计划对应统计项数据
Map<String, PlanReportItem> itemMap =
analyseSpvReportManager.querySpvStatPlanDayItem(context.getEndDate(),
context.getPlanBase().getPlanNo(), statFields, true);
List<AnalyseChartItemVO> itemVOS = new ArrayList<>();
// // 总流出
// AnalyseChartItemVO outTotal = new AnalyseChartItemVO();
// outTotal.setEntry(WkAstReportFields.WK008.getCode());
// outTotal.setItem(WkAstReportFields.WK008.getName());
// outTotal.setValue(AnalyseReportUtil.getItemBig(itemMap, CollectionUtil.newArrayList(
// // 流出
// // 兑付流出
// WkAstReportFields.WK005,
// // 金融服务费
// WkAstReportFields.WK108,
// // 新增贷款投放
// WkAstReportFields.WK111
// )));
// itemVOS.add(outTotal);
// 正负切换
int sign = 1;
// 各个分项
for (ReportField field : statFields) {
sign = sign * -1;
AnalyseChartItemVO itemVO = new AnalyseChartItemVO();
itemVO.setEntry(String.valueOf(sign));
itemVO.setItem(field.getName());
// 处理统计值
itemVO.setValue(AnalyseReportUtil.getItemBig(itemMap, field).multiply(new BigDecimal(sign)));
itemVOS.add(itemVO);
}
context.addItems(itemVOS);
return null;
}
@Override
protected AnalyseServiceEnum getServiceEnum(){
return AnalyseServiceEnum.DAY_FLOW;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.enums.AnalyseTypeEnum;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.result.analyse.AnalyseChartItemVO;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 统计图选择器参数结果上下文
* @author hanfei
* @version $Id: AnalyseChartContext.java, v 0.1 2019-09-26 12:04 AM hanfei Exp $
*/
public class AnalyseChartContext {
/**
* 计划编号
*/
private PlanBase planBase;
/**
* 统计起始日
*/
private Date startDate;
/**
* 统计截止日
*/
private Date endDate;
/**
* 业务类型
*/
private List<AnalyseServiceEnum> services;
/**
* 统计类型
*/
private AnalyseTypeEnum analyseType;
/**
* 统计图数据条目
*/
private List<AnalyseChartItemVO> items = new ArrayList<>();
public void addItems(List<AnalyseChartItemVO> items) {
this.items.addAll(items);
}
public PlanBase getPlanBase() {
return planBase;
}
public void setPlanBase(PlanBase planBase) {
this.planBase = planBase;
}
public List<AnalyseServiceEnum> getServices() {
return services;
}
public void setServices(List<AnalyseServiceEnum> services) {
this.services = services;
}
public AnalyseTypeEnum getAnalyseType() {
return analyseType;
}
public void setAnalyseType(AnalyseTypeEnum analyseType) {
this.analyseType = analyseType;
}
public List<AnalyseChartItemVO> getItems() {
return items;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.analyse.node;
import cn.hutool.core.date.DateUtil;
import com.abssqr.plat.common.facade.enums.AnalyseServiceEnum;
import com.abssqr.plat.common.facade.model.report.PlanReportItem;
import com.abssqr.plat.common.facade.model.report.ReportField;
import com.abssqr.plat.common.facade.result.analyse.AnalyseChartItemVO;
import com.abssqr.plat.core.service.report.AnalyseSpvReportManager;
import com.general.system.tool.util.ToolUtil;
import com.general.system.util.adapter.selector.AbstractMultipleActionSelectorNode;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 统计图节点基类
* @author hanfei
* @version $Id: AnalyseChartNodeBase.java, v 0.1 2019-09-26 12:03 AM hanfei Exp $
*/
public abstract class AnalyseChartNodeBase
extends AbstractMultipleActionSelectorNode<AnalyseChartContext, AnalyseServiceEnum> {
@Autowired
protected AnalyseSpvReportManager analyseSpvReportManager;
@Override
public boolean judge(AnalyseChartContext context) {
return context.getServices().contains(getServiceEnum());
}
/**
* 按日期趋势统计基础方法
* @param context
* @param statFields
*/
public void handleDayTrendChart(AnalyseChartContext context, List<ReportField> statFields,
boolean havePlan, AnalyseValueHandle valueHandle){
// 获取放款池计划 按日期与统计项的分组汇总数据
Map<Date, List<PlanReportItem>> planItemMap = analyseSpvReportManager.querySpvStatDaySectionItem(
context.getStartDate(), context.getEndDate(), context.getPlanBase().getPlanNo(), statFields, havePlan);
if (ToolUtil.isEmpty(planItemMap)) {
return;
}
List<AnalyseChartItemVO> itemVOS = new ArrayList<>();
for (Map.Entry<Date, List<PlanReportItem>> entry : planItemMap.entrySet()) {
Map<String, PlanReportItem> itemMap = entry.getValue().stream().collect(
Collectors.toMap(PlanReportItem::getRptItemCode, item -> item));
AnalyseChartItemVO itemVO = new AnalyseChartItemVO();
// X 轴按日期
itemVO.setEntry(DateUtil.formatDate(entry.getKey()));
itemVO.setItem(getServiceEnum().getDesc());
// 处理统计值
itemVO.setValue(valueHandle.handle(entry.getKey(), itemMap));
itemVOS.add(itemVO);
}
// 按X轴 日期 进行排序
itemVOS.sort(Comparator.comparing(item -> DateUtil.parse(item.getEntry())));
context.addItems(itemVOS);
}
/**
* 执行统计业务项目
* @return
*/
protected abstract AnalyseServiceEnum getServiceEnum();
protected interface AnalyseValueHandle{
/**
* 对应每日统计值处理
* @param itemMap
* @return
*/
BigDecimal handle(Date acctDate, Map<String, PlanReportItem> itemMap);
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.ast;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.abssqr.plat.biz.support.QryTemplate;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstScreenRuleDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.ScreenRulePage;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.facade.param.ast.AstScreenRuleEditParam;
import com.abssqr.plat.common.facade.param.ast.AstScreenRulePageQryParam;
import com.abssqr.plat.common.facade.param.ast.AstScreenRuleQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstScreenRuleVO;
import com.abssqr.plat.common.facade.service.ast.AstScreenRuleService;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.repo.plan.PlanRepo;
import com.abssqr.plat.common.model.utils.ApproveChangeUtil;
import com.abssqr.plat.core.service.rule.AstScreenRuleManager;
import com.general.system.bpm.enums.ApproveStatusEnum;
import com.general.system.facade.current.IdentityUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.api.ast: AstScreenRuleServiceImpl.java, v 0.1 2019-06-01 21:02 bangis.wangdf Exp $
*/
@Service
public class AstScreenRuleServiceImpl extends ServiceSupport implements AstScreenRuleService {
@Autowired
PlanRepo planRepo;
@Autowired
AstScreenRuleManager astScreenRuleManager;
@Override
public BasePage<AstScreenRuleVO> getAstScreenList(AstScreenRulePageQryParam param) {
return this.doQry(param, () -> {
ScreenRulePage screenRulePage = astScreenRuleManager.getScreenRuleList(param, IdentityUtil.getUserCode());
BasePage<AstScreenRuleVO> result = new BasePage<>();
result.setCurrPageNo(screenRulePage.getCurrPageNo());
result.setTotal(screenRulePage.getTotal());
result.setLimit(screenRulePage.getLimit());
if (CollectionUtils.isNotEmpty(screenRulePage.getDatas())) {
Set<String> lenderOrgCodes = screenRulePage.getDatas().stream().map(AstScreenRuleDO::getLenderOrgCode).collect(
Collectors.toSet());
Map<String, String> planNameMap = planRepo.getPlanNames(Lists.newArrayList(lenderOrgCodes));
List<AstScreenRuleVO> datas = screenRulePage.getDatas().stream().map(astScreenRuleDO -> {
AstScreenRuleVO vo = new AstScreenRuleVO();
vo.setGmtCreate(astScreenRuleDO.getGmtCreate());
vo.setGmtModified(astScreenRuleDO.getGmtModified());
vo.setScreenRuleNo(astScreenRuleDO.getScreenRuleNo());
vo.setScreenRuleName(astScreenRuleDO.getScreenRuleName());
vo.setProdCode(astScreenRuleDO.getProdCode());
vo.setProdName(astScreenRuleDO.getProdName());
vo.setLenderOrgCode(astScreenRuleDO.getLenderOrgCode());
vo.setLenderOrgName(planNameMap.get(astScreenRuleDO.getLenderOrgCode()));
vo.setApproveStatus(ApproveStatusEnum.getEnum(astScreenRuleDO.getApproveStatus()));
//可编辑判断
vo.setOperate(ApproveChangeUtil.allowEdit(vo.getApproveStatus()));
return vo;
}).collect(Collectors.toList());
result.setDatas(datas);
}
return result;
});
}
/**
* 新增Or编辑资产筛选
*
* @param param
* @return
*/
@Override
public AstScreenRule addOrUpdate(@Valid AstScreenRuleEditParam param) {
return this.doOpr(param, () -> {
String astScreeningNo = astScreenRuleManager.addOrUpdate(param, IdentityUtil.getUserCode(), IdentityUtil.getUserOrgCode());
return astScreenRuleManager.getScreenRuleByNo(astScreeningNo);
});
}
/**
* 查询资产筛选规则
* @param param
* @return
*/
@Override
public AstScreenRule getAstScreenRule(AstScreenRuleQryParam param) {
if (param.getWork()){
return this.doQry(param, new QryTemplate<AstScreenRule>() {
@Override
public AstScreenRule query() {
return astScreenRuleManager.getDataChangeScreenRuleBy(param.getScreenRuleNo());
}
@Override
public AstScreenRule afterProcess(AstScreenRule ret) {
calcRate(ret);
return ret;
}
});
}else{
return this.doQry(param, new QryTemplate<AstScreenRule>() {
@Override
public AstScreenRule query() {
return astScreenRuleManager.getScreenRuleByNo(param.getScreenRuleNo());
}
@Override
public AstScreenRule afterProcess(AstScreenRule ret) {
calcRate(ret);
return ret;
}
});
}
}
private void calcRate(AstScreenRule ret) {
if(ret!=null) {
if(ret.getSingleMaxInterRate()!=null) {
ret.setSingleMaxInterRate(CalcUtil.calcPercRate(ret.getSingleMaxInterRate()));
}
if(ret.getSingleMinInterRate()!=null) {
ret.setSingleMinInterRate(CalcUtil.calcPercRate(ret.getSingleMinInterRate()));
}
}
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.ast;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanBakDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanBakDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.LoanBakListPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.PropCntStat;
import com.abssqr.plat.common.facade.enums.LoanStatusEnum;
import com.abssqr.plat.common.facade.enums.SyncTaskTypeEnum;
import com.abssqr.plat.common.facade.model.plan.PlanAst;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.LoanDelVO;
import com.abssqr.plat.common.facade.result.ast.LoanListVO;
import com.abssqr.plat.common.facade.service.ast.LoanService;
import com.abssqr.plat.common.model.domain.contract.LoanContract;
import com.abssqr.plat.common.model.repo.ast.LoanInstalRepository;
import com.abssqr.plat.common.model.repo.ast.LoanRepository;
import com.abssqr.plat.common.model.repo.contract.LoanContractRepository;
import com.abssqr.plat.common.model.repo.plan.PlanAstRepository;
import com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo;
import com.abssqr.plat.common.model.utils.DescUtil;
import com.abssqr.plat.core.service.accounting.OrgAcctDayComponent;
import com.abssqr.plat.core.service.plan.PlanManager;
import com.abssqr.plat.core.service.util.RptBuilderUtil;
import com.general.system.common.model.Money;
import com.general.system.common.util.VarChecker;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 资产
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.api.ast: LoanServiceImpl.java, v 0.1 2019-05-30 19:45 zhenxuan.luo Exp $
*/
@Component
public class LoanServiceImpl extends ServiceSupport implements LoanService {
@Autowired
private LoanRepository loanRepository;
@Autowired
private LoanInstalRepository loanInstalRepository;
@Autowired
private LoanContractRepository loanContractRepository;
@Autowired
private AstSyncTaskCtrRepo astSyncTaskCtrRepo;
@Autowired
private PlanManager planManager;
@Autowired
private PlanAstRepository planAstRepository;
@Autowired
private LoanBakDAO loanBakDAO;
@Autowired
private OrgAcctDayComponent orgAcctDayComponent;
@Override
public BasePage<LoanListVO> getOrgLoanList(LoanPageQryParam param) {
return this.doQry(param, () -> {
// 获取计划
PlanBase planBase = planManager.getPlanFullByNo(param.getOwnOrg());
// 查询最近模型转换完成日期
Date maxDate = astSyncTaskCtrRepo.getTaskLogMaxOrgDate(
SyncTaskTypeEnum.AST_MOD, orgAcctDayComponent.getOrgCode(planBase).getCode());
LoanBakListPage listPage = loanRepository.getPageByOwnOrg(param, maxDate);
BasePage<LoanListVO> res = new BasePage<>();
res.setCurrPageNo(listPage.getCurrPageNo());
res.setTotal(listPage.getTotal());
res.setLimit(listPage.getLimit());
res.setDatas(buildListVos(listPage.getDatas()));
return res;
});
}
@Override
public LoanDelVO getPlanAstDetail(LoanQryParam param) {
PlanBase planBase = planManager.getPlanFullByNo(param.getPlanNo());
VarChecker.checkNotNull(planBase, "不存在该计划[{0}]", param.getPlanNo());
// 查询最近模型转换完成日期
Date maxDate = astSyncTaskCtrRepo.getTaskLogMaxOrgDate(
SyncTaskTypeEnum.AST_MOD, orgAcctDayComponent.getOrgCode(planBase).getCode());
LoanDelVO loanDelVO = new LoanDelVO();
//计划编号
loanDelVO.setPlanNo(planBase.getPlanNo());
//计划名称
loanDelVO.setPlanName(planBase.getPlanName());
//本金规模
loanDelVO.setTotalAmt(RptBuilderUtil.getInvestedAmt(planBase));
PlanAst planAst = planAstRepository.getByPlanNo(planBase.getPlanNo());
// 根据会计日获取loanbak 统计数据
PropCntStat planLoanStat = loanBakDAO.statPlanBal(maxDate, planBase.getPlanNo());
loanDelVO.setAstAmt((planAst == null) ? new Money() : planAst.getAccGrant());
loanDelVO.setAstCurrentBal((planAst == null) ? new Money() : planAst.getCash());
loanDelVO.setAstCurrentAmt((planLoanStat == null) ? new Money() : planLoanStat.getAmt());
loanDelVO.setAstCurrentCnt((planLoanStat == null) ? BigDecimal.ZERO : new BigDecimal(planLoanStat.getCnt()));
return loanDelVO;
}
/**
* 构建资产列表模型
* @param loans
* @return
*/
private List<LoanListVO> buildListVos(List<LoanBakDO> loans) {
List<LoanListVO> loanListVOS = Lists.newArrayList();
if (CollectionUtils.isEmpty(loans)) {
return loanListVOS;
}
// 1. 查找关联的合同信息
List<String> astNos = loans.stream().map(LoanBakDO::getAstNo).collect(Collectors.toList());
List<LoanContract> contracts = loanContractRepository.getByAstNos(astNos);
Map<String, LoanContract> contractMap = contracts.stream().collect(
Collectors.toMap(LoanContract::getAstNo, item -> item));
// 2. 转化领域模型到VO
for (LoanBakDO loanBakDO : loans) {
loanListVOS.add(buildListVo(loanBakDO, contractMap.get(loanBakDO.getAstNo())));
}
return loanListVOS;
}
private LoanListVO buildListVo(LoanBakDO loan, LoanContract loanContract) {
boolean isContNull = loanContract == null;
Money zeroMoney = new Money(0);
LoanListVO listVO = new LoanListVO();
listVO.setAstNo(loan.getAstNo());
listVO.setContractNo(loanContract.getOutContNo());
listVO.setOutAstNo(loan.getOutAstNo());
listVO.setOutProdNo(loan.getOutProdNo());
listVO.setManagerOrgCode(loan.getManagerOrgCode());
listVO.setLenderOrgCode(loan.getLenderOrgCode());
listVO.setInDate(loan.getInDate());
listVO.setDeptrName(isContNull ? "" : loanContract.getLoanCustInfo().getName());
listVO.setDistAmout(isContNull ? zeroMoney : loanContract.getDisbAmount());
listVO.setRepayMethod(isContNull ? null : loanContract.getLoanProperty().getRepayMethod());
listVO.setRateDesc(DescUtil.buildRateDesc(loanContract));
listVO.setStartDate(loanContract.getContractPeriod().getStartDate());
listVO.setEndDate(loanContract.getContractPeriod().getEndDate());
listVO.setTermCnt(loan.getTermCnt());
listVO.setCurTerm(loan.getCurTerm());
listVO.setPrinBal(loan.getPrinBal().add(loan.getOvdPrinBal()));
listVO.setIntrBal(loan.getIntrBal().add(loan.getOvdIntrBal()));
listVO.setPenalBal(loan.getPrinPenalBal().add(loan.getIntrPenalBal()));
listVO.setOvdDays(loan.getOvdDays());
listVO.setStatus(LoanStatusEnum.getByCode(loan.getStatus()));
listVO.setCost(loan.getCost());
// listVO.setRiskCl(loan.getLoanRisk().getRiskClass());
return listVO;
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.ast;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dao.LoanDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.LoanDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.LoanListPage;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstScale;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.LoanPropCntStat;
import com.abssqr.plat.common.facade.enums.CapitalAstMatchEnum;
import com.abssqr.plat.common.facade.enums.PlanStatusEnum;
import com.abssqr.plat.common.facade.enums.SyncTaskTypeEnum;
import com.abssqr.plat.common.facade.enums.TitleTypeEnum;
import com.abssqr.plat.common.facade.model.plan.PlanAcctTitle;
import com.abssqr.plat.common.facade.model.plan.PlanAst;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.param.loan.LoanAstQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanAstTermQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.PlanConst;
import com.abssqr.plat.common.facade.result.ast.LoanDelVO;
import com.abssqr.plat.common.facade.result.ast.LoanDetail;
import com.abssqr.plat.common.facade.result.ast.LoanInstalDetail;
import com.abssqr.plat.common.facade.result.ast.LoanListVO;
import com.abssqr.plat.common.facade.service.ast.SpvLoanService;
import com.abssqr.plat.common.model.convertor.vo.LoanVOConvert;
import com.abssqr.plat.common.model.domain.ast.Loan;
import com.abssqr.plat.common.model.domain.contract.LoanContract;
import com.abssqr.plat.common.model.repo.ast.LoanBakRepo;
import com.abssqr.plat.common.model.repo.ast.LoanRepository;
import com.abssqr.plat.common.model.repo.contract.LoanContractRepository;
import com.abssqr.plat.common.model.repo.plan.PlanAcctTitleRepo;
import com.abssqr.plat.common.model.repo.plan.PlanAstRepository;
import com.abssqr.plat.common.model.repo.plan.PlanRepo;
import com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo;
import com.abssqr.plat.core.service.accounting.OrgAcctDayComponent;
import com.abssqr.plat.core.service.ast.LoanAstAssembler;
import com.abssqr.plat.core.service.plan.PlanManager;
import com.abssqr.plat.core.service.util.RptBuilderUtil;
import com.general.system.common.model.Money;
import com.general.system.common.util.VarChecker;
import com.general.system.tool.util.ToolUtil;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 放款池项目计划及资产服务
*
* @author hanfei
* @version $Id: SpvLoanServiceImpl.java, v 0.1 2019-12-12 5:21 PM hanfei Exp $
*/
@Service
public class SpvLoanServiceImpl extends ServiceSupport implements SpvLoanService {
@Autowired
private LoanAstAssembler loanAstAssembler;
@Autowired
private LoanRepository loanRepository;
@Autowired
private PlanManager planManager;
@Autowired
private PlanAstRepository planAstRepository;
@Autowired
private LoanContractRepository loanContractRepository;
@Autowired
private PlanRepo planRepo;
@Autowired
private LoanDAO loanDAO;
@Autowired
private LoanBakRepo loanBakRepo;
@Autowired
private PlanAcctTitleRepo planAcctTitleRepo;
@Autowired
private AstSyncTaskCtrRepo astSyncTaskCtrRepo;
@Autowired
private OrgAcctDayComponent orgAcctDayComponent;
/**
* 计划详情
*
* @param param
* @return
*/
@Override
public LoanDelVO getSpvDetail(LoanQryParam param) {
return this.doQry(param, () -> {
PlanBase planBase = planManager.getPlanFullByNo(param.getPlanNo());
VarChecker.checkNotNull(planBase, "不存在该计划[{0}]", param.getPlanNo());
LoanDelVO loanDelVO = new LoanDelVO();
//计划编号
loanDelVO.setPlanNo(planBase.getPlanNo());
//计划名称
loanDelVO.setPlanName(planBase.getPlanName());
//本金规模
loanDelVO.setTotalAmt(RptBuilderUtil.getInvestedAmt(planBase));
// 获取水位
PlanAst planAst = planAstRepository.getByPlanNo(planBase.getPlanNo());
loanDelVO.setAstAmt((planAst == null) ? new Money() : planAst.getAccGrant());
loanDelVO.setAstCurrentBal((planAst == null) ? new Money() : planAst.getCash());
// 获取loan 统计数据
LoanPropCntStat planLoanStat = loanDAO.statSpvBal(planBase.getPlanNo());
loanDelVO.setAstCurrentAmt((planLoanStat == null) ? new Money() : planLoanStat.getAmt());
loanDelVO
.setAstCurrentCnt((planLoanStat == null) ? BigDecimal.ZERO : new BigDecimal(planLoanStat.getCnt()));
// 资金剩余规模
Money capitalBal = new Money();
loanDelVO.setCapitalBal(capitalBal);
// 获取本金科目
List<PlanAcctTitle> planAcctTitleList = planAcctTitleRepo.getByEntityNo(param.getPlanNo());
planAcctTitleList.forEach(item -> {
if (item.getTitleType() == TitleTypeEnum.INVESTED || item.getTitleType() == TitleTypeEnum.PRIOR_INVESTED || item.getTitleType() == TitleTypeEnum.SECND_INVESTED) {
if (StringUtils.isEmpty(param.getCapitalNo()) || param.getCapitalNo().equals(item.getRefNo())) {
capitalBal.addTo(item.getBal());
}
}
});
// 根据机构编码获取
Date maxDate = astSyncTaskCtrRepo.getTaskLogMaxOrgDate(
SyncTaskTypeEnum.AST_MOD, orgAcctDayComponent.getOrgCode(planBase).getCode());
// 匹配规模
List<AstScale> astScale = loanBakRepo.getAstScale(maxDate, param.getPlanNo());
Money astMatchAmt = new Money();
loanDelVO.setAstMatchAmt(astMatchAmt);
astScale.forEach(item -> {
if ((!CapitalAstMatchEnum.DEFAULT.getCode().equals(item.getCapitalNo())) && (StringUtils.isEmpty(param.getCapitalNo()) || param.getCapitalNo().equals(item.getCapitalNo()))) {
astMatchAmt.addTo(item.getPrinBal());
}
});
return loanDelVO;
});
}
/**
* 资产列表
*
* @param param
* @return
*/
@Override
public BasePage<LoanListVO> queryLoanPage(LoanPageQryParam param) {
return this.doQry(param, () -> {
LoanListPage listPage = loanRepository.queryLoanPage(param);
BasePage<LoanListVO> res = new BasePage<>();
res.setCurrPageNo(listPage.getCurrPageNo());
res.setTotal(listPage.getTotal());
res.setLimit(listPage.getLimit());
if (ToolUtil.isNotEmpty(listPage.getDatas())) {
// 查找关联的合同信息
List<String> astNos = listPage.getDatas().stream().map(LoanDO::getAstNo).collect(Collectors.toList());
List<LoanContract> contracts = loanContractRepository.getByAstNos(astNos);
res.setDatas(LoanVOConvert.buildDetailList(listPage.getDatas(), contracts));
}
return res;
});
}
/**
* 获取资产详情
*
* @param param
* @return
*/
@Override
public LoanDetail getLoanDetail(LoanAstQryParam param) {
return this.doQry(param, () -> {
this.initPlan();
LoanDetail detail = LoanVOConvert.buildDetail(getLoan(param.getAstNo()));
return detail;
});
}
/**
* 分期资产收益详情
*
* @param param
* @return
*/
@Override
public LoanInstalDetail getLoanInstalDetail(LoanAstTermQryParam param) {
return this.doQry(param, () -> {
this.initPlan();
Loan loan = getLoan(param.getAstNo());
LoanInstalDetail detail = LoanVOConvert.buildDetail(loan, param.getTermNo());
return detail;
});
}
/**
* 取资产
*
* @param astNo
* @return
*/
private Loan getLoan(String astNo) {
Loan loan = loanRepository.getByAstNo(astNo);
VarChecker.checkNotNull(loan, "错误的资产编号[{0}]", astNo);
loanAstAssembler.assembleLoan(loan, null);
return loan;
}
/**
* 初始化计划信息,方便后面取信息
*/
private void initPlan() {
// 查询计划
List<PlanBase> planBaseList = planRepo.getPlansByStatusList(null,
Lists.newArrayList(PlanStatusEnum.ONGOING, PlanStatusEnum.PREPARING));
for (PlanBase planBase : planBaseList) {
if (!PlanConst.getAllPlan().containsKey(planBase.getPlanNo())) {
PlanConst.getAllPlan().put(planBase.getPlanNo(), planBase);
}
}
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.org;
import java.util.List;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.OrganizationDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.OrgListPage;
import com.abssqr.plat.common.facade.model.org.Organization;
import com.abssqr.plat.common.facade.param.org.OrgEditParam;
import com.abssqr.plat.common.facade.param.org.OrgPageQryParam;
import com.abssqr.plat.common.facade.param.org.OrgQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.org.OrgListVO;
import com.abssqr.plat.common.facade.service.OrgService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.core.service.org.OrgManager;
import com.general.system.common.model.BaseResult;
import com.google.common.collect.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.api.org: OrgService.java, v 0.1 2019-05-28 10:56 zhenxuan.luo Exp $
*/
@Component
public class OrgServiceImpl extends ServiceSupport implements OrgService {
@Autowired
private OrgManager orgManager;
private Logger logger = LoggerFactory.getLogger(OrgServiceImpl.class);
@Override
public BasePage<OrgListVO> getOrgList(@Valid OrgPageQryParam param) {
return this.doQry(param, () -> {
OrgListPage listPage = orgManager.getOrgList(param);
List<OrgListVO> abbrs = Lists.newArrayList();
for (OrganizationDO organization : listPage.getDatas()) {
//机构编码,机构简称,机构全称,联系人,联系人电话
OrgListVO orgListVO = new OrgListVO();
orgListVO.setOrgCode(organization.getOrgCode());
orgListVO.setOrgAbbr(organization.getOrgAbbreviation());
orgListVO.setOrgName(organization.getOrgName());
orgListVO.setLinkmanName(organization.getLinkmanName());
orgListVO.setLinkmanPhone(organization.getLinkmanPhone());
abbrs.add(orgListVO);
}
BasePage<OrgListVO> res = new BasePage<>();
res.setCurrPageNo(listPage.getCurrPageNo());
res.setTotal(listPage.getTotal());
res.setLimit(listPage.getLimit());
res.setDatas(abbrs);
return res;
});
}
@Override
public BaseResult<String> addOrUpdate(@Valid OrgEditParam param) {
return BaseResult.success(this.doOpr(param, () -> orgManager.addOrUpdate(param)));
}
@Override
public Organization getOrg(@Valid OrgQryParam param) {
return this.doQry(param, () -> orgManager.getOrg(param.getOrgCode()));
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.plan;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.facade.service.plan.PlanAllocRiskService;
import com.abssqr.plat.common.model.repo.plan.PlanAllocFrozenRepo;
import com.abssqr.plat.common.model.repo.plan.PlanAstRepository;
import com.abssqr.plat.core.service.plan.PlanAllocManager;
import com.abssqr.plat.core.service.plan.PlanManager;
import com.general.system.bpm.service.ProcessQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* @author hanfei
* @version $Id: PlanAllocRiskServiceImpl.java, v 0.1 2019-07-07 12:22 AM hanfei Exp $
*/
@Service
public class PlanAllocRiskServiceImpl extends ServiceSupport implements PlanAllocRiskService {
@Autowired
private ProcessQueryService processQueryService;
@Autowired
private PlanManager planManager;
@Autowired
private PlanAstRepository planAstRepository;
@Autowired
private PlanAllocManager planAllocManager;
@Autowired
private PlanAllocFrozenRepo planAllocFrozenRepo;
// /**
// * 分配计划 兑付风险详情
// * @param param
// * @return
// */
// @Override
// public AllocRiskDetail getAllocRisk(@Valid WorkOrderQryParam param) {
// return super.doQry(param, () -> {
// // 流程数据
// ProcessHistoricEntity entity = processQueryService.getHistoricByBusinessKey(param.getWorkOrdCode());
// // 查计划
// Plan plan = planManager.getPlanByNo(entity.getBusinessKey());
// // 查余额
// PlanAst planAst = planAstRepository.getByPlanNo(entity.getBusinessKey());
//
// // 查分配计划
// List<PlanAlloc> allocs = planAllocManager.queryAllocByEntityNo(entity.getBusinessKey());
// // 查冻结明细
// List<PlanAllocFrozen> allocFrozens = planAllocFrozenRepo.getByPlanNo(entity.getBusinessKey());
//
// AllocRiskDetail detail = new AllocRiskDetail();
//
// return detail;
// });
// }
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.plan;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.facade.enums.DataChangeBizTypeEnum;
import com.abssqr.plat.common.facade.enums.PriceTypeEnum;
import com.abssqr.plat.common.facade.model.BizDataChange;
import com.abssqr.plat.common.facade.model.plan.PlanAstPriceRule;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.param.plan.priceRule.PlanAstPriceRuleParam;
import com.abssqr.plat.common.facade.param.plan.priceRule.PriceQryParam;
import com.abssqr.plat.common.facade.result.plan.PlanAstPriceRuleVo;
import com.abssqr.plat.common.facade.service.plan.PlanAstPriceRuleService;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.repo.dataChange.ChangeRepo;
import com.abssqr.plat.common.model.repo.plan.PlanAstPriceRuleRepo;
import com.abssqr.plat.core.service.change.ChangeManager;
import com.abssqr.plat.core.service.plan.PlanAstPriceRuleManager;
import com.abssqr.plat.core.service.plan.PlanManager;
import com.general.system.bpm.enums.ApproveStatusEnum;
import com.general.system.common.util.VarChecker;
import com.general.system.facade.current.IdentityUtil;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
/**
* @author xiachenxiang
* @version com.abssqr.plat.biz.api.plan: PlanAstPriceRuleServiceImpl.java, v 0.1 2019-11-07 5:33 PM xiachenxiang Exp $
*/
@Service
public class PlanAstPriceRuleServiceImpl extends ServiceSupport implements PlanAstPriceRuleService {
@Autowired
private PlanAstPriceRuleRepo planAstPriceRuleRepo;
@Autowired
private PlanAstPriceRuleManager planAstPriceRuleManager;
@Autowired
private PlanManager planManager;
@Autowired
private ChangeManager changeManager;
@Autowired
private ChangeRepo changeRepo;
@Override
public PlanAstPriceRuleVo queryDtl(@Valid PriceQryParam param) {
return this.doQry(param, () -> {
PlanAstPriceRuleVo result = new PlanAstPriceRuleVo();
if (param.getWork()) {
BizDataChange<PlanBase> dataChange = changeManager.getDataChange(param.getPlanNo());
VarChecker.checkNotNull(dataChange, "未找到对应待审批的定价规则数据");
PlanBase planBase = dataChange.getDatas();
result.setPlanNo(planBase.getPlanNo());
result.setPlanName(planBase.getPlanName());
result.setPriceType(planBase.getPriceType().getCode());
result.setPlanAstPriceRuleList(planBase.getPlanAstPriceRuleList());
} else {
PlanBase planBase = planManager.getPlanFullByNo(param.getPlanNo());
VarChecker.checkNotNull(planBase, "未找到对应的计划");
result.setPlanNo(planBase.getPlanNo());
result.setPriceType(Optional.ofNullable(planBase.getPriceType()).map(PriceTypeEnum::getCode).orElse(null));
result.setPlanAstPriceRuleList(planAstPriceRuleRepo.queryByPriceRulePlanNo(param.getPlanNo()));
}
// 判断是否有审批中的定价
Long cnt = changeRepo.cntByBizNoAndStatusAndBizType(DataChangeBizTypeEnum.PanAstPriceRule.getCode(),result.getPlanNo(), ApproveStatusEnum.PENDING.getCode());
result.setPending(cnt > 0L);
if(CollectionUtils.isNotEmpty(result.getPlanAstPriceRuleList())){
for (PlanAstPriceRule planAstPriceRule : result.getPlanAstPriceRuleList()) {
if(planAstPriceRule.getIntrDiscountRate()!=null) {
planAstPriceRule.setIntrDiscountRate(
CalcUtil.calcPercRate(planAstPriceRule.getIntrDiscountRate()));
}
}
}
return result;
});
}
@Override
public Void edit(PlanAstPriceRuleParam param) {
if(param!=null&&CollectionUtils.isNotEmpty(param.getPlanAstPriceRuleList())){
for (PlanAstPriceRule planAstPriceRule : param.getPlanAstPriceRuleList()) {
if(planAstPriceRule.getIntrDiscountRate()!=null) {
planAstPriceRule.setIntrDiscountRate(CalcUtil.calcRealRate(planAstPriceRule.getIntrDiscountRate()));
}
}
}
return this.doOpr(param, () -> planAstPriceRuleManager.updateRule(param, IdentityUtil.getUserCode(), IdentityUtil.getUserOrgCode()));
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.plan;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.PlanCapitalLogDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.PlanCapitalLogListPage;
import com.abssqr.plat.common.facade.model.plan.PlanCapitalLog;
import com.abssqr.plat.common.facade.param.base.CommonPlanLogQryParam;
import com.abssqr.plat.common.facade.param.plan.log.PlanCapitalLogPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.service.plan.PlanCapitalLogService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.convertor.PlanCapitalLogConvertor;
import com.abssqr.plat.common.model.repo.plan.PlanCapitalLogRepo;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.api.plan: PlanCapitalLogServiceImpl.java, v 0.1 2019-05-28 17:40 zhenxuan.luo Exp $
*/
@Component
public class PlanCapitalLogServiceImpl extends ServiceSupport implements PlanCapitalLogService {
@Autowired
private PlanCapitalLogRepo planCapitalLogRepo;
@Override
public BasePage<PlanCapitalLog> queryLogList(@Valid PlanCapitalLogPageQryParam param) {
return this.doQry(param, () -> {
PlanCapitalLogListPage listPage = planCapitalLogRepo.getByPlanNo(param);
List<PlanCapitalLog> capitalLogList = Lists.newArrayList();
for (PlanCapitalLogDO planCapitalLogDO : listPage.getDatas()) {
capitalLogList.add(PlanCapitalLogConvertor.convert2Domain(planCapitalLogDO));
}
BasePage<PlanCapitalLog> res = new BasePage<>();
res.setCurrPageNo(listPage.getCurrPageNo());
res.setTotal(listPage.getTotal());
res.setLimit(listPage.getLimit());
res.setDatas(capitalLogList);
return res;
});
}
@Override
public PlanCapitalLog queryLogDtl(@Valid CommonPlanLogQryParam param) {
return this.doQry(param, () -> planCapitalLogRepo.getBySeqNo(param.getSeqNo(), param.getPlanNo()));
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.plan;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.facade.param.plan.structure.InvestStructureQryParam;
import com.abssqr.plat.common.facade.result.plan.PlanInvestStructureVO;
import com.abssqr.plat.common.facade.service.plan.PlanInvestStructureService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.convertor.PlanInvestStructureConvert;
import com.abssqr.plat.common.model.repo.plan.PlanInvestStructureRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
* @author xiachenxiang
* @version com.abssqr.plat.biz.api.plan: PlanInvestStructureServiceImpl.java, v 0.1 2020-02-06 1:40 PM xiachenxiang Exp $
*/
@Component
public class PlanInvestStructureServiceImpl extends ServiceSupport implements PlanInvestStructureService {
@Autowired
private PlanInvestStructureRepo planInvestStructureRepo;
@Override
public List<PlanInvestStructureVO> getStructureList(@Valid InvestStructureQryParam param) {
return super.doQry(param,()-> PlanInvestStructureConvert.convert2VoList(planInvestStructureRepo.selectByPlanNo(param.getPlanNo())));
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.plan;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.paging.MonitorRecordPage;
import com.abssqr.plat.common.facade.enums.PlanIndicatorEnum;
import com.abssqr.plat.common.facade.model.plan.PlanMonitor;
import com.abssqr.plat.common.facade.model.plan.PlanMonitorRecord;
import com.abssqr.plat.common.facade.param.base.CommonPlanQryParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanEventMonitorQryParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorDelParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorOprParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.service.plan.PlanMonitorService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.exception.AbssqrBizException;
import com.abssqr.plat.common.model.repo.plan.PlanMonitorRecordRepo;
import com.abssqr.plat.common.model.repo.plan.PlanMonitorRepo;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.MessageUtil;
import com.general.system.common.util.VarChecker;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.api.plan: PlanMonitorServiceImpl.java, v 0.1 2019-05-28 15:23 zhenxuan.luo Exp $
*/
@Component
public class PlanMonitorServiceImpl extends ServiceSupport implements PlanMonitorService {
private final static Logger LOGGER = LoggerFactory.getLogger(PlanMonitorServiceImpl.class);
@Autowired
private PlanMonitorRepo planMonitorRepo;
@Autowired
private PlanMonitorRecordRepo planMonitorRecordRepo;
@Override
public PlanMonitor editMonitor(@Valid PlanMonitorOprParam param) {
return this.doOpr(param, () -> {
PlanMonitor existPlanMonitor = planMonitorRepo.getByIndicator(param.getPlanNo(), param.getIndicator());
if (param.getAdd()) {
if (existPlanMonitor!=null) {
throw new AbssqrBizException(
MessageUtil.formatMsg("存在[{0}]的{1}监控指标,无法新增", param.getPlanNo(), PlanIndicatorEnum.getByCode(param.getIndicator()).getDesc()));
}
planMonitorRepo.insert(constructDomain(param));
} else {
planMonitorRepo.updateByIndicator(constructDomain(param));
}
return planMonitorRepo.getByIndicator(param.getPlanNo(), param.getIndicator());
});
}
@Override
public Void deletePlanMonitor(@Valid PlanMonitorDelParam param) {
return this.doOpr(param, () -> {
int refCnt = planMonitorRepo.deleteByIndicator(param.getPlanNo(), param.getIndicator());
LogUtil.info(LOGGER, "删除计划指标项[{0}],实际删除[{1}]条数据", param, refCnt);
return null;
});
}
/**
* 事件列表
*
* @param param
* @return
*/
@Override
public BasePage<PlanMonitorRecord> queryEventMonitorList(@Valid PlanEventMonitorQryParam param) {
return this.doQry(param, () -> {
MonitorRecordPage monitorRecordPage=planMonitorRecordRepo.getEventByPlan(param);
BasePage<PlanMonitorRecord> result = new BasePage<>();
result.setCurrPageNo(monitorRecordPage.getCurrPageNo());
result.setTotal(monitorRecordPage.getTotal());
result.setLimit(monitorRecordPage.getLimit());
if (CollectionUtils.isNotEmpty(monitorRecordPage.getDatas())) {
List<PlanMonitorRecord> datas = monitorRecordPage.getDatas().stream().map(planMonitorRecordDO -> {
PlanMonitorRecord vo = new PlanMonitorRecord();
vo.setGmtCreate(planMonitorRecordDO.getGmtCreate());
vo.setMonitorName(planMonitorRecordDO.getMonitorName());
vo.setExcessValue(planMonitorRecordDO.getExcessValue());
vo.setId(planMonitorRecordDO.getId());
vo.setIndicator(PlanIndicatorEnum.getByCode(planMonitorRecordDO.getIndicator()));
vo.setPlanNo(planMonitorRecordDO.getPlanNo());
vo.setValue(planMonitorRecordDO.getValue());
return vo;
}).collect(Collectors.toList());
result.setDatas(datas);
}
return result;
}
);
}
@Override
public PlanMonitor queryMonitorDtl(@Valid PlanMonitorQryParam param) {
return this.doQry(param, () -> {
return planMonitorRepo.getByIndicator(param.getPlanNo(), param.getIndicator());
});
}
@Override
public List<PlanMonitor> queryMonitorList(@Valid CommonPlanQryParam param) {
return this.doQry(param, () -> planMonitorRepo.getByPlan(param.getPlanNo()));
}
private PlanMonitor constructDomain(PlanMonitorOprParam param) {
PlanMonitor planMonitor = new PlanMonitor();
planMonitor.setPlanNo(param.getPlanNo());
planMonitor.setIndicator(PlanIndicatorEnum.getByCode(param.getIndicator()));
planMonitor.setName(param.getName());
planMonitor.setValue(param.getValue());
return planMonitor;
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.prod;
import com.abssqr.plat.biz.support.OprTemplate;
import com.abssqr.plat.biz.support.QryTemplate;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.ProductDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.ProductListPage;
import com.abssqr.plat.common.facade.model.prod.LoanProduct;
import com.abssqr.plat.common.facade.param.prod.ProdEditParam;
import com.abssqr.plat.common.facade.param.prod.ProdPageQryParam;
import com.abssqr.plat.common.facade.param.prod.ProdQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.prod.ProdListVO;
import com.abssqr.plat.common.facade.service.ProdService;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.repo.org.OrgRepository;
import com.abssqr.plat.common.model.utils.ApproveChangeUtil;
import com.abssqr.plat.core.service.prod.ProdManager;
import com.general.system.bpm.enums.ApproveStatusEnum;
import com.general.system.common.model.BaseResult;
import com.general.system.facade.current.IdentityUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 项目计划对应产品管理
* @author bangis.wangdf
* @version com.abssqr.plat.biz.api.prod: ProdServiceImpl.java, v 0.1 2019-05-28 14:19 bangis.wangdf Exp $
*/
@Service
public class ProdServiceImpl extends ServiceSupport implements ProdService {
@Autowired
private OrgRepository orgRepository;
@Autowired
private ProdManager prodManager;
/**
* 产品分页查询
*
* @param param
* @return
*/
@Override
public BasePage<ProdListVO> getProdList(@Valid ProdPageQryParam param) {
return this.doQry(param, (QryTemplate<BasePage<ProdListVO>>)() -> {
ProductListPage page = prodManager.getProdList(param, IdentityUtil.getUserCode());
BasePage<ProdListVO> result = new BasePage<ProdListVO>();
result.setCurrPageNo(page.getCurrPageNo());
result.setTotal(page.getTotal());
result.setLimit(page.getLimit());
List<ProdListVO> datas = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(page.getDatas())) {
Set<String> orgCodes = page.getDatas().stream().map(ProductDO::getManagerOrgCode).collect(
Collectors.toSet());
Map<String, String> orgNameMap = orgRepository.getOrgNames(orgCodes);
page.getDatas().forEach(DO -> {
ProdListVO data = new ProdListVO();
//prodCode 外部产品码
data.setProdCode(DO.getProdCode());
//prodName 产品名
data.setProdName(DO.getProdName());
//approveStatus 审批状态
data.setApproveStatus(ApproveStatusEnum.getEnum(DO.getApproveStatus()));
//abssqrProdCode 内部产品码
data.setAbssqrProdCode(DO.getAbssqrProdCode());
//managerOrgCode 贷款的管理机构
data.setManagerOrgCode(DO.getManagerOrgCode());
data.setManagerOrgName(orgNameMap.get(DO.getManagerOrgCode()));
//gmtModified
data.setGmtModified(DO.getGmtModified());
//可编辑判断
data.setOperate(ApproveChangeUtil.allowEdit(data.getApproveStatus()));
datas.add(data);
});
}
result.setDatas(datas);
return result;
});
}
/**
* 新增OrUpdate
*
* @param param
* @return
*/
@Override
public BaseResult<String> addOrUpdate(@Valid ProdEditParam param) {
return BaseResult.success(this.doOpr(param,
(OprTemplate<String>)() -> prodManager.addOrUpdate(param, IdentityUtil.getUserCode(), IdentityUtil.getUserOrgCode())));
}
/**
* 获取产品
*
* @param param
* @return
*/
@Override
public LoanProduct getProd(@Valid ProdQryParam param) {
if (param.getWork()){
return this.doQry(param, () -> prodManager.getDataChangeProductBy(param.getAbssqrProdCode()));
}else{
return this.doQry(param, () -> prodManager.getProductBy(param.getAbssqrProdCode()));
}
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.utility;
import com.abssqr.plat.biz.support.ServiceSupport;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.facade.param.utility.PlanVaTaxCalcParam;
import com.abssqr.plat.common.facade.service.utility.UtilService;
import com.abssqr.plat.common.facade.utils.CalcUtil;
import com.abssqr.plat.common.facade.validation.Valid;
import com.abssqr.plat.common.model.repo.plan.PlanRepo;
import com.general.system.common.model.Money;
import com.general.system.common.util.VarChecker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
/**
* 计算税金工具服务
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.interceptor: UtilServiceImpl.java, v 0.1 2019-06-05 01:42 zhenxuan.luo Exp $
*/
@Component
public class UtilServiceImpl extends ServiceSupport implements UtilService {
@Autowired
private PlanRepo planRepo;
/**
* 计算税金
* @param param
* @return
*/
@Override
public Money calcVatTaxForNet(@Valid PlanVaTaxCalcParam param) {
return this.doQry(param, () -> {
PlanBase planBase = planRepo.getPlanByNo(param.getPlanNo());
VarChecker.checkNotNull(planBase, "计划[{0}]不存在", param.getPlanNo());
BigDecimal taxRate = planBase.getVatRate();
return CalcUtil.calcVatTaxForNet(param.getAmt(), taxRate);
});
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.biz.api.workbench;
import cn.hutool.core.collection.CollectionUtil;
import com.abssqr.plat.common.facade.enums.PlanTypeEnum;
import com.abssqr.plat.common.facade.result.workbench.OrgPlanInfo;
import com.abssqr.plat.common.facade.service.workbench.WorkBenchQueryService;
import com.abssqr.plat.core.service.workbenchquery.WorkBenchQueryManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 工作台查询接口
*
* @author yangcheng
* @version com.abssqr.admin.biz.service.workbench: WorkBenchQueryServiceImpl.java, v 0.1 2018-06-19 上午10:51 guozhenhua Exp $
*/
@Component
public class WorkBenchQueryServiceImpl implements WorkBenchQueryService {
@Autowired
private WorkBenchQueryManager workBenchQueryManager;
/**
* 获取机构信息总览
* @return
*/
@Override
public List<OrgPlanInfo> getOrgProductInfo() {
// 放款池
OrgPlanInfo spv = workBenchQueryManager.getOrgProductInfo(PlanTypeEnum.SPV);
// 承接池
OrgPlanInfo plan = workBenchQueryManager.getOrgProductInfo(PlanTypeEnum.PLAN);
return CollectionUtil.newArrayList(spv, plan);
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.match;
import java.util.Date;
import java.util.List;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherExecutorTemp;
import com.abssqr.plat.biz.shared.handler.PlanAstMatchHandler;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.abssqr.plat.common.model.domain.ast.Pack;
import com.abssqr.plat.common.model.domain.task.CommonTask;
import com.abssqr.plat.common.model.repo.task.CommonTaskRepository;
import com.abssqr.plat.common.util.loggers.CommonLoggers;
import com.general.system.common.util.DateTimeUtil;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.SystemDateUtil;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.dispatcher.match: PlanAstMatchDispatcherStarter.java, v 0.1 2019-11-12 11:03
* bangis.wangdf Exp $
*/
@Component
@Configuration
public class PlanAstMatchDispatcherExecutor extends DispatcherExecutorTemp<CommonTask> {
private final static Logger LOGGER = CommonLoggers.AST_MATCH;
@Autowired
PlanAstMatchHandler planAstMatchHandler;
@Autowired
CommonTaskRepository commonTaskRepository;
@Override
public CommonTask doExecute(CommonTask node) {
LogUtil.info(LOGGER, "执行资产匹配任务[{0}]-start", node.getContext());
planAstMatchHandler.execute(node.getContext(), (List<Pack>)node.getExtObj(), status -> {
if (TaskStatusEnum.SUCCESS == status) {
node.setTaskStatus(status);
markSuccess(node);
} else {
markFail(node, "执行资产匹配任务失败");
}
LogUtil.info(LOGGER, "执行资产匹配任务[{0}]-end,status=[{1}]", node.getContext(), status);
});
return node;
}
@Override
protected CommonTask markSuccess(CommonTask node) {
//为保证数据一直性,讲成功设置
commonTaskRepository.updateTaskStatus(node.getId(), TaskStatusEnum.SUCCESS, TaskStatusEnum.EXECUTING, "");
return node;
}
@Override
protected CommonTask markFail(CommonTask node, String failMessage) {
// 因异常引起的重试
Date nextTime = DateTimeUtil.addSecond(SystemDateUtil.getSystemDate(), 60);
String msg = failMessage.length() > 2000 ? failMessage.substring(0, 2000) : failMessage;
commonTaskRepository.updateTaskExep(nextTime, node.getId(), msg);
return node;
}
@Override
protected CommonTask markException(CommonTask node, String failMessage) {
return markFail(node, failMessage);
}
@Override
protected String getName() {
return "PlanAstMatchDispatcherExecutor";
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.match;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherLoader;
import com.abssqr.plat.common.facade.enums.AstPackStatusEnum;
import com.abssqr.plat.common.facade.enums.CommonTaskTypeEnum;
import com.abssqr.plat.common.facade.enums.SyncTaskTypeEnum;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.abssqr.plat.common.model.domain.ast.Pack;
import com.abssqr.plat.common.model.domain.task.CommonTask;
import com.abssqr.plat.common.model.repo.job.JobControlRepository;
import com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo;
import com.abssqr.plat.common.model.repo.task.CommonTaskRepository;
import com.abssqr.plat.common.model.seq.SequenceUtil;
import com.abssqr.plat.core.service.accounting.OrgAcctDayComponent;
import com.abssqr.plat.core.service.ast.AstPackManager;
import com.abssqr.plat.core.service.host.HostManager;
import com.abssqr.plat.core.service.util.CommonTaskUtil;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.SystemDateUtil;
import com.general.system.common.util.ThreadUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionTemplate;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.dispatcher.match: PlanAstMatchDispatcherStarter.java, v 0.1 2019-11-12 11:03
* bangis.wangdf Exp $
*/
@Component
@Configuration
public class PlanAstMatchDispatcherLoader implements DispatcherLoader<CommonTask> {
private final static Logger LOGGER = LoggerFactory.getLogger(PlanAstMatchDispatcherLoader.class);
private static long sleepTime = 1000 * 60;
@Autowired
private TransactionTemplate transactionTemplate;
@Autowired
private HostManager hostManager;
@Autowired
private AstPackManager astPackManager;
@Autowired
private AstSyncTaskCtrRepo astSyncTaskCtrRepo;
@Autowired
private JobControlRepository jobControlRepository;
@Autowired
private CommonTaskRepository commonTaskRepository;
@Autowired
private OrgAcctDayComponent orgAcctDayComponent;
@Override
public List<CommonTask> loadToDoNodes(int size) {
ThreadUtil.sleep(sleepTime, LOGGER);
Date curDate = orgAcctDayComponent.getTrfAcctDay().getStandardDate();
return transactionTemplate.execute(transactionStatus -> {
// 太多乐观锁冲突报错了,还是加个锁吧
jobControlRepository.lockByJobName(PlanAstMatchDispatcherStarter.JOB_NAME);
List<CommonTask> tasks = Lists.newArrayList();
List<CommonTask> existsTask = commonTaskRepository.selectUnifinishTaskByType(CommonTaskTypeEnum.PACK_MATCH);
Map<String, CommonTask> taskMap = existsTask.stream().collect(
Collectors.toMap(CommonTask::getContext, item -> item));
// 获取当前资产内部模型同步完成
List<String> orgCodes = astSyncTaskCtrRepo.getLastStatusFinishedOrgCodes(curDate, SyncTaskTypeEnum.AST_MOD);
if (CollectionUtils.isNotEmpty(orgCodes)) {
//获取以资产机构维度的包
Map<String, List<Pack>> orgPackMap = astPackManager.queryPacksByOrgCodes(orgCodes, curDate,
AstPackStatusEnum.INIT);
orgPackMap.forEach((orgCode, packs) -> {
if (orgCodes.contains(orgCode)) {
Map<String, List<Pack>> spvPlanPackMap = trfSpvPlanPackMap(packs);
if (MapUtils.isNotEmpty(spvPlanPackMap)) {
for (Map.Entry<String, List<Pack>> entity : spvPlanPackMap.entrySet()) {
CommonTask commonTask = taskMap.get(entity.getKey());
if (null == commonTask) {
commonTask = CommonTaskUtil.buildCommonTaskWithContext(
SequenceUtil.genWkSeqNo(), CommonTaskTypeEnum.PACK_MATCH, entity.getKey());
commonTaskRepository.create(commonTask);
} else {
if (commonTask.getTaskStatus() != TaskStatusEnum.INIT) {
continue;
} else if (SystemDateUtil.getSystemDate().compareTo(commonTask.getNextExecTime())
< 0) {
continue;
}
}
commonTask.setExtObj(spvPlanPackMap.get(entity.getKey()));
tasks.add(commonTask);
if (tasks.size() >= size) {
break;
}
}
}
spvPlanPackMap.get(0);
} else {
LogUtil.warn(LOGGER, "[PlanAstMatchDispatcherLoader][{0}]AST_MOD未完成,[{1}]忽略执行,非正常生成筛选包",
orgCode, packs);
astPackManager.updatePackStatus(packs, AstPackStatusEnum.SCEEN_IGR,
AstPackStatusEnum.INIT);
}
});
}
if (CollectionUtils.isNotEmpty(tasks)) {
commonTaskRepository
.updateTaskExec(SystemDateUtil.getSystemDate(), hostManager.getHostInfo().getHostName(),
tasks);
}
return tasks;
});
}
/**
* 放款计划-受让计划 一对多
*
* @param packs
* @return
*/
private Map<String, List<Pack>> trfSpvPlanPackMap(List<Pack> packs) {
Map<String, List<Pack>> spvPlanPackMap = Maps.newHashMap();
packs.forEach(pack -> {
String spvPlanNo = pack.getTransferRule().getAstScreenRuleList().stream().findFirst()
.get().getLenderOrgCode();
List<Pack> spvPacks = spvPlanPackMap.get(spvPlanNo);
if (CollectionUtils.isEmpty(spvPacks)) {
spvPacks = Lists.newArrayList();
spvPlanPackMap.put(spvPlanNo, spvPacks);
}
spvPacks.add(pack);
});
return spvPlanPackMap;
}
public static void setSleepTime(long sleepTime) {
PlanAstMatchDispatcherLoader.sleepTime = sleepTime;
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.match;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherExecutor;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherLoader;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherStarter;
import com.abssqr.plat.common.model.domain.ast.AstPoolNode;
import com.abssqr.plat.common.model.repo.task.AstSyncTaskCtrRepo;
import com.abssqr.plat.common.model.repo.task.CommonTaskRepository;
import com.abssqr.plat.core.service.host.HostManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.dispatcher.match: PlanAstMatchDispatcherStarter.java, v 0.1 2019-11-12 11:03
* bangis.wangdf Exp $
*/
@Component
@Configuration
public class PlanAstMatchDispatcherStarter extends DispatcherStarter<AstPoolNode> {
@Autowired
HostManager hostManager;
@Autowired
AstSyncTaskCtrRepo astSyncTaskCtrRepo;
@Autowired
CommonTaskRepository commonTaskRepository;
@Autowired
PlanAstMatchDispatcherLoader planAstMatchDispatcherLoader;
@Autowired
PlanAstMatchDispatcherExecutor planAstMatchDispatcherExecutor;
public static String JOB_NAME = "PlanAstMatchDispatcherStarter";
private int coreSize = 2;
private int maxSize = 2;
private int hungrySize = 1;
private int queueSize = 2;
@Override
protected void recovery() {
commonTaskRepository.updateHangTasksByIp(hostManager.getHostInfo().getHostName());
}
@Override
public String getName() {
return JOB_NAME;
}
@Override
protected int getCoreSize() {
return coreSize;
}
@Override
protected int getMaxSize() {
return maxSize;
}
@Override
protected int getQueueSize() {
return queueSize;
}
@Override
protected int getHungrySize() {
return hungrySize;
}
@Override
protected DispatcherLoader getLoader() {
return planAstMatchDispatcherLoader;
}
@Override
protected DispatcherExecutor getExecutor() {
return planAstMatchDispatcherExecutor;
}
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.transfer;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherExecutorTemp;
import com.abssqr.plat.common.dal.mysql.auto.dao.TrTaskDAO;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.abssqr.plat.common.model.domain.task.TrTask;
import com.abssqr.plat.common.model.repo.tr.TrTaskRepo;
import com.abssqr.plat.core.service.ast.LoanAstTrManager;
import com.general.system.common.util.DateTimeUtil;
import com.general.system.common.util.SystemDateUtil;
import com.general.system.common.util.LogUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 资产转让执行器
*
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.task.task: AstTrTaskExecutor.java, v 0.1 2018-01-08 02:15 hongwei.wang Exp $
*/
@Component
public class AstTrTaskExecutor extends DispatcherExecutorTemp<TrTask> {
// 单位(秒)
private final static int DEFAULT_STEP = 5;
private final static Logger logger = LoggerFactory.getLogger(AstTrTaskExecutor.class);
@Autowired
private TrTaskDAO trTaskDAO;
@Autowired
private LoanAstTrManager loanAstTrManager;
@Autowired
private TrTaskRepo trTaskRepo;
@Override
public TrTask doExecute(TrTask node) {
logger.info(node.toString());
boolean rs = false;
Date befDt = SystemDateUtil.getSystemDate();
try {
TrTask lockedNode = trTaskRepo.lockByIdNowait(node.getId());
if (null == lockedNode || lockedNode.getTaskStatus() != TaskStatusEnum.EXECUTING) {
LogUtil.warn(logger, "转让任务[{0}]状态[{1}]不为执行中,可能存在并发问题", node.getId(),
(lockedNode != null) ? lockedNode.getTaskStatus() : "-");
return lockedNode;
}
// 执行转让操作
rs = loanAstTrManager.transfer(node);
if (rs) {
return markSuccess(node);
} else {
return markFail(node, "转让校验失败");
}
} finally {
Date endDt = SystemDateUtil.getSystemDate();
logger.info("[AstTrTaskDigest] astId=[" + node.getAstNo() + "], res=" + rs + ", elipse=" + (endDt.getTime()
- befDt.getTime())
+ "ms");
}
}
/**
* 标记成功
*
* @param node
*/
@Override
protected TrTask markSuccess(TrTask node) {
node.setTaskStatus(TaskStatusEnum.SUCCESS);
trTaskDAO.updateTaskStatus(node.getId(), "", TaskStatusEnum.SUCCESS.getCode());
return node;
}
/**
* 标记失败
*
* @param node
* @param failMessage
*/
@Override
protected TrTask markFail(TrTask node, String failMessage) {
node.setTaskStatus(TaskStatusEnum.FAILURE);
trTaskDAO.updateTaskStatus(node.getId(), failMessage, TaskStatusEnum.FAILURE.getCode());
return node;
}
/**
* 标记异常
*
* @param node
* @param failMessage
*/
@Override
protected TrTask markException(TrTask node, String failMessage) {
if (StringUtils.isBlank(failMessage)) {
failMessage = "转让执行失败";
}
node.setTaskStatus(TaskStatusEnum.INIT);
trTaskDAO.updateTaskExep(DateTimeUtil.addSecond(SystemDateUtil.getSystemDate(), DEFAULT_STEP),
node.getId(),
failMessage.length() > 2000 ? failMessage.substring(0, 1990) : failMessage);
return node;
}
@Override
protected String getName() {
return "AstTrTaskExecutor";
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.transfer;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherLoader;
import com.abssqr.plat.common.dal.mysql.auto.dao.TrTaskDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.TrTaskDO;
import com.abssqr.plat.common.facade.enums.AstPackTradeTypeEnum;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.abssqr.plat.common.model.convertor.TrTaskConvert;
import com.abssqr.plat.common.model.domain.task.TrCtrTask;
import com.abssqr.plat.common.model.domain.task.TrTask;
import com.abssqr.plat.common.model.repo.tr.TrCtrTaskRepo;
import com.abssqr.plat.core.service.accounting.OrgAcctDayComponent;
import com.abssqr.plat.core.service.host.HostManager;
import com.general.system.common.util.LogUtil;
import com.general.system.common.util.SystemDateUtil;
import com.general.system.common.util.VarChecker;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionTemplate;
import java.util.Date;
import java.util.List;
/**
* 资产转让
*
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.task.task: AstTrTaskLoader.java, v 0.1 2018-01-08 00:59 hongwei.wang Exp $
*/
@Component
public class AstTrTaskLoader implements DispatcherLoader<TrTask> {
private final static Logger LOGGER = LoggerFactory.getLogger(AstTrTaskLoader.class);
@Autowired
private TrTaskDAO trTaskDAO;
@Autowired
private TransactionTemplate transactionTemplate;
@Autowired
private HostManager hostManager;
@Autowired
private TrCtrTaskRepo trCtrTaskRepo;
@Autowired
private OrgAcctDayComponent orgAcctDayComponent;
/**
* 装载待分发节点
*
* @param size
* @return
*/
@Override
public List<TrTask> loadToDoNodes(int size) {
Date curDate = orgAcctDayComponent.getTrfAcctDay().getStandardDate();
TrCtrTask trCtrTask = trCtrTaskRepo.getByStatus(curDate, TaskStatusEnum.INIT, AstPackTradeTypeEnum.AST_TRF_BIZ);
if (null == trCtrTask) {
return Lists.newArrayList();
}
return transactionTemplate.execute(transactionStatus -> {
TrCtrTask lockedCtrTask = trCtrTaskRepo.lockById(trCtrTask.getId());
if (lockedCtrTask.getTaskStatus() != TaskStatusEnum.INIT) {
return Lists.newArrayList();
}
trCtrTaskRepo.updateExecTms(lockedCtrTask.getId(), lockedCtrTask.getExecTimes() + 1);
Long undoCnt = trTaskDAO.cntInitTaskByBatchNo(lockedCtrTask.getBatchNo());
if (undoCnt == 0) {
LogUtil.info(LOGGER, "转让控制[{0}]无待转任务,标记结束", lockedCtrTask);
trCtrTaskRepo.updateStatus(lockedCtrTask.getId(), TaskStatusEnum.SUCCESS);
return Lists.newArrayList();
}
List<TrTaskDO> taskDOS = trTaskDAO.selectInitTask(SystemDateUtil.getSystemDate(), Long.valueOf(size),
lockedCtrTask.getBatchNo(), AstPackTradeTypeEnum.AST_TRF_BIZ.getCode());
if (CollectionUtils.isEmpty(taskDOS)) {
return Lists.newArrayList();
}
int count = trTaskDAO.updateTaskExec(SystemDateUtil.getSystemDate(),
hostManager.getHostInfo().getHostName(),
taskDOS);
VarChecker.checkEquals(count, taskDOS.size(), "[TaskLoader.loadToDoNodes]更新任务数跟期望数不一致,实际更新:{0},期望更新:{1}",
count,
taskDOS.size());
LogUtil.info(LOGGER, "转让控制[{0}]捞取[{1}]待执行任务", lockedCtrTask, count);
return TrTaskConvert.convertDTOs(taskDOS);
});
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.dispatcher.transfer;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherExecutor;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherLoader;
import com.abssqr.plat.biz.shared.dispatcher.DispatcherStarter;
import com.abssqr.plat.common.dal.mysql.auto.dao.TrTaskDAO;
import com.abssqr.plat.common.facade.enums.AstPackTradeTypeEnum;
import com.abssqr.plat.common.model.domain.task.TrTask;
import com.abssqr.plat.core.service.host.HostManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.biz.shared.task.task: AstTrTaskDispatcherManager.java, v 0.1 2018-01-08 02:42 hongwei
* .wang Exp $
*/
@Component
public class AstTrTaskStarter extends DispatcherStarter<TrTask> {
@Autowired
private AstTrTaskExecutor astTrTaskExecutor;
@Autowired
private AstTrTaskLoader astTrTaskLoader;
@Autowired
private HostManager hostManager;
@Autowired
private TrTaskDAO trTaskDAO;
@Value("${dispatcher.tr.coreSize}")
private int coreSize;
@Value("${dispatcher.tr.maxSize}")
private int maxSize;
@Value("${dispatcher.tr.hungrySize}")
private int hungrySize;
@Value("${dispatcher.tr.queueSize}")
private int queueSize = 200;
@Override
protected void recovery() {
trTaskDAO.updateHangTasksByIp(hostManager.getHostInfo().getHostName(), AstPackTradeTypeEnum.AST_TRF_BIZ.getCode());
}
@Override
public String getName() {
return "trTaskDispatcher";
}
@Override
protected int getCoreSize() {
return coreSize;
}
@Override
protected int getMaxSize() {
return maxSize;
}
@Override
protected int getQueueSize() {
return queueSize;
}
@Override
protected int getHungrySize() {
return hungrySize;
}
@Override
protected DispatcherLoader<TrTask> getLoader() {
return astTrTaskLoader;
}
@Override
protected DispatcherExecutor<TrTask> getExecutor() {
return astTrTaskExecutor;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.biz.shared.handler;
import com.abssqr.plat.common.facade.model.plan.PlanAcctTitle;
import com.abssqr.plat.common.facade.model.plan.PlanBase;
import com.abssqr.plat.common.model.domain.plan.PlanAcctTitleTransDetail;
import com.abssqr.plat.common.model.repo.plan.PlanAcctTitleRepo;
import com.abssqr.plat.core.service.plan.PlanAcctTitleManager;
import com.abssqr.plat.core.service.plan.PlanSettleManager;
import com.general.system.common.util.LogUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
/**
* 每日结息任务
*
* @author zhenxuan.luo
* @version com.abssqr.plat.biz.shared.handler: PlanSettleHandler.java, v 0.1 2019-06-30 23:59 zhenxuan.luo Exp $
*/
@Component
public class PlanSettleHandler {
private final static Logger LOGGER = LoggerFactory.getLogger(PlanSettleHandler.class);
@Autowired
private PlanAcctTitleRepo planAcctTitleRepo;
@Autowired
private PlanSettleManager planSettleManager;
@Autowired
private PlanAcctTitleManager planAcctTitleManager;
/**
* 每日结息任务
* @param planEntity
*/
public void execute(PlanBase planEntity, Date curDate) {
LogUtil.info(LOGGER, "执行{0}[{1}]每日结息任务",
planEntity.getPlanType().getDesc(), planEntity.getPlanNo());
// 计划下所有科目信息
List<PlanAcctTitle> planAcctTitles = planAcctTitleRepo.getByEntityNo(planEntity.getPlanNo());
// 对科目进行结息操作
List<PlanAcctTitleTransDetail> transDetails = planSettleManager.settle(planEntity, curDate, planAcctTitles, true);
// 保存计划科目信息
planAcctTitleManager.store(transDetails);
LogUtil.info(LOGGER, "执行{0}[{1}]每日结息任务-结束",
planEntity.getPlanType().getDesc(), planEntity.getPlanNo());
}
}
\ No newline at end of file
...@@ -4,15 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -4,15 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.ArrayList; import java.util.ArrayList;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO; import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.PactsAstMatchPage;
import java.util.Date;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolItem;
import java.util.List; import java.util.List;
import java.lang.Long;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolPage;
import com.abssqr.plat.common.dal.mysql.auto.mapper.AstPoolDOMapper; import com.abssqr.plat.common.dal.mysql.auto.mapper.AstPoolDOMapper;
/** /**
* The Table ABS_AST_POOL. * The Table abs_ast_pool.
* 一月的资产池 * ABS_AST_POOL
*/ */
@Repository @Repository
public class AstPoolDAO{ public class AstPoolDAO{
...@@ -21,7 +20,7 @@ public class AstPoolDAO{ ...@@ -21,7 +20,7 @@ public class AstPoolDAO{
private AstPoolDOMapper astPoolDOMapper; private AstPoolDOMapper astPoolDOMapper;
/** /**
* desc:插入表:ABS_AST_POOL_JAN.<br/> * desc:插入表:abs_ast_pool.<br/>
* @param entity entity * @param entity entity
* @return int * @return int
*/ */
...@@ -30,70 +29,66 @@ public class AstPoolDAO{ ...@@ -30,70 +29,66 @@ public class AstPoolDAO{
return astPoolDOMapper.insert(entity); return astPoolDOMapper.insert(entity);
} }
/** /**
* desc:根据主键删除数据:ABS_AST_POOL_JAN.<br/> * desc:批量插入表:abs_ast_pool.<br/>
* @param astNo astNo * @param list list
* @param termNo termNo
* @return int * @return int
*/ */
public int updateSlice(String astNo,Integer termNo){ public int insertBatch(List<AstPoolDO> list){
return astPoolDOMapper.updateSlice(astNo, termNo); astPoolDOMapper.insertBatch(list);
return list.size();
} }
/** /**
* desc:根据主键删除数据:ABS_AST_POOL_JAN.<br/> * desc:查询是否有重复资产池名称和资产池编码的资产池.<br/>
* @param astNo astNo * @param astPoolNo astPoolNo
* @param termNo termNo * @param astPoolName astPoolName
* @return int * @return Long
*/ */
public int deleteByPk(String astNo,Integer termNo){ public Long getDupliCnt(String astPoolNo,String astPoolName){
return astPoolDOMapper.deleteByPk(astNo, termNo); return astPoolDOMapper.getDupliCnt(astPoolNo, astPoolName);
} }
/** /**
* desc:更新是否一切片.<br/> * desc:分页查找资产池.<br/>
* @param astNo astNo * @param astPool astPool
* @param slice slice * @return AstPoolPage
* @param termNo termNo
* @return int
*/ */
public int updateSliceByPk(String astNo,Boolean slice,Integer termNo){ public AstPoolPage getPage(AstPoolPage astPool){
return astPoolDOMapper.updateSliceByPk(astNo, slice, termNo); int total = astPoolDOMapper.getPageCount(astPool);
if(total>0){
astPool.setDatas(astPoolDOMapper.getPageResult(astPool));
}else{
astPool.setDatas(new ArrayList());
}
astPool.setTotal(total);
return astPool;
} }
/** /**
* desc:资产筛选分页.<br/> * desc:根据资产池编号查找资产池.<br/>
* @param pactsAstMatch pactsAstMatch * @param astPoolNo astPoolNo
* @return PactsAstMatchPage * @return AstPoolDO
*/ */
public PactsAstMatchPage queryForAstMatch(PactsAstMatchPage pactsAstMatch){ public AstPoolDO getByNo(String astPoolNo){
int total = astPoolDOMapper.queryForAstMatchCount(pactsAstMatch); return astPoolDOMapper.getByNo(astPoolNo);
if(total>0){
pactsAstMatch.setDatas(astPoolDOMapper.queryForAstMatchResult(pactsAstMatch));
}else{
pactsAstMatch.setDatas(new ArrayList());
}
pactsAstMatch.setTotal(total);
return pactsAstMatch;
} }
/** /**
* desc:资产筛选分页.<br/> * desc:根据主键删除数据:abs_ast_pool.<br/>
* @param sysDate sysDate * @param id id
* @param astNo astNo * @return int
* @return List<AstPoolItem>
*/ */
public List<AstPoolItem> getAstPoolItems(Date sysDate,String astNo){ public int deleteById(Long id){
return astPoolDOMapper.getAstPoolItems(sysDate, astNo); return astPoolDOMapper.deleteById(id);
} }
/** /**
* desc:获取资产池资产.<br/> * desc:根据主键获取数据:abs_ast_pool.<br/>
* @param astNo astNo * @param id id
* @param ownOrg ownOrg
* @return AstPoolDO * @return AstPoolDO
*/ */
public AstPoolDO getAstPoolItem(String astNo,String ownOrg){ public AstPoolDO getById(Long id){
return astPoolDOMapper.getAstPoolItem(astNo, ownOrg); return astPoolDOMapper.getById(id);
} }
} }
...@@ -8,59 +8,39 @@ import java.util.Date; ...@@ -8,59 +8,39 @@ import java.util.Date;
public class AstPoolDO{ public class AstPoolDO{
/** /**
* id 自增ID. * id 主键.
*/ */
private Long id; private Long id;
/** /**
* astNo 内部资产编号. * astPoolNo 资产池编号.
*/ */
private String astNo; private String astPoolNo;
/** /**
* ownOrg 所属机构(计划). * astPoolName 资产池名称.
*/ */
private String ownOrg; private String astPoolName;
/** /**
* context 扩展属性. * astTypeCode 准入资产代码.
*/ */
private String context; private String astTypeCode;
/**
* managerOrgCode 管理机构.
*/
private String managerOrgCode;
/**
* slice 是否已切片.
*/
private Boolean slice;
/**
* termNo 期次号.
*/
private Integer termNo;
/**
* endDate 分期结束日期-即还款日(YYYYMMDD).
*/
private Date endDate;
/** /**
* gmtCreate 创建时间. * gmtCreate 创建时间.
*/ */
private Date gmtCreate; private Date gmtCreate;
/** /**
* startDate 分期开始日期(YYYYMMDD). * gmtModified 更新时间.
*/
private Date startDate;
/**
* gmtModified 修改时间.
*/ */
private Date gmtModified; private Date gmtModified;
/** /**
* Set id 自增ID. * Set id 主键.
*/ */
public void setId(Long id){ public void setId(Long id){
this.id = id; this.id = id;
} }
/** /**
* Get id 自增ID. * Get id 主键.
* *
* @return the string * @return the string
*/ */
...@@ -69,115 +49,51 @@ public class AstPoolDO{ ...@@ -69,115 +49,51 @@ public class AstPoolDO{
} }
/** /**
* Set astNo 内部资产编号. * Set astPoolNo 资产池编号.
*/
public void setAstNo(String astNo){
this.astNo = astNo;
}
/**
* Get astNo 内部资产编号.
*
* @return the string
*/
public String getAstNo(){
return astNo;
}
/**
* Set ownOrg 所属机构(计划).
*/
public void setOwnOrg(String ownOrg){
this.ownOrg = ownOrg;
}
/**
* Get ownOrg 所属机构(计划).
*
* @return the string
*/
public String getOwnOrg(){
return ownOrg;
}
/**
* Set context 扩展属性.
*/ */
public void setContext(String context){ public void setAstPoolNo(String astPoolNo){
this.context = context; this.astPoolNo = astPoolNo;
} }
/** /**
* Get context 扩展属性. * Get astPoolNo 资产池编号.
* *
* @return the string * @return the string
*/ */
public String getContext(){ public String getAstPoolNo(){
return context; return astPoolNo;
} }
/** /**
* Set managerOrgCode 管理机构. * Set astPoolName 资产池名称.
*/ */
public void setManagerOrgCode(String managerOrgCode){ public void setAstPoolName(String astPoolName){
this.managerOrgCode = managerOrgCode; this.astPoolName = astPoolName;
} }
/** /**
* Get managerOrgCode 管理机构. * Get astPoolName 资产池名称.
* *
* @return the string * @return the string
*/ */
public String getManagerOrgCode(){ public String getAstPoolName(){
return managerOrgCode; return astPoolName;
} }
/** /**
* Set slice 是否已切片. * Set astTypeCode 准入资产代码.
*/ */
public void setSlice(Boolean slice){ public void setAstTypeCode(String astTypeCode){
this.slice = slice; this.astTypeCode = astTypeCode;
} }
/** /**
* Get slice 是否已切片. * Get astTypeCode 准入资产代码.
* *
* @return the string * @return the string
*/ */
public Boolean getSlice(){ public String getAstTypeCode(){
return slice; return astTypeCode;
}
/**
* Set termNo 期次号.
*/
public void setTermNo(Integer termNo){
this.termNo = termNo;
}
/**
* Get termNo 期次号.
*
* @return the string
*/
public Integer getTermNo(){
return termNo;
}
/**
* Set endDate 分期结束日期-即还款日(YYYYMMDD).
*/
public void setEndDate(Date endDate){
this.endDate = endDate;
}
/**
* Get endDate 分期结束日期-即还款日(YYYYMMDD).
*
* @return the string
*/
public Date getEndDate(){
return endDate;
} }
/** /**
...@@ -197,30 +113,14 @@ public class AstPoolDO{ ...@@ -197,30 +113,14 @@ public class AstPoolDO{
} }
/** /**
* Set startDate 分期开始日期(YYYYMMDD). * Set gmtModified 更新时间.
*/
public void setStartDate(Date startDate){
this.startDate = startDate;
}
/**
* Get startDate 分期开始日期(YYYYMMDD).
*
* @return the string
*/
public Date getStartDate(){
return startDate;
}
/**
* Set gmtModified 修改时间.
*/ */
public void setGmtModified(Date gmtModified){ public void setGmtModified(Date gmtModified){
this.gmtModified = gmtModified; this.gmtModified = gmtModified;
} }
/** /**
* Get gmtModified 修改时间. * Get gmtModified 更新时间.
* *
* @return the string * @return the string
*/ */
......
package com.abssqr.plat.common.dal.mysql.auto.mapper; package com.abssqr.plat.common.dal.mysql.auto.mapper;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO; import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.PactsAstMatchPage;
import java.util.List; import java.util.List;
import com.abssqr.plat.common.dal.mysql.auto.resultmap.AstPoolItem; import java.lang.Long;
import java.util.Date; import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
/** /**
* 由于需要对分页支持,请直接使用对应的DAO类 * 由于需要对分页支持,请直接使用对应的DAO类
* The Table ABS_AST_POOL. * The Table abs_ast_pool.
* 一月的资产池 * ABS_AST_POOL
*/ */
public interface AstPoolDOMapper{ public interface AstPoolDOMapper{
/** /**
* desc:插入表:ABS_AST_POOL_JAN.<br/> * desc:插入表:abs_ast_pool.<br/>
* @param entity entity * @param entity entity
* @return int * @return int
*/ */
int insert(AstPoolDO entity); int insert(AstPoolDO entity);
/** /**
* desc:根据主键删除数据:ABS_AST_POOL_JAN.<br/> * desc:批量插入表:abs_ast_pool.<br/>
* @param astNo astNo * @param list list
* @param termNo termNo
* @return int * @return int
*/ */
int updateSlice(@Param("astNo")String astNo,@Param("termNo")Integer termNo); int insertBatch(List<AstPoolDO> list);
/** /**
* desc:根据主键删除数据:ABS_AST_POOL_JAN.<br/> * desc:查询是否有重复资产池名称和资产池编码的资产池.<br/>
* @param astNo astNo * @param astPoolNo astPoolNo
* @param termNo termNo * @param astPoolName astPoolName
* @return int * @return Long
*/ */
int deleteByPk(@Param("astNo")String astNo,@Param("termNo")Integer termNo); Long getDupliCnt(@Param("astPoolNo")String astPoolNo,@Param("astPoolName")String astPoolName);
/** /**
* desc:更新是否一切片.<br/> * desc:分页查找资产池.<br/>
* @param astNo astNo * @param astPool astPool
* @param slice slice
* @param termNo termNo
* @return int * @return int
*/ */
int updateSliceByPk(@Param("astNo")String astNo,@Param("slice")Boolean slice,@Param("termNo")Integer termNo); int getPageCount(AstPoolPage astPool);
/** /**
* desc:资产筛选分页.<br/> * desc:分页查找资产池.<br/>
* @param pactsAstMatch pactsAstMatch * @param astPool astPool
* @return int * @return List<AstPoolDO>
*/ */
int queryForAstMatchCount(PactsAstMatchPage pactsAstMatch); List<AstPoolDO> getPageResult(AstPoolPage astPool);
/** /**
* desc:资产筛选分页.<br/> * desc:根据资产池编号查找资产池.<br/>
* @param pactsAstMatch pactsAstMatch * @param astPoolNo astPoolNo
* @return List<AstPoolItem> * @return AstPoolDO
*/ */
List<AstPoolItem> queryForAstMatchResult(PactsAstMatchPage pactsAstMatch); AstPoolDO getByNo(@Param("astPoolNo")String astPoolNo);
/** /**
* desc:资产筛选分页.<br/> * desc:根据主键删除数据:abs_ast_pool.<br/>
* @param sysDate sysDate * @param id id
* @param astNo astNo * @return int
* @return List<AstPoolItem>
*/ */
List<AstPoolItem> getAstPoolItems(@Param("sysDate")Date sysDate,@Param("astNo")String astNo); int deleteById(Long id);
/** /**
* desc:获取资产池资产.<br/> * desc:根据主键获取数据:abs_ast_pool.<br/>
* @param astNo astNo * @param id id
* @param ownOrg ownOrg
* @return AstPoolDO * @return AstPoolDO
*/ */
AstPoolDO getAstPoolItem(@Param("astNo")String astNo,@Param("ownOrg")String ownOrg); AstPoolDO getById(Long id);
} }
package com.abssqr.plat.common.dal.mysql.auto.paging;
import com.abssqr.plat.common.dal.mysql.auto.paging.BasePage;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO;
/**
* The table ABS_AST_POOL ABS_AST_POOL
*/
public class AstPoolPage extends BasePage<AstPoolDO>{
/**
* astPoolName 资产池名称.
*/
private String astPoolName;
/**
* Set astPoolName 资产池名称.
*/
public void setAstPoolName(String astPoolName){
this.astPoolName = astPoolName;
}
/**
* Get astPoolName 资产池名称.
*
* @return the string
*/
public String getAstPoolName(){
return astPoolName;
}
}
...@@ -14,7 +14,7 @@ public class PactsAstMatchPage extends BasePage<AstPoolItem>{ ...@@ -14,7 +14,7 @@ public class PactsAstMatchPage extends BasePage<AstPoolItem>{
*/ */
private Date sysDate; private Date sysDate;
/** /**
* ownOrg 所属机构(计划). * ownOrg .
*/ */
private String ownOrg; private String ownOrg;
...@@ -35,14 +35,14 @@ public class PactsAstMatchPage extends BasePage<AstPoolItem>{ ...@@ -35,14 +35,14 @@ public class PactsAstMatchPage extends BasePage<AstPoolItem>{
} }
/** /**
* Set ownOrg 所属机构(计划). * Set ownOrg .
*/ */
public void setOwnOrg(String ownOrg){ public void setOwnOrg(String ownOrg){
this.ownOrg = ownOrg; this.ownOrg = ownOrg;
} }
/** /**
* Get ownOrg 所属机构(计划). * Get ownOrg .
* *
* @return the string * @return the string
*/ */
......
...@@ -5,26 +5,17 @@ ...@@ -5,26 +5,17 @@
<resultMap id="BaseResultMap" type="com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPackDO"> <resultMap id="BaseResultMap" type="com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPackDO">
<id column="ID" property="id" jdbcType="DECIMAL" javaType="Long"/> <id column="ID" property="id" jdbcType="DECIMAL" javaType="Long"/>
<result column="AVAL_AMT" property="avalAmt" jdbcType="DECIMAL" javaType="Long"/> <result column="AVAL_AMT" property="avalAmt" jdbcType="DECIMAL" javaType="Long"/>
<result column="MEMO" property="memo" jdbcType="VARCHAR" javaType="String"/> <result column="TYPE" property="type" jdbcType="VARCHAR" javaType="String"/>
<result column="PACK_NO" property="packNo" jdbcType="VARCHAR" javaType="String"/>
<result column="PLAN_NO" property="planNo" jdbcType="VARCHAR" javaType="String"/> <result column="PLAN_NO" property="planNo" jdbcType="VARCHAR" javaType="String"/>
<result column="DYM_RULE" property="dymRule" jdbcType="OTHER" javaType="String"/> <result column="STATUS" property="status" jdbcType="VARCHAR" javaType="String"/>
<result column="EXT_DATA" property="extData" jdbcType="VARCHAR" javaType="String"/>
<result column="PACK_CODE" property="packCode" jdbcType="VARCHAR" javaType="String"/>
<result column="PACK_NAME" property="packName" jdbcType="VARCHAR" javaType="String"/> <result column="PACK_NAME" property="packName" jdbcType="VARCHAR" javaType="String"/>
<result column="PACK_TYPE" property="packType" jdbcType="VARCHAR" javaType="String"/> <result column="AST_POOL_NO" property="astPoolNo" jdbcType="VARCHAR" javaType="String"/>
<result column="TRANS_RULE" property="transRule" jdbcType="VARCHAR" javaType="String"/> <result column="AST_TYPE_CODE" property="astTypeCode" jdbcType="VARCHAR" javaType="String"/>
<result column="PACK_STATUS" property="packStatus" jdbcType="VARCHAR" javaType="String"/> <result column="PACK_DATE" property="packDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="BACK_OUT_CODE" property="backOutCode" jdbcType="VARCHAR" javaType="String"/>
<result column="CALC_INTR_TYPE" property="calcIntrType" jdbcType="VARCHAR" javaType="String"/>
<result column="APPROVE_STATUS" property="approveStatus" jdbcType="VARCHAR" javaType="String"/>
<result column="ABSSQR_PROD_CODE" property="abssqrProdCode" jdbcType="VARCHAR" javaType="String"/>
<result column="MANAGER_ORG_CODE" property="managerOrgCode" jdbcType="VARCHAR" javaType="String"/>
<result column="SCEN_DATE" property="scenDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="GMT_CREATE" property="gmtCreate" jdbcType="DATE" javaType="java.util.Date"/> <result column="GMT_CREATE" property="gmtCreate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="MAX_END_DATE" property="maxEndDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="MIN_END_DATE" property="minEndDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="APPROVE_DATE" property="approveDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="GMT_MODIFIED" property="gmtModified" jdbcType="DATE" javaType="java.util.Date"/> <result column="GMT_MODIFIED" property="gmtModified" jdbcType="DATE" javaType="java.util.Date"/>
<result column="PACK_SUBMIT_DATE" property="packSubmitDate" jdbcType="DATE" javaType="java.util.Date"/>
</resultMap> </resultMap>
......
...@@ -4,33 +4,15 @@ ...@@ -4,33 +4,15 @@
<!-- 自动生成,请修改 ABS_AST_SCREEN_RULE.xml --> <!-- 自动生成,请修改 ABS_AST_SCREEN_RULE.xml -->
<resultMap id="BaseResultMap" type="com.abssqr.plat.common.dal.mysql.auto.dataobject.AstScreenRuleDO"> <resultMap id="BaseResultMap" type="com.abssqr.plat.common.dal.mysql.auto.dataobject.AstScreenRuleDO">
<id column="ID" property="id" jdbcType="DECIMAL" javaType="Long"/> <id column="ID" property="id" jdbcType="DECIMAL" javaType="Long"/>
<result column="SINGLE_MAX_AMOUNT" property="singleMaxAmount" jdbcType="DECIMAL" javaType="Long"/> <result column="REL_NO" property="relNo" jdbcType="VARCHAR" javaType="String"/>
<result column="SINGLE_MIN_AMOUNT" property="singleMinAmount" jdbcType="DECIMAL" javaType="Long"/> <result column="REL_TYPE" property="relType" jdbcType="VARCHAR" javaType="String"/>
<result column="REGION" property="region" jdbcType="VARCHAR" javaType="String"/> <result column="RULE_TYPE" property="ruleType" jdbcType="VARCHAR" javaType="String"/>
<result column="PROD_CODE" property="prodCode" jdbcType="VARCHAR" javaType="String"/> <result column="LEFT_VALUE" property="leftValue" jdbcType="VARCHAR" javaType="String"/>
<result column="PROD_NAME" property="prodName" jdbcType="VARCHAR" javaType="String"/> <result column="RIGHT_VALUE" property="rightValue" jdbcType="VARCHAR" javaType="String"/>
<result column="GMT_CREATOR" property="gmtCreator" jdbcType="VARCHAR" javaType="String"/> <result column="LEFT_CONDITION" property="leftCondition" jdbcType="VARCHAR" javaType="String"/>
<result column="SCREEN_TYPE" property="screenType" jdbcType="VARCHAR" javaType="String"/> <result column="RIGHT_CONDITION" property="rightCondition" jdbcType="VARCHAR" javaType="String"/>
<result column="ASSET_STATUS" property="assetStatus" jdbcType="VARCHAR" javaType="String"/>
<result column="GMT_MODIFIER" property="gmtModifier" jdbcType="VARCHAR" javaType="String"/>
<result column="SCREEN_RULE_NO" property="screenRuleNo" jdbcType="VARCHAR" javaType="String"/>
<result column="APPROVE_STATUS" property="approveStatus" jdbcType="VARCHAR" javaType="String"/>
<result column="LENDER_ORG_CODE" property="lenderOrgCode" jdbcType="VARCHAR" javaType="String"/>
<result column="ABSSQR_PROD_CODE" property="abssqrProdCode" jdbcType="VARCHAR" javaType="String"/>
<result column="MANAGER_ORG_CODE" property="managerOrgCode" jdbcType="VARCHAR" javaType="String"/>
<result column="SCREEN_RULE_NAME" property="screenRuleName" jdbcType="VARCHAR" javaType="String"/>
<result column="MAX_AGE" property="maxAge" jdbcType="DECIMAL" javaType="Integer"/>
<result column="MIN_AGE" property="minAge" jdbcType="DECIMAL" javaType="Integer"/>
<result column="MAX_TERM" property="maxTerm" jdbcType="DECIMAL" javaType="Integer"/>
<result column="MIN_TERM" property="minTerm" jdbcType="DECIMAL" javaType="Integer"/>
<result column="MAX_REMAIN_DAYS" property="maxRemainDays" jdbcType="DECIMAL" javaType="Integer"/>
<result column="MIN_REMAIN_DAYS" property="minRemainDays" jdbcType="DECIMAL" javaType="Integer"/>
<result column="GMT_CREATE" property="gmtCreate" jdbcType="DATE" javaType="java.util.Date"/> <result column="GMT_CREATE" property="gmtCreate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="GMT_MODIFIED" property="gmtModified" jdbcType="DATE" javaType="java.util.Date"/> <result column="GMT_MODIFIED" property="gmtModified" jdbcType="DATE" javaType="java.util.Date"/>
<result column="LATEST_END_DATE" property="latestEndDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="EARLIEST_END_DATE" property="earliestEndDate" jdbcType="DATE" javaType="java.util.Date"/>
<result column="SINGLE_MAX_INTER_RATE" property="singleMaxInterRate" jdbcType="DECIMAL" javaType="java.math.BigDecimal"/>
<result column="SINGLE_MIN_INTER_RATE" property="singleMinInterRate" jdbcType="DECIMAL" javaType="java.math.BigDecimal"/>
</resultMap> </resultMap>
......
package com.abssqr.plat.common.facade.param.astPool;
import com.abssqr.plat.common.facade.validation.VldString;
public class AstPoolOprParam {
@VldString(nullable = false,minLength = 0,maxLength = 30)
private String astPoolName;
@VldString(nullable = false,minLength = 0,maxLength = 30)
private String astTypeCode;
@VldString(nullable = false,minLength = 0,maxLength = 30)
private String astPoolNo;
public String getAstPoolName() {
return astPoolName;
}
public void setAstPoolName(String astPoolName) {
this.astPoolName = astPoolName;
}
public String getAstTypeCode() {
return astTypeCode;
}
public void setAstTypeCode(String astTypeCode) {
this.astTypeCode = astTypeCode;
}
public String getAstPoolNo() {
return astPoolNo;
}
public void setAstPoolNo(String astPoolNo) {
this.astPoolNo = astPoolNo;
}
}
package com.abssqr.plat.common.facade.param.astPool;
import com.abssqr.plat.common.facade.param.base.CommonPlanPageQryParam;
public class AstPoolPageQryParam extends CommonPlanPageQryParam {
private String astPoolName;
public String getAstPoolName() {
return astPoolName;
}
public void setAstPoolName(String astPoolName) {
this.astPoolName = astPoolName;
}
}
package com.abssqr.plat.common.facade.result.astPool;
public class AstPoolVO {
private String astPoolName;
private String astTypeName;
private String astTypeCode;
public String getAstPoolName() {
return astPoolName;
}
public void setAstPoolName(String astPoolName) {
this.astPoolName = astPoolName;
}
public String getAstTypeName() {
return astTypeName;
}
public void setAstTypeName(String astTypeName) {
this.astTypeName = astTypeName;
}
public String getAstTypeCode() {
return astTypeCode;
}
public void setAstTypeCode(String astTypeCode) {
this.astTypeCode = astTypeCode;
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service;
import com.abssqr.plat.common.facade.model.account.Account;
import java.util.List;
/**
* 账户处理
* @author hanfei
* @version $Id: AccountService.java, v 0.1 2019-12-27 12:43 AM hanfei Exp $
*/
public interface AccountService {
/**
* 查询所有账户余额
* @return
*/
List<Account> queryBalance();
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service;
import com.abssqr.plat.common.facade.model.org.Organization;
import com.abssqr.plat.common.facade.model.org.OrganizationEntity;
import com.abssqr.plat.common.facade.param.org.OrgEditParam;
import com.abssqr.plat.common.facade.param.org.OrgEntityOprParam;
import com.abssqr.plat.common.facade.param.org.OrgEntityPageQryParam;
import com.abssqr.plat.common.facade.param.org.OrgEntityQryParam;
import com.abssqr.plat.common.facade.param.org.OrgPageQryParam;
import com.abssqr.plat.common.facade.param.org.OrgQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.org.OrgEntityListVO;
import com.abssqr.plat.common.facade.result.org.OrgListVO;
import com.abssqr.plat.common.facade.result.plan.PlanListVO;
import com.general.system.common.model.BaseResult;
/**
*
* @author zhenxuan.luo
* @version com.abssqr.plat.common.facade.service: OrgService.java, v 0.1 2019-05-28 11:03 zhenxuan.luo Exp $
*/
public interface OrgService {
/**
* 机构分页查询
*
* @param param
* @return
*/
BasePage<OrgListVO> getOrgList(OrgPageQryParam param);
/**
* 新增OrUpdate
* d
* @param param
* @return
*/
BaseResult<String> addOrUpdate(OrgEditParam param);
/**
* 获取机构
*
* @param param
* @return
*/
Organization getOrg(OrgQryParam param);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service;
import com.abssqr.plat.common.facade.model.prod.LoanProduct;
import com.abssqr.plat.common.facade.param.prod.ProdEditParam;
import com.abssqr.plat.common.facade.param.prod.ProdPageQryParam;
import com.abssqr.plat.common.facade.param.prod.ProdQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.prod.ProdListVO;
import com.general.system.common.model.BaseResult;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.service: ProdService.java, v 0.1 2019-05-28 14:17 bangis.wangdf Exp $
*/
public interface ProdService {
/**
* 产品分页查询
*
* @param param
* @return
*/
BasePage<ProdListVO> getProdList(ProdPageQryParam param);
/**
* 新增OrUpdate
*
* @param param
* @return
*/
BaseResult<String> addOrUpdate(ProdEditParam param);
/**
* 获取产品
* @param param
* @return
*/
LoanProduct getProd(ProdQryParam param);
}
/**
* abssqr.comInc.
* Copyright(c)2019-2019AllRightsReserved.
*/
package com.abssqr.plat.common.facade.service;
import com.abssqr.plat.common.facade.enums.DataChangeBizTypeEnum;
import com.abssqr.plat.common.facade.param.workOrder.WorkOrderPageParam;
import com.abssqr.plat.common.facade.param.workOrder.WorkOrderQprParam;
import com.abssqr.plat.common.facade.param.workOrder.WorkOrderQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.workOrder.WorkOrderBtn;
import com.abssqr.plat.common.facade.result.workOrder.WorkOrderVo;
import com.general.system.bpm.domain.result.ProcessSelStartResult;
import java.util.List;
/**
*
* @author yangcheng
* @version WorkOrderService.java, v0.12019-06-1009:59 yangchengExp$
*/
public interface WorkOrderService {
/**
* 查询我的待办
* @param param
* @return
*/
BasePage<WorkOrderVo> myWorkOrder(WorkOrderPageParam param);
/**
* 查询我的申请
* @param param
* @return
*/
BasePage<WorkOrderVo> applyWorkOrder(WorkOrderPageParam param);
/**
* 查询历史
* @param param
* @return
*/
BasePage<WorkOrderVo> hisWorkOrder(WorkOrderPageParam param);
/**
* 获取页面按钮
* @param param
* @return
*/
List<WorkOrderBtn> getBtns(WorkOrderQryParam param);
/**
* 查询办理轨迹
* @param param
* @return
*/
List<WorkOrderVo> getWorkOrderTasks(WorkOrderQryParam param);
/**
* 统一操作入口
* @param param
* @return
*/
void operate(WorkOrderQprParam param);
/**
* 查看已申请信息 包含 实例信息、历史记录及追踪图
* @param param
* @return
*/
ProcessSelStartResult detail(WorkOrderQryParam param);
/**
* 获取工单业务的业务类型
* @param param
* @return
*/
DataChangeBizTypeEnum getBizType(WorkOrderQryParam param);
/**
* 根据文件配置的流程数据进行初始化
* 首先将数据导出insert语句放到tmpl/flow/flow_blob 文件上
* 通过地址触发 读取代码下 tmpl/flow/flow_blob 的文件数据进行初始化
*/
int init();
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.analyse;
import com.abssqr.plat.common.facade.param.analyse.AnalyseBaseParam;
import com.abssqr.plat.common.facade.param.analyse.AnalyseTrendChartParam;
import com.abssqr.plat.common.facade.result.analyse.AnalyseChartResultVO;
import com.abssqr.plat.common.facade.result.analyse.AnalyseDayAmtInfoVO;
import com.abssqr.plat.common.facade.result.analyse.AnalyseDayAstInfoVO;
import com.abssqr.plat.common.facade.result.analyse.FormationAstItemVO;
import java.util.List;
import java.util.Map;
/**
*
* @author hanfei
* @version $Id: AnalyseInfoChartService.java, v 0.1 2019-09-24 5:12 PM hanfei Exp $
*/
public interface AnalyseInfoChartService {
/**
* 资产情况概览
* @param param
* @return
*/
AnalyseDayAstInfoVO getDayAstInfo(AnalyseBaseParam param);
/**
* 资金情况概览
* @param param
* @return
*/
AnalyseDayAmtInfoVO getDayAmtInfo(AnalyseBaseParam param);
/**
* 资产结构
* @param param
* @return
*/
Map<String, List<FormationAstItemVO>> getFormationAst(AnalyseBaseParam param);
/**
* 趋势数据统计
* @param trendChartParam
* @return
*/
AnalyseChartResultVO trendChartService(AnalyseTrendChartParam trendChartParam);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.ast;
import com.abssqr.plat.common.facade.model.rule.AstScreenRule;
import com.abssqr.plat.common.facade.param.ast.AstScreenRuleEditParam;
import com.abssqr.plat.common.facade.param.ast.AstScreenRulePageQryParam;
import com.abssqr.plat.common.facade.param.ast.AstScreenRuleQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.AstScreenRuleVO;
/**
* 资产筛选服务
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.service.ast: AstScreenRuleService.java, v 0.1 2019-06-01 20:57 bangis.wangdf Exp $
*/
public interface AstScreenRuleService {
/**
* 分页查询资产筛选
* @param param
* @return
*/
BasePage<AstScreenRuleVO> getAstScreenList(AstScreenRulePageQryParam param);
/**
* 新增Or编辑资产筛选
* @param param
* @return
*/
AstScreenRule addOrUpdate(AstScreenRuleEditParam param);
/**
* 获取筛选规则
* @param param
* @return
*/
AstScreenRule getAstScreenRule(AstScreenRuleQryParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.ast;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.LoanDelVO;
import com.abssqr.plat.common.facade.result.ast.LoanListVO;
/**
* 贷款资产服务
*
* @author zhenxuan.luo
* @version com.abssqr.plat.common.facade.service.ast: LoanService.java, v 0.1 2019-05-30 19:43 zhenxuan.luo Exp $
*/
public interface LoanService {
/**
* 分页查询机构下的资产列表
* @param param
* @return
*/
BasePage<LoanListVO> getOrgLoanList(LoanPageQryParam param);
/**
* 获取产品详情
* @param param
* @return
*/
LoanDelVO getPlanAstDetail(LoanQryParam param);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.ast;
import com.abssqr.plat.common.facade.param.loan.LoanAstQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanAstTermQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanPageQryParam;
import com.abssqr.plat.common.facade.param.loan.LoanQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.ast.LoanDelVO;
import com.abssqr.plat.common.facade.result.ast.LoanDetail;
import com.abssqr.plat.common.facade.result.ast.LoanInstalDetail;
import com.abssqr.plat.common.facade.result.ast.LoanListVO;
/**
* 放款池项目计划及资产服务
* @author hanfei
* @version $Id: SpvLoanService.java, v 0.1 2019-12-12 5:21 PM hanfei Exp $
*/
public interface SpvLoanService {
/**
* 查询计划概况
*/
LoanDelVO getSpvDetail(LoanQryParam param);
/**
* 查询资产列表
*/
BasePage<LoanListVO> queryLoanPage(LoanPageQryParam param);
/**
* 查询资产详情
*/
LoanDetail getLoanDetail(LoanAstQryParam param);
// Object testLoan(String astNo);
/**
* 分期资产收益详情
*/
LoanInstalDetail getLoanInstalDetail(LoanAstTermQryParam param);
/**
* 资产流水
*/
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
/**
*
* @author hanfei
* @version $Id: PlanAllocRiskService.java, v 0.1 2019-07-07 12:23 AM hanfei Exp $
*/
public interface PlanAllocRiskService {
// /**
// * 分配计划 兑付风险详情
// * @param param
// * @return
// */
// AllocRiskDetail getAllocRisk(WorkOrderQryParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.enums.PlanTypeEnum;
import com.abssqr.plat.common.facade.model.plan.PlanAlloc;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocAssignedOprParam;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocCfrmCalcParam;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocDelParam;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocDetailQryParam;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocEditParam;
import com.abssqr.plat.common.facade.param.plan.alloc.PlanAllocQryParam;
import com.abssqr.plat.common.facade.param.plan.alloc.TitleNameQryParam;
import com.abssqr.plat.common.facade.result.plan.PlanAllocVO;
import com.abssqr.plat.common.facade.result.plan.TitleNameVO;
import java.util.List;
/**
* 计划资产分配服务
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.service.plan: PlanAllocService.java, v 0.1 2019-06-03 14:24 bangis.wangdf Exp $
*/
public interface PlanAllocService {
/**
* 获取计划分配方案
* @param param
*/
List<PlanAlloc> getPlanAlloc(PlanAllocQryParam param);
/**
* 获取分配计划详情
* @param param
* @return
*/
PlanAllocVO getPlanAllocDetail(PlanAllocDetailQryParam param);
/**
* 获取会计科目
* @param param
* @return
*/
List<TitleNameVO> getTitleNames(TitleNameQryParam param);
/**
* 编辑分配计划详情
* @param param
* @return
*/
PlanAllocVO edit(PlanAllocEditParam param, PlanTypeEnum planType, boolean submit);
/**
* 根据分配金额进行试算
* @param param
* @return
*/
PlanAllocVO calcCfrmByAmt(PlanAllocCfrmCalcParam param, PlanTypeEnum planType);
/**
* 删除分配方案
* @param param
* @return
*/
Boolean delete(PlanAllocDelParam param);
/**
* 分配方案调整为已分配
* @param param
* @return
*/
Boolean planAllocDetailAssigned(PlanAllocAssignedOprParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.param.base.CommonPlanQryParam;
import com.abssqr.plat.common.facade.param.plan.priceRule.PlanAstPriceRuleParam;
import com.abssqr.plat.common.facade.param.plan.priceRule.PriceQryParam;
import com.abssqr.plat.common.facade.result.plan.PlanAstPriceRuleVo;
/**
* 资产定价规则
* @author xiachenxiang
* @version com.abssqr.plat.common.facade.service.plan: PlanAstPriceRuleService.java, v 0.1 2019-11-07 5:33 PM xiachenxiang Exp $
*/
public interface PlanAstPriceRuleService {
/**
* 查询资产定价规则详情
* @param param
* @return
*/
PlanAstPriceRuleVo queryDtl(PriceQryParam param);
/**
* 编辑资产定价规则
* @param param
* @return
*/
Void edit(PlanAstPriceRuleParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.model.plan.PlanCapitalLog;
import com.abssqr.plat.common.facade.param.base.CommonPlanLogQryParam;
import com.abssqr.plat.common.facade.param.plan.log.PlanCapitalLogPageQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
/**
* 计划资金交易流水服务接口
*
* @author zhenxuan.luo
* @version com.abssqr.plat.common.facade.service.plan: PlanCapitalLogService.java, v 0.1 2019-05-28 17:30 zhenxuan.luo Exp $
*/
public interface PlanCapitalLogService {
/**
* 查询计划资金交易流水列表
*
* @param param
* @return
*/
BasePage<PlanCapitalLog> queryLogList(PlanCapitalLogPageQryParam param);
/**
* 查询计划资金交易流水详情
* @param param
* @return
*/
PlanCapitalLog queryLogDtl(CommonPlanLogQryParam param);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2020 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.param.plan.structure.InvestStructureQryParam;
import com.abssqr.plat.common.facade.result.plan.PlanInvestStructureVO;
import java.util.List;
/**
*
* @author xiachenxiang
* @version com.abssqr.plat.common.facade.service.plan: PlanInvestStructureService.java, v 0.1 2020-02-06 1:40 PM xiachenxiang Exp $
*/
public interface PlanInvestStructureService {
/**
* 查询计划投资结构列表
*
* @param param
* @return
*/
List<PlanInvestStructureVO> getStructureList(InvestStructureQryParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.model.plan.PlanMonitor;
import com.abssqr.plat.common.facade.model.plan.PlanMonitorRecord;
import com.abssqr.plat.common.facade.param.base.CommonPlanQryParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanEventMonitorQryParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorDelParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorOprParam;
import com.abssqr.plat.common.facade.param.plan.monitor.PlanMonitorQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import java.util.List;
/**
* 监控指标
* @author zhenxuan.luo
* @version com.abssqr.plat.common.facade.service: PlanMonitorService.java, v 0.1 2019-05-28 15:18 zhenxuan.luo Exp $
*/
public interface PlanMonitorService {
/**
* 编辑监控指标
*
* @param param
* @return
*/
PlanMonitor editMonitor(PlanMonitorOprParam param);
/**
* 查询监控指标详情
*
* @param param
* @return
*/
PlanMonitor queryMonitorDtl(PlanMonitorQryParam param);
/**
* 查询监控指标列表
* @param param
* @return
*/
List<PlanMonitor> queryMonitorList(CommonPlanQryParam param);
/**
* 删除监控指标列表
* @param param
* @return
*/
Void deletePlanMonitor(PlanMonitorDelParam param);
/**
* 监控事件列表
* @param param
* @return
*/
BasePage<PlanMonitorRecord> queryEventMonitorList(PlanEventMonitorQryParam param);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.plan;
import com.abssqr.plat.common.facade.param.plan.PlanDelOprParam;
import com.abssqr.plat.common.facade.param.plan.PlanOprParam;
import com.abssqr.plat.common.facade.param.plan.PlanPageQryParam;
import com.abssqr.plat.common.facade.param.plan.PlanQryParam;
import com.abssqr.plat.common.facade.result.BasePage;
import com.abssqr.plat.common.facade.result.plan.PlanListVO;
import com.abssqr.plat.common.facade.result.plan.PlanVO;
/**
* @author bangis.wangdf
* @version com.abssqr.plat.common.facade.service: PlanService.java, v 0.1 2019-05-28 14:17 bangis.wangdf Exp $
*/
public interface PlanService {
/**
* 产品分页查询
*
* @param param
* @return
*/
BasePage<PlanListVO> getPlanList(PlanPageQryParam param, boolean ast);
/**
* 新增OrUpdate
*
* @param param
* @return
*/
String edit(PlanOprParam param);
/**
* 删除草稿箱
* @param param
*/
void deleteDraftPlan(PlanDelOprParam param);
/**
*
* @param param
* @return
*/
PlanVO getPlan(PlanQryParam param);
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2019 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.utility;
import com.abssqr.plat.common.facade.param.utility.PlanVaTaxCalcParam;
import com.general.system.common.model.Money;
/**
*
* @author zhenxuan.luo
* @version com.abssqr.plat.common.facade.service.utility: UtilService.java, v 0.1 2019-06-05 01:40 zhenxuan.luo Exp $
*/
public interface UtilService {
Money calcVatTaxForNet(PlanVaTaxCalcParam param);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.common.facade.service.workbench;
import com.abssqr.plat.common.facade.result.workbench.OrgPlanInfo;
import java.util.List;
/**
* 工作台查询接口
* @author yangcheng
* @version com.abssqr.admin.biz.service.workbench: WorkBenchQueryService.java, v 0.1 2018-06-19 上午10:51 guozhenhua Exp $
*/
public interface WorkBenchQueryService {
/**
* 获取机构信息总览
* @return
*/
List<OrgPlanInfo> getOrgProductInfo();
/**
* 运维 信息总揽
*
* 1、清算流水
*
* 2、结算单
*
* 3、支付单
*
* 4、
*/
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package com.abssqr.plat.common.model.convertor; package com.abssqr.plat.common.model.convertor;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO; import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity; import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
/** /**
...@@ -14,18 +15,26 @@ import com.abssqr.plat.common.model.domain.ast.AstPoolEntity; ...@@ -14,18 +15,26 @@ import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
*/ */
public class AstPoolConvert { public class AstPoolConvert {
public static AstPoolEntity convertDomain(AstPoolDO astPoolDO) { public static AstPoolEntity convert2Domain(AstPoolDO param) {
if (astPoolDO == null){ if (param == null){
return null; return null;
} }
AstPoolEntity result = new AstPoolEntity(); AstPoolEntity result = new AstPoolEntity();
result.setAstNo(astPoolDO.getAstNo()); result.setAstPoolName(param.getAstPoolName());
result.setManagerOrgCode(astPoolDO.getManagerOrgCode()); result.setAstPoolNo(param.getAstPoolNo());
result.setOwnOrg(astPoolDO.getOwnOrg()); result.setAstTypeEnum(AstTypeEnum.getByCode(param.getAstTypeCode()));
result.setTermNo(astPoolDO.getTermNo());
result.setStartDate(astPoolDO.getStartDate()); return result;
result.setEndDate(astPoolDO.getEndDate()); }
result.setSlice(astPoolDO.getSlice());
public static AstPoolDO convert2DO(AstPoolEntity astPoolEntity){
if(astPoolEntity==null){
return null;
}
AstPoolDO result=new AstPoolDO();
result.setAstTypeCode(astPoolEntity.getAstTypeEnum().getCode());
result.setAstPoolNo(astPoolEntity.getAstPoolNo());
result.setAstPoolName(astPoolEntity.getAstPoolName());
return result; return result;
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package com.abssqr.plat.common.model.domain.ast; package com.abssqr.plat.common.model.domain.ast;
import com.abssqr.plat.common.facade.enums.AstTypeEnum;
import com.abssqr.plat.common.facade.enums.TaskStatusEnum; import com.abssqr.plat.common.facade.enums.TaskStatusEnum;
import com.general.system.common.model.BaseEntity; import com.general.system.common.model.BaseEntity;
import com.general.system.common.model.Money; import com.general.system.common.model.Money;
...@@ -20,132 +21,37 @@ public class AstPoolEntity extends BaseEntity { ...@@ -20,132 +21,37 @@ public class AstPoolEntity extends BaseEntity {
/** /**
* 资产编号 * 资产编号
*/ */
private String astNo; private String astPoolName;
/** /**
* 资产管理机构 * 资产管理机构
*/ */
private String managerOrgCode; private AstTypeEnum astTypeEnum;
/** /**
* 资产所属机构 放款池计划 * 资产所属机构 放款池计划
*/ */
private String ownOrg; private String astPoolNo;
/**
* 资产期次号
*/
private Integer termNo;
/**
* 开始日期
*/
private Date startDate;
/**
* 结束日期
*/
private Date endDate;
/**
* 业务日期
*/
private Date bizDate;
/**
* 状态
*/
private TaskStatusEnum taskStatus;
/**
* 本金余额
*/
private Money prinBal;
/**
* slice 是否已切片. 默认不切片
*/
private Boolean slice = false;
private Map<String, String> context = Maps.newHashMap();
public String getAstNo() {
return astNo;
}
public void setAstNo(String astNo) {
this.astNo = astNo;
}
public String getManagerOrgCode() {
return managerOrgCode;
}
public void setManagerOrgCode(String managerOrgCode) {
this.managerOrgCode = managerOrgCode;
}
public Integer getTermNo() { public String getAstPoolName() {
return termNo; return astPoolName;
} }
public void setTermNo(Integer termNo) { public void setAstPoolName(String astPoolName) {
this.termNo = termNo; this.astPoolName = astPoolName;
} }
public Date getStartDate() { public AstTypeEnum getAstTypeEnum() {
return startDate; return astTypeEnum;
} }
public void setStartDate(Date startDate) { public void setAstTypeEnum(AstTypeEnum astTypeEnum) {
this.startDate = startDate; this.astTypeEnum = astTypeEnum;
} }
public Date getEndDate() { public String getAstPoolNo() {
return endDate; return astPoolNo;
} }
public void setEndDate(Date endDate) { public void setAstPoolNo(String astPoolNo) {
this.endDate = endDate; this.astPoolNo = astPoolNo;
}
public Map<String, String> getContext() {
return context;
}
public void setContext(Map<String, String> context) {
this.context = context;
}
public Date getBizDate() {
return bizDate;
}
public void setBizDate(Date bizDate) {
this.bizDate = bizDate;
}
public TaskStatusEnum getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(TaskStatusEnum taskStatus) {
this.taskStatus = taskStatus;
}
public Money getPrinBal() {
return prinBal;
}
public void setPrinBal(Money prinBal) {
this.prinBal = prinBal;
}
public String getOwnOrg() {
return ownOrg;
}
public void setOwnOrg(String ownOrg) {
this.ownOrg = ownOrg;
}
public Boolean getSlice() {
return slice;
}
public void setSlice(Boolean slice) {
this.slice = slice;
} }
} }
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.common.model.repo.ast.impl;
import com.abssqr.plat.common.dal.mysql.auto.dao.AstPackDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPackDO;
import com.abssqr.plat.common.facade.enums.AstPackStatusEnum;
import com.abssqr.plat.common.facade.enums.AstPackTradeTypeEnum;
import com.abssqr.plat.common.model.convertor.PacKConvert;
import com.abssqr.plat.common.model.convertor.LoanAstBuyBackPackConvert;
import com.abssqr.plat.common.model.domain.ast.Pack;
import com.abssqr.plat.common.model.domain.ast.LoanAstBuyBackPack;
import com.abssqr.plat.common.model.repo.ast.PackRepository;
import com.abssqr.plat.common.model.repo.plan.PlanTransferRuleRepo;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @author guozhenhua
* @version com.abssqr.plat.common.model.repo.pack.impl: PackRepositoryImpl.java, v 0.1 2018-02-26 下午4:20 guozhenhua
* Exp $
*/
@Component
public class PackRepositoryImpl implements PackRepository {
@Autowired
private AstPackDAO astPackDAO;
@Autowired
private PlanTransferRuleRepo planTransferRuleRepo;
@Override
public int create(Pack pack) {
return astPackDAO.insert(PacKConvert.domain2DO(pack));
}
@Override
public int create(LoanAstBuyBackPack pack) {
return astPackDAO.insert(LoanAstBuyBackPackConvert.domain2DO(pack));
}
@Override
public int createBatch(List<Pack> packs) {
if (CollectionUtils.isNotEmpty(packs)) {
List<AstPackDO> collect = packs.stream().map(pack -> PacKConvert.domain2DO(pack)).collect(
Collectors.toList());
return astPackDAO.insertBatch(collect);
}
return 0;
}
@Override
public void updatePackStatus(List<Pack> packs, AstPackStatusEnum packStatus, AstPackStatusEnum oldPackStatus) {
astPackDAO.updatePackStatus(packStatus.getCode(), oldPackStatus.getCode(),
packs.stream().map(Pack::getPackCode).collect(Collectors.toList()));
}
@Override
public List<AstPackDO> getByPlanNo(String planNo, AstPackTradeTypeEnum tradeTypeEnum) {
return astPackDAO.getByPlanNo(planNo, tradeTypeEnum.getCode());
}
@Override
public AstPackDO getLastDayPackByPlanNo(String planNo, Date scenDate, AstPackTradeTypeEnum tradeTypeEnum) {
return astPackDAO.getLastDayPackByPlanNo(scenDate, planNo, tradeTypeEnum.getCode());
}
@Override
public List<AstPackDO> getByManagerOrgCode(String managerOrgCode, Date accountDate, AstPackStatusEnum status, AstPackTradeTypeEnum tradeTypeEnum) {
return astPackDAO.getByManagerOrg(accountDate, Optional.ofNullable(status).map(AstPackStatusEnum::getCode).orElse(null), tradeTypeEnum.getCode(), managerOrgCode);
}
@Override
public AstPackDO getByPackNo(String packCode) {
return astPackDAO.getByPackCode(packCode);
}
@Override
public List<AstPackDO> selectPackByStatus(Date scenDate, AstPackStatusEnum status, AstPackTradeTypeEnum tradeTypeEnum) {
return astPackDAO.selectPackByStatus(scenDate, tradeTypeEnum.getCode(), status.getCode());
}
@Override
public Long countByStatusAndTime(Date time, String status, AstPackTradeTypeEnum tradeTypeEnum) {
return astPackDAO.countByStatusAndTime(time, status, tradeTypeEnum.getCode());
}
@Override
public AstPackDO lockByPackCode(String packCode) {
return astPackDAO.lockByPackCode(packCode);
}
}
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.common.model.repo.astPool;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolPage;
import com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
/**
* 资产池仓储
*
* @author guozhenhua
* @version com.abssqr.plat.common.model.repo.astPool: AstPoolRepository.java, v 0.1 2018-01-07 下午1:04 guozhenhua Exp $
*/
public interface AstPoolRepository {
/**
* 资产池新增资产
*
* @param astPoolEntity
*/
int create(AstPoolEntity astPoolEntity);
AstPoolPage getPage(AstPoolPageQryParam astPoolPageQryParam);
AstPoolEntity getByAstPoolNo(String astPoolNo);
}
\ No newline at end of file
/**
* abssqr.com Inc.
* Copyright (c) 2017-2018 All Rights Reserved.
*/
package com.abssqr.plat.common.model.repo.astPool.impl;
import com.abssqr.plat.common.dal.mysql.auto.dao.AstPoolDAO;
import com.abssqr.plat.common.dal.mysql.auto.dataobject.AstPoolDO;
import com.abssqr.plat.common.dal.mysql.auto.paging.AstPoolPage;
import com.abssqr.plat.common.facade.param.astPool.AstPoolPageQryParam;
import com.abssqr.plat.common.model.convertor.AstPoolConvert;
import com.abssqr.plat.common.model.domain.ast.AstPoolEntity;
import com.abssqr.plat.common.model.repo.astPool.AstPoolRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author guozhenhua
* @version com.abssqr.plat.common.model.repo.astPool: AstPoolRepositoryImpl.java, v 0.1 2018-01-07 下午1:12 guozhenhua Exp $
*/
@Component
public class AstPoolRepositoryImpl implements AstPoolRepository {
@Autowired
private AstPoolDAO astPoolDAO;
@Override
public int create(AstPoolEntity astPoolEntity) {
return astPoolDAO.insert(AstPoolConvert.convert2DO(astPoolEntity));
}
@Override
public AstPoolPage getPage(AstPoolPageQryParam astPoolPageQryParam) {
String astPoolName = astPoolPageQryParam.getAstPoolName();
AstPoolPage astPoolPage=new AstPoolPage();
astPoolPage.setAstPoolName(astPoolName);
AstPoolPage page = astPoolDAO.getPage(astPoolPage);
return page;
}
@Override
public AstPoolEntity getByAstPoolNo(String astPoolNo) {
AstPoolDO astPoolDO = astPoolDAO.getByNo(astPoolNo);
return AstPoolConvert.convert2Domain(astPoolDO);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment