BMS结算主体字段查询显示

This commit is contained in:
秦鸿展
2026-02-25 16:37:15 +08:00
parent 50e7568736
commit fb39852c1f
2 changed files with 52 additions and 30 deletions
@@ -393,41 +393,14 @@ public class BillingStatementDomainService {
*/
private void handleData(BillingStatementDO billingStatementDO) {
//查询合同信息,赋值合同周期信息
//优先通过合同编号获取合同信息
if(StringUtils.isNotEmpty(billingStatementDO.getContractNumber())){
AjaxResult ajaxResult = systemServiceFeign.getInfoByCode(billingStatementDO.getContractNumber());
if("200".equals(String.valueOf(ajaxResult.get("code")))){
ContractManagePO contractManagePO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContractManagePO.class);
if(null != contractManagePO){
//取值合同详情,对比费用科目,取值计费周
if(contractManagePO.getContractManageDetailPOList()!=null && contractManagePO.getContractManageDetailPOList().size()>0){
List<ContractManageDetailPO> contractManageDetailPOList = contractManagePO.getContractManageDetailPOList();
String subjectCode = !StringUtils.isNotEmpty(billingStatementDO.getSecondSubjectCode()) ? billingStatementDO.getFirstSubjectCode() : billingStatementDO.getSecondSubjectCode();
Date cycleBeginTime = null;
Date cycleEndTime = null;
for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) {
String subjectCodeContract = !StringUtils.isNotEmpty(contractManageDetailPO.getSecondSubjectCode()) ? contractManageDetailPO.getFirstSubjectCode() : contractManageDetailPO.getSecondSubjectCode();
if(subjectCodeContract.equals(subjectCode)){
Date businessDate = billingStatementDO.getBusinessDate();
//根据不同类型获取计费周期
if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"1") || ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"4")){
//实时计费、按天计费,赋值为当天
cycleBeginTime = businessDate;
cycleEndTime = businessDate;
}else if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"2")){
//按账期计费
cycleBeginTime = businessDate;
cycleEndTime = contractManagePO.getPaymentDate();
}else if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"3")){
//按周计费,用businessDate往后推一周的日期
cycleBeginTime = businessDate;
cycleEndTime = DateUtil.offsetWeek(businessDate,1);
}
break;
}
}
billingStatementDO.setCycleBeginTime(cycleBeginTime);
billingStatementDO.setCycleEndTime(cycleEndTime);
}
//根据合同判断计费流水的周期开始日期和周期结束日
setCycleTimeByContract(billingStatementDO, contractManagePO);
billingStatementDO.setContractType(contractManagePO.getContractType());
}
}
@@ -445,6 +418,52 @@ public class BillingStatementDomainService {
}
}
/**
* 根据合同判断计费流水的周期开始日期和周期结束日期
* (1)周期开始日期:根据合同明细的计费属性判断
* - 实时计费、按天计费:周期开始日期 = 业务日期
* - 按账期计费:周期开始日期 = 业务日期
* - 按周计费:周期开始日期 = 业务日期
* (2)周期结束日期:根据合同明细的计费属性判断
* - 实时计费、按天计费:周期结束日期 = 业务日期
* - 按账期计费:周期结束日期 = 合同的出账日期(paymentDate
* - 按周计费:周期结束日期 = 业务日期往后推一周
* @param billingStatementDO 计费流水对象
* @param contractManagePO 合同管理对象
*/
private void setCycleTimeByContract(BillingStatementDO billingStatementDO, ContractManagePO contractManagePO) {
//取值合同详情,对比费用科目,取值计费周期
if(contractManagePO.getContractManageDetailPOList()!=null && contractManagePO.getContractManageDetailPOList().size()>0){
List<ContractManageDetailPO> contractManageDetailPOList = contractManagePO.getContractManageDetailPOList();
String subjectCode = !StringUtils.isNotEmpty(billingStatementDO.getSecondSubjectCode()) ? billingStatementDO.getFirstSubjectCode() : billingStatementDO.getSecondSubjectCode();
Date cycleBeginTime = null;
Date cycleEndTime = null;
for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) {
String subjectCodeContract = !StringUtils.isNotEmpty(contractManageDetailPO.getSecondSubjectCode()) ? contractManageDetailPO.getFirstSubjectCode() : contractManageDetailPO.getSecondSubjectCode();
if(subjectCodeContract.equals(subjectCode)){
Date businessDate = billingStatementDO.getBusinessDate();
//根据不同类型获取计费周期
if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"1") || ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"4")){
//实时计费、按天计费,赋值为当天
cycleBeginTime = businessDate;
cycleEndTime = businessDate;
}else if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"2")){
//按账期计费
cycleBeginTime = businessDate;
cycleEndTime = contractManagePO.getPaymentDate();
}else if(ObjectUtil.equal(contractManageDetailPO.getBillingAttributesCode(),"3")){
//按周计费,用businessDate往后推一周的日期
cycleBeginTime = businessDate;
cycleEndTime = DateUtil.offsetWeek(businessDate,1);
}
break;
}
}
billingStatementDO.setCycleBeginTime(cycleBeginTime);
billingStatementDO.setCycleEndTime(cycleEndTime);
}
}
/**
* 账单作废,流水状态回滚