初步封装

This commit is contained in:
2026-05-06 16:04:39 +08:00
commit b1097e86e2
94 changed files with 7205 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
package com.seeyon.apps.assetstenant.bill;
import com.alibaba.fastjson.JSONObject;
import com.seeyon.apps.assetstenant.assets.AssetsService;
import com.seeyon.apps.assetstenant.assets.OaAssetsVo;
import com.seeyon.apps.assetstenant.config.AssetsTenantConfigProvider;
import com.seeyon.apps.assetstenant.constants.RentConstants;
import com.seeyon.apps.assetstenant.contract.ContractService;
import com.seeyon.apps.assetstenant.po.PageQueryVo;
import com.seeyon.cap4.form.bean.FormTableBean;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.exceptions.BusinessException;
import com.seeyon.utils.form.*;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class BillService {
private AssetsTenantConfigProvider configProvider = (AssetsTenantConfigProvider) AppContext.getBean("assetsTenantConfigProvider");
private ContractService contractService = (ContractService) AppContext.getBean("contractService");
private AssetsService assetsService = (AssetsService) AppContext.getBean("assetsService");
private String getFormNo() {
return configProvider.getBizConfigByKey(RentConstants.CONTRACTBILLFORMNO);
}
private TableContext getTableContext() throws BusinessException {
TableContext tableContext = FormTableExecutor.master(getFormNo());
return tableContext;
}
private String getStringValue(Map<String, Object> fieldsMap,String key) {
Object o = fieldsMap.get(key);
if(o == null) {
return null;
}
return o + "";
}
private List<FormWhereCondition> buildConditions(JSONObject params, FormTableBean formTableBean) {
List<FormWhereCondition> conditions = new ArrayList<>();
if(StringUtils.isNotBlank(params.getString("cusNo"))) {
conditions.add(FormWhereCondition.build().display("承租方编号").value(params.getString("cusNo")));
}
if(StringUtils.isNotBlank(params.getString("billNo"))) {
conditions.add(FormWhereCondition.build().display("租赁账单编号").value(params.getString("billNo")));
}
if(StringUtils.isNotBlank(params.getString("billStatus"))) {
if("已缴费".equals(params.getString("billStatus"))) {
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").clauseFactor(ClauseFactor.NOT_NULL));
}else {
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").value(EnumMapUtils.getEnumItemValueByDisplayValue(formTableBean, "账单-收款结果反馈", "未收款")).endWithBracket(true));
}
}
return conditions;
}
public List<BillVo> queryAllContractBill(List<FormWhereCondition> conditions) throws Exception {;
TableContext tableContext = getTableContext();
List<FormColumn> datas = FormTableExecutor.query(tableContext, null, conditions,true);
List<BillVo> vos = new ArrayList<>();
if(datas.size() > 0){
for (Object data : datas) {
Map<String,Object> map = (Map<String, Object>) data;
BillVo billVo = new BillVo();
fillVo(map, billVo);
vos.add(billVo);
}
}
return vos;
}
public Integer countUnpayRentBills(JSONObject params) throws Exception {
TableContext tableContext = getTableContext();
List<FormWhereCondition> conditions = buildConditions(params,tableContext.getTableBean());
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").value(EnumMapUtils.getEnumItemValueByDisplayValue(tableContext.getTableBean(),"账单-收款结果反馈","未收款")).endWithBracket(true));
Long count = FormTableExecutor.count(tableContext, null,conditions);
return count.intValue();
}
public PageQueryVo pageQueryContractBill(JSONObject params) throws Exception {
TableContext tableContext = getTableContext();
List<FormWhereCondition> conditions = buildConditions(params,tableContext.getTableBean());
Integer pageNo = params.getInteger("pageNo") == null ? 1 : params.getInteger("pageNo");
Integer pageSize = params.getInteger("pageSize") == null ? 10 : params.getInteger("pageSize");
PageQueryVo<BillVo> pageQueryVo = new PageQueryVo();
List<FormColumn> datas = FormTableExecutor.pageQuery(tableContext, null,conditions, pageNo, pageSize,true);
List<BillVo> vos = new ArrayList<>();
Long count = FormTableExecutor.count(tableContext,null, conditions);
if(datas.size() > 0){
for (Object data : datas) {
Map<String,Object> map = (Map<String, Object>) data;
BillVo billVo = new BillVo();
fillVo(map, billVo);
vos.add(billVo);
}
pageQueryVo.setDatas(vos);
pageQueryVo.setTotalCount(count);
}
return pageQueryVo;
}
public BillVo queryOne(JSONObject params) throws Exception {
TableContext tableContext = getTableContext();
List<FormWhereCondition> conditions = buildConditions(params,tableContext.getTableBean());
FormColumn formColumn = FormTableExecutor.queryOne(tableContext,conditions,true);
if(formColumn == null) {
return null;
}
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
BillVo billVo = new BillVo();
fillVo(fieldsMap, billVo);
return billVo;
}
public void fillVo(Map<String, Object> fieldsMap, BillVo billVo) throws Exception {
billVo.setBillType("CONTRACT");
billVo.setBillNo(getStringValue(fieldsMap,"租赁账单编号" ));
String payStatus = fieldsMap.get("账单-收款结果反馈") == null ? "待缴费" : getStringValue(fieldsMap,"收款结果反馈");
billVo.setBillStatus(payStatus);
billVo.setCusNo(getStringValue(fieldsMap,"承租方编号"));
billVo.setBillStartDate(getStringValue(fieldsMap,"账单-开始日期"));
billVo.setContractNo(getStringValue(fieldsMap,"合同编号"));
billVo.setBillPayEndDate(getStringValue(fieldsMap,"账单-当前缴费时限"));
billVo.setBillEndDate(getStringValue(fieldsMap,"账单-结束日期"));
OaAssetsVo oaAssetsVo = assetsService.queryAssetsDetail(getStringValue(fieldsMap,"资产编号"));
String asssetsName = null;
if(oaAssetsVo != null) {
asssetsName = oaAssetsVo.getAssetsName();
}
String roomNo = fieldsMap.get("门牌号") == null ? "" : fieldsMap.get("门牌号") + "-";
String billTerm = "(" + billVo.getBillStartDate() + "-" + billVo.getBillEndDate() + ")";
billVo.setBillName(asssetsName + roomNo + billTerm);
BigDecimal bigDecimal = (BigDecimal) fieldsMap.get("账单-租费");
billVo.setBillAmount(bigDecimal == null ? null : bigDecimal.toString());
billVo.setBillPayTime(getStringValue(fieldsMap,"账单-实际收款时间"));
}
private String buildBillName(Map<String, Object> fieldsMap) throws Exception {
String contractNo = getStringValue(fieldsMap,"合同编号");
String term = contractService.queryContractPayPeriod(contractNo,getStringValue(fieldsMap,"账单-开始日期")) + "-";
OaAssetsVo oaAssetsVo = assetsService.queryAssetsDetail(getStringValue(fieldsMap,"资产编号"));
String asssetsName = null;
if(oaAssetsVo != null) {
asssetsName = oaAssetsVo.getAssetsName();
}
String roomNo = fieldsMap.get("门牌号") == null ? "" : fieldsMap.get("门牌号") + "-";
return asssetsName + roomNo + term;
}
}