修复bug
This commit is contained in:
@@ -279,7 +279,7 @@ public class AssetsService {
|
||||
}
|
||||
|
||||
public Map<String,Object> getAssetsManagerInfo(String assetsNo) throws Exception {
|
||||
String formNo = configProvider.getBizConfigByKey(RentConstants.ASSETS_INFO_FORMNO);
|
||||
String formNo = configProvider.getBizConfigByKey(RentConstants.ASSETS_FORMNO);
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("资产编号").value(assetsNo));
|
||||
FormColumn formColumn = formDataOperator.queryOneRowFormData(formNo, false, null, conditions);
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.seeyon.apps.src_rent.bill;
|
||||
|
||||
import cn.hutool.log.Log;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.aicloud.common.JsonUtils;
|
||||
import com.seeyon.apps.src_rent.assets.AssetsService;
|
||||
import com.seeyon.apps.src_rent.assets.OaAssetsVo;
|
||||
import com.seeyon.apps.src_rent.config.RentConfigProvider;
|
||||
@@ -41,6 +40,7 @@ public class BillService {
|
||||
private FlowCreateService flowCreateService = (FlowCreateService) AppContext.getBean("qcFlowCreateService");
|
||||
private OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager");
|
||||
private DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
||||
private DateFormat sysDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
private String getFormNo() {
|
||||
return configProvider.getBizConfigByKey(RentConstants.CONTRACTBILLFORMNO);
|
||||
@@ -62,6 +62,12 @@ public class BillService {
|
||||
if(StringUtils.isNotBlank(params.getString("billNo"))) {
|
||||
conditions.add(FormWhereCondition.build().display("租赁账单编号").value(params.getString("billNo")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("startDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("账单-开始日期").clauseFactor(ClauseFactor.GT).value(params.getString("startDate")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("endDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("账单-开始日期").clauseFactor(ClauseFactor.LE).value(params.getString("endDate")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("billStatus"))) {
|
||||
if("已缴费".equals(params.getString("billStatus"))) {
|
||||
conditions.add(FormWhereCondition.build().display("账单-收款结果反馈").clauseFactor(ClauseFactor.NOT_NULL));
|
||||
@@ -104,7 +110,7 @@ public class BillService {
|
||||
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<Object> datas = formDataOperator.queryFormDataPageCondition(getFormNo(), true,null, conditions, pageNo, pageSize);
|
||||
List<Object> datas = formDataOperator.queryFormDataPageCondition(getFormNo(), true,null, conditions, pageNo, pageSize,"账单-开始日期",null);
|
||||
List<BillVo> vos = new ArrayList<>();
|
||||
Long count = formDataOperator.countConditon(getFormNo(), conditions);
|
||||
if(datas.size() > 0){
|
||||
@@ -175,11 +181,10 @@ public class BillService {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||
String contractNo = getStringValue(fieldsMap, "合同编号");
|
||||
return contractDocService.getAssetsManagerOrg(contractNo);
|
||||
return getStringValue(fieldsMap,"签订单位");
|
||||
}
|
||||
|
||||
public void payCallBack(String billNo) throws Exception {
|
||||
public void payCallBack(String billNo,String payDate) throws Exception {
|
||||
// 1. 获取Bean + 非空校验
|
||||
FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4");
|
||||
if (formApi4Cap4 == null) {
|
||||
@@ -221,18 +226,15 @@ public class BillService {
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("账单-账单明细编号").value(billNo));
|
||||
FormColumn formColumn = this.formDataOperator.queryOneRowFormData(this.getFormNo(), false, null, conditions);
|
||||
|
||||
// 7. 主数据非空判断
|
||||
if (formColumn == null || formColumn.getFieldsMap() == null) {
|
||||
throw new Exception("根据账单编号:" + billNo + "未查询到账单数据");
|
||||
}
|
||||
|
||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||
BigDecimal accountsReceivable = BigDecimal.ZERO;
|
||||
// 初始化实际收款金额(避免null)
|
||||
BigDecimal actualReceipts = BigDecimal.ZERO;
|
||||
BigDecimal rate = new BigDecimal("0.997");
|
||||
|
||||
// 8. 组装子表数据
|
||||
Map<String, Object> subTableRowData = new HashMap<>();
|
||||
subTableRowData.put("账单明细编号", fieldsMap.get("账单-账单明细编号"));
|
||||
@@ -241,7 +243,6 @@ public class BillService {
|
||||
subTableRowData.put("当期缴费时限", fieldsMap.get("账单-当前缴费时限"));
|
||||
subTableRowData.put("综合减免", fieldsMap.get("账单-减免金额") == null ? BigDecimal.ZERO : fieldsMap.get("账单-减免金额"));
|
||||
subTableRowData.put("租费递增", fieldsMap.get("账单-租费递增") == null ? BigDecimal.ZERO : fieldsMap.get("账单-租费递增"));
|
||||
|
||||
// 应收金额计算
|
||||
BigDecimal receivable = (BigDecimal) fieldsMap.get("账单-应收租金");
|
||||
if (receivable != null) {
|
||||
@@ -259,22 +260,19 @@ public class BillService {
|
||||
FormFieldBean formFieldBean = subTableBean.getFieldBeanByDisplay("收款结果");
|
||||
subTableRowData.put("收款结果", EnumMapUtils.getEnumItemValueByEnumId("已结清",formFieldBean.getEnumId()));
|
||||
subFormDataList.add(subTableRowData);
|
||||
|
||||
// 9. 获取合同信息 + 非空校验
|
||||
String contractNo = (String) fieldsMap.get("合同编号");
|
||||
Map<String, Object> contractInfo = this.contractDocService.getContractInfoByContractNo(contractNo);
|
||||
if (contractInfo != null) {
|
||||
mainData.put("合同名称", contractInfo.get("合同名称"));
|
||||
mainData.put("合同金额", contractInfo.get("合同金额"));
|
||||
mainData.put("承租方类型", contractInfo.get("承租方类型"));
|
||||
mainData.put("承租方名称", contractInfo.get("承租方名称"));
|
||||
}
|
||||
|
||||
mainData.put("合同名称", fieldsMap.get("合同名称"));
|
||||
mainData.put("合同金额", fieldsMap.get("合同金额"));
|
||||
mainData.put("签订单位", fieldsMap.get("签订单位"));
|
||||
mainData.put("承租方类型", fieldsMap.get("承租方类型"));
|
||||
mainData.put("承租方名称", fieldsMap.get("承租方"));
|
||||
mainData.put("承租方名称编号", fieldsMap.get("承租方编号"));
|
||||
// 10. 经办人/部门信息(安全赋值)
|
||||
String assetNo = (String) fieldsMap.get("资产编号");
|
||||
Map<String, Object> assetsManagerInfo = this.assetsService.getAssetsManagerInfo(assetNo);
|
||||
if (assetsManagerInfo != null && assetsManagerInfo.get("经办人") != null) {
|
||||
String managerId = String.valueOf(assetsManagerInfo.get("经办人"));
|
||||
if (assetsManagerInfo != null && assetsManagerInfo.get("运营管理员") != null) {
|
||||
String managerId = String.valueOf(assetsManagerInfo.get("运营管理员"));
|
||||
try {
|
||||
V3xOrgMember member = this.orgManager.getMemberById(Long.parseLong(managerId));
|
||||
if (member != null) {
|
||||
@@ -286,14 +284,12 @@ public class BillService {
|
||||
log.warn("获取经办人信息失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
// 11. 组装主表数据(线程安全日期)
|
||||
mainData.put("收款项", EnumMapUtils.getMasterTableEnumItemValue(templateCode, "收款项", "租金"));
|
||||
mainData.put("经办日期", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
mainData.put("本次收款时间", payDate);
|
||||
mainData.put("合同编号", contractNo);
|
||||
mainData.put("本次收款金额", actualReceipts);
|
||||
|
||||
|
||||
// 12. 启动流程
|
||||
this.flowCreateService.flowStart("微信小程序支付完成收款登记",
|
||||
mainFormData, subFormDataMap, appName, templateCode);
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -54,12 +55,12 @@ public class FeeRecordService {
|
||||
.display("收付款日期")
|
||||
.startWithBracket(true)
|
||||
.clauseFactor(ClauseFactor.GE)
|
||||
.value(params.getString("year") + "-01-01"));
|
||||
.value(params.getString("year") + "-01-01 00:00:00"));
|
||||
conditions.add(FormWhereCondition.build()
|
||||
.display("收付款日期")
|
||||
.endWithBracket(true)
|
||||
.clauseFactor(ClauseFactor.LE)
|
||||
.value(params.getString("year") + "-12-31"));
|
||||
.value(params.getString("year") + "-12-31 23:59:59"));
|
||||
}
|
||||
return conditions;
|
||||
}
|
||||
@@ -101,11 +102,13 @@ public class FeeRecordService {
|
||||
}
|
||||
}
|
||||
|
||||
public void payCallBack(String billNo,String bizType) throws Exception {
|
||||
public void payCallBack(String billNo, String bizType, String payDate) throws Exception {
|
||||
if("rent".equals(bizType)) {
|
||||
billService.payCallBack(billNo);
|
||||
}else {
|
||||
waeBillService.payCallBack(billNo);
|
||||
billService.payCallBack(billNo,payDate);
|
||||
}else if("wae".equals(bizType)){
|
||||
waeBillService.payCallBack(billNo,payDate);
|
||||
}else if("margin".equals(bizType)){
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,247 @@
|
||||
package com.seeyon.apps.src_rent.bill;
|
||||
|
||||
import cn.hutool.log.Log;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.apps.src_rent.assets.AssetsService;
|
||||
import com.seeyon.apps.src_rent.assets.OaAssetsVo;
|
||||
import com.seeyon.apps.src_rent.config.RentConfigProvider;
|
||||
import com.seeyon.apps.src_rent.constants.RentConstants;
|
||||
import com.seeyon.apps.src_rent.contract.ContractDocService;
|
||||
import com.seeyon.apps.src_rent.contract.ContractService;
|
||||
import com.seeyon.apps.src_rent.flow.FlowCreateService;
|
||||
import com.seeyon.apps.src_rent.form.*;
|
||||
import com.seeyon.apps.src_rent.po.PageQueryVo;
|
||||
import com.seeyon.cap4.form.api.FormApi4Cap4;
|
||||
import com.seeyon.cap4.form.bean.FormBean;
|
||||
import com.seeyon.cap4.form.bean.FormFieldBean;
|
||||
import com.seeyon.cap4.form.bean.FormTableBean;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
import com.seeyon.ctp.organization.bo.V3xOrgMember;
|
||||
import com.seeyon.ctp.organization.manager.OrgManager;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
|
||||
public class MarginBillService {
|
||||
|
||||
private static final Log log = Log.get(MarginBillService.class);
|
||||
private RentConfigProvider configProvider = (RentConfigProvider) AppContext.getBean("rentConfigProvider");
|
||||
private FormDataOperator formDataOperator = (FormDataOperator) AppContext.getBean("qcFormDataOperator");
|
||||
private AssetsService assetsService = (AssetsService) AppContext.getBean("qcAssetsService");
|
||||
private ContractDocService contractDocService = (ContractDocService) AppContext.getBean("qcContractDocService");
|
||||
private FlowCreateService flowCreateService = (FlowCreateService) AppContext.getBean("qcFlowCreateService");
|
||||
private OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager");
|
||||
private DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
||||
private DateFormat sysDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
private String getFormNo() {
|
||||
return configProvider.getBizConfigByKey(RentConstants.UNPAIDMARGINFORMNO);
|
||||
}
|
||||
|
||||
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) {
|
||||
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("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.getMasterTableEnumItemValue(getFormNo(),"缴费状态","未结清")).endWithBracket(true));
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("startDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("合同开始日期").clauseFactor(ClauseFactor.GT).value(params.getString("startDate")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("endDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("合同开始日期").clauseFactor(ClauseFactor.LE).value(params.getString("endDate")));
|
||||
}
|
||||
return conditions;
|
||||
}
|
||||
|
||||
|
||||
public PageQueryVo pageQuery(JSONObject params) throws Exception {
|
||||
List<FormWhereCondition> conditions = buildConditions(params);
|
||||
conditions.add(FormWhereCondition.build().display("是否同步小程序").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"是否同步小程序","是")));
|
||||
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<Object> datas = formDataOperator.queryFormDataPageCondition(getFormNo(), true,null, conditions, pageNo, pageSize,"账单开始日期",null);
|
||||
List<BillVo> vos = new ArrayList<>();
|
||||
Long count = formDataOperator.countConditon(getFormNo(), 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 Integer countUnpay(JSONObject params) throws Exception {
|
||||
List<FormWhereCondition> conditions = buildConditions(params);
|
||||
conditions.add(FormWhereCondition.build().display("是否同步小程序").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"是否同步小程序","是")));
|
||||
conditions.add(FormWhereCondition.build().display("缴费状态").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
|
||||
conditions.add(FormWhereCondition.build().display("缴费状态").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"缴费状态","未结清")).endWithBracket(true));
|
||||
Long count = formDataOperator.countConditon(getFormNo(), conditions);
|
||||
return count.intValue();
|
||||
}
|
||||
|
||||
public void fillVo(Map<String, Object> fieldsMap, BillVo billVo) throws Exception {
|
||||
billVo.setBillType("MARGIN");
|
||||
billVo.setBillStartDate(getStringValue(fieldsMap,"合同开始日期"));
|
||||
billVo.setBillEndDate(getStringValue(fieldsMap,"合同截止日期"));
|
||||
billVo.setBillStatus(getStringValue(fieldsMap,"缴费状态"));
|
||||
billVo.setCusNo(getStringValue(fieldsMap,"承租方编号"));
|
||||
billVo.setBillNo(getStringValue(fieldsMap,"单据编号"));
|
||||
BigDecimal marginFee = fieldsMap.get("履约保证金") == null ? BigDecimal.ZERO : (BigDecimal) fieldsMap.get("履约保证金");
|
||||
billVo.setBillAmount(marginFee.toString());
|
||||
String contractName = null;
|
||||
String contractNo = getStringValue(fieldsMap, "合同编号");
|
||||
if(StringUtils.isNotBlank(contractNo)) {
|
||||
contractName = getContractName(contractNo);
|
||||
}
|
||||
billVo.setBillName(contractName + "_保证金");
|
||||
}
|
||||
|
||||
private String getContractName(String contractNo) throws Exception {
|
||||
if(contractNo == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> map = contractDocService.getContractInfoByContractNo(contractNo);
|
||||
if(map == null) {
|
||||
return null;
|
||||
}
|
||||
return (String)map.get("合同名称");
|
||||
}
|
||||
|
||||
public String getBillPayReceiver(String billNo) throws Exception {
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("单据编号").value(billNo));
|
||||
FormColumn formColumn = formDataOperator.queryOneRowFormData(getFormNo(), true, null, conditions);
|
||||
if(formColumn == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||
String contractNo = getStringValue(fieldsMap, "合同编号");
|
||||
return contractDocService.getAssetsManagerOrg(contractNo);
|
||||
}
|
||||
|
||||
public void payCallBack(String billNo,String payDate) throws Exception {
|
||||
// 1. 获取Bean + 非空校验
|
||||
FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4");
|
||||
if (formApi4Cap4 == null) {
|
||||
throw new Exception("Spring容器中未找到formApi4Cap4 Bean");
|
||||
}
|
||||
|
||||
// 2. 复用配置,避免重复查询
|
||||
String templateCode = this.configProvider.getBizConfigByKey(RentConstants.PAYMENT_REGISTRATION_TEMPLATECODE);
|
||||
String appName = this.configProvider.getBizConfigByKey(RentConstants.FORMAPPNAME);
|
||||
|
||||
// 3. 获取表单结构
|
||||
FormBean cap4FormBean = formApi4Cap4.getFormByFormCode(templateCode);
|
||||
FormTableBean masterTableBean = cap4FormBean.getMasterTableBean();
|
||||
String tableName = masterTableBean.getTableName();
|
||||
List<FormTableBean> subTableBeanList = cap4FormBean.getSubTableBean();
|
||||
FormTableBean subTableBean = null;
|
||||
// 4. 获取子表名 + 非空校验
|
||||
String subDbTableName = null;
|
||||
for (FormTableBean tableBean : subTableBeanList) {
|
||||
if ("非租赁收款明细".equals(tableBean.getDisplay())) {
|
||||
subDbTableName = tableBean.getTableName();
|
||||
subTableBean = tableBean;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 5. 构造数据结构(规范泛型)
|
||||
Map<String, Object> mainFormData = new HashMap<>();
|
||||
Map<String, List<Object>> subFormDataMap = new HashMap<>();
|
||||
List<Object> subFormDataList = new ArrayList<>();
|
||||
|
||||
Map<String, Object> mainData = new HashMap<>();
|
||||
mainFormData.put(tableName, mainData);
|
||||
if (subDbTableName != null) {
|
||||
log.info("明细表表名为: " + subDbTableName);
|
||||
subFormDataMap.put(subDbTableName, subFormDataList);
|
||||
}
|
||||
|
||||
// 6. 查询账单数据
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("单据编号").value(billNo));
|
||||
FormColumn formColumn = this.formDataOperator.queryOneRowFormData(this.getFormNo(), false, null, conditions);
|
||||
// 7. 主数据非空判断
|
||||
if (formColumn == null || formColumn.getFieldsMap() == null) {
|
||||
throw new Exception("根据账单编号:" + billNo + "未查询到账单数据");
|
||||
}
|
||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||
BigDecimal accountsReceivable = BigDecimal.ZERO;
|
||||
// 初始化实际收款金额(避免null)
|
||||
BigDecimal actualReceipts = BigDecimal.ZERO;
|
||||
BigDecimal rate = new BigDecimal("0.997");
|
||||
// 8. 组装子表数据
|
||||
Map<String, Object> subTableRowData = new HashMap<>();
|
||||
// 应收金额计算
|
||||
BigDecimal receivable = (BigDecimal) fieldsMap.get("履约保证金");
|
||||
if (receivable != null) {
|
||||
accountsReceivable = accountsReceivable.add(receivable);
|
||||
// 修复BigDecimal.setScale不生效问题
|
||||
actualReceipts = accountsReceivable.multiply(rate).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
subTableRowData.put("收款金额", receivable);
|
||||
subTableRowData.put("开票金额", receivable);
|
||||
subFormDataList.add(subTableRowData);
|
||||
// 9. 获取合同信息 + 非空校验
|
||||
String contractNo = (String) fieldsMap.get("合同编号");
|
||||
mainData.put("合同名称", fieldsMap.get("合同名称"));
|
||||
mainData.put("合同金额", fieldsMap.get("合同金额"));
|
||||
mainData.put("承租方类型", fieldsMap.get("承租方类型"));
|
||||
mainData.put("承租方名称", fieldsMap.get("承租方名称"));
|
||||
mainData.put("承租方名称编号", fieldsMap.get("承租方编号"));
|
||||
// 10. 经办人/部门信息(安全赋值)
|
||||
String assetNo = (String) fieldsMap.get("资产编号");
|
||||
Map<String, Object> assetsManagerInfo = this.assetsService.getAssetsManagerInfo(assetNo);
|
||||
if (assetsManagerInfo != null && assetsManagerInfo.get("经办人") != null) {
|
||||
String managerId = String.valueOf(assetsManagerInfo.get("经办人"));
|
||||
try {
|
||||
V3xOrgMember member = this.orgManager.getMemberById(Long.parseLong(managerId));
|
||||
if (member != null) {
|
||||
mainData.put("经办部门", member.getOrgDepartmentId());
|
||||
mainData.put("经办单位", member.getOrgAccountId());
|
||||
mainData.put("经办人员", managerId);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("获取经办人信息失败", e);
|
||||
}
|
||||
}
|
||||
// 11. 组装主表数据(线程安全日期)
|
||||
mainData.put("收款项", EnumMapUtils.getMasterTableEnumItemValue(templateCode, "收款项", "非租金"));
|
||||
mainData.put("经办日期", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
mainData.put("本次收款时间", payDate);
|
||||
mainData.put("合同编号", contractNo);
|
||||
mainData.put("本次收款金额", actualReceipts);
|
||||
// 12. 启动流程
|
||||
this.flowCreateService.flowStart("微信小程序支付完成收款登记",
|
||||
mainFormData, subFormDataMap, appName, templateCode);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -42,6 +43,12 @@ public class WaeBillService {
|
||||
if(StringUtils.isNotBlank(params.getString("cusNo"))) {
|
||||
conditions.add(FormWhereCondition.build().display("承租方编号").value(params.getString("cusNo")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("startDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("账单开始日期").clauseFactor(ClauseFactor.GT).value(params.getString("startDate")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("endDate"))) {
|
||||
conditions.add(FormWhereCondition.build().display("账单开始日期").clauseFactor(ClauseFactor.LE).value(params.getString("endDate")));
|
||||
}
|
||||
if(StringUtils.isNotBlank(params.getString("billStatus"))) {
|
||||
if("已缴费".equals(params.getString("billStatus"))) {
|
||||
conditions.add(FormWhereCondition.build().display("缴费状态").clauseFactor(ClauseFactor.NOT_NULL));
|
||||
@@ -56,10 +63,11 @@ public class WaeBillService {
|
||||
|
||||
public PageQueryVo pageQueryWaeBill(JSONObject params) throws Exception {
|
||||
List<FormWhereCondition> conditions = buildConditions(params);
|
||||
conditions.add(FormWhereCondition.build().display("是否同步小程序").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"是否同步小程序","是")));
|
||||
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<Object> datas = formDataOperator.queryFormDataPageCondition(getFormNo(), true,null, conditions, pageNo, pageSize);
|
||||
List<Object> datas = formDataOperator.queryFormDataPageCondition(getFormNo(), true,null, conditions, pageNo, pageSize,"账单开始日期",null);
|
||||
List<BillVo> vos = new ArrayList<>();
|
||||
Long count = formDataOperator.countConditon(getFormNo(), conditions);
|
||||
if(datas.size() > 0){
|
||||
@@ -95,6 +103,7 @@ public class WaeBillService {
|
||||
|
||||
public Integer countUnpayWaeBills(JSONObject params) throws Exception {
|
||||
List<FormWhereCondition> conditions = buildConditions(params);
|
||||
conditions.add(FormWhereCondition.build().display("是否同步小程序").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"是否同步小程序","是")));
|
||||
conditions.add(FormWhereCondition.build().display("缴费状态").clauseFactor(ClauseFactor.NULL).startWithBracket(true).concatFactor(ClauseFactor.OR));
|
||||
conditions.add(FormWhereCondition.build().display("缴费状态").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"缴费状态","未结清")).endWithBracket(true));
|
||||
Long count = formDataOperator.countConditon(getFormNo(), conditions);
|
||||
@@ -107,16 +116,16 @@ public class WaeBillService {
|
||||
billVo.setBillEndDate(getStringValue(fieldsMap,"账单结束日期"));
|
||||
billVo.setBillStatus(getStringValue(fieldsMap,"缴费状态"));
|
||||
billVo.setCusNo(getStringValue(fieldsMap,"承租方编号"));
|
||||
billVo.setBillNo(getStringValue(fieldsMap,"档案编号"));
|
||||
billVo.setBillNo(getStringValue(fieldsMap,"唯一标识"));
|
||||
BigDecimal powerFee = fieldsMap.get("本次应缴电费") == null ? BigDecimal.ZERO : (BigDecimal) fieldsMap.get("本次应缴电费");
|
||||
BigDecimal waterFee = fieldsMap.get("本次应缴水费") == null ? BigDecimal.ZERO : (BigDecimal) fieldsMap.get("本次应缴水费");
|
||||
billVo.setBillAmount((powerFee.add(waterFee)).toString());
|
||||
billVo.setBillName("水电费");
|
||||
billVo.setBillName(BigDecimal.ZERO.equals(powerFee) ? "电费" : "水费");
|
||||
}
|
||||
|
||||
public String getBillPayReceiver(String billNo) throws Exception {
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("档案编号").value(billNo));
|
||||
conditions.add(FormWhereCondition.build().display("唯一标识").value(billNo));
|
||||
FormColumn formColumn = formDataOperator.queryOneRowFormData(getFormNo(), true, null, conditions);
|
||||
if(formColumn == null) {
|
||||
return null;
|
||||
@@ -127,9 +136,9 @@ public class WaeBillService {
|
||||
return docService.getAssetsManagerOrg(contractNoByAssetsNo);
|
||||
}
|
||||
|
||||
public void payCallBack(String billNo) throws BusinessException {
|
||||
public void payCallBack(String billNo, String payDate) throws BusinessException {
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("档案编号").value(billNo));
|
||||
conditions.add(FormWhereCondition.build().display("唯一标识").value(billNo));
|
||||
List<FormUpdateField> updateFields = new ArrayList<>();
|
||||
updateFields.add(FormUpdateField.build().display("缴费状态").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"缴费状态","结清")));
|
||||
formDataOperator.updateMasterForm(getFormNo(),updateFields,conditions);
|
||||
|
||||
@@ -27,6 +27,7 @@ public enum RentConstants {
|
||||
FORMAPPNAME("","表单应用名称"),
|
||||
FEERECORDFORMNO("","费用收支台账表单编码"),
|
||||
CONTRACTBILLFORMNO("","合同账单表单编码"),
|
||||
UNPAIDMARGINFORMNO("","履约保证金表单编码"),
|
||||
WAEBILLFORMNO("","水电费账单表单编码"),
|
||||
CUSDOCFORMNO("","客商档案表单编码"),
|
||||
NOTICEFORMNO("","招商公告表单编码"),
|
||||
|
||||
@@ -34,6 +34,9 @@ public class ContractDocService {
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("合同编号").value(contractNo));
|
||||
FormColumn formColumn = formDataOperator.queryOneRowFormData(formNo, false, null, conditions);
|
||||
if(formColumn == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> fieldsMap = formColumn.getFieldsMap();
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
if(fieldsMap == null) {
|
||||
|
||||
@@ -38,6 +38,7 @@ public class EsignCallBackController extends BaseController {
|
||||
String tableName = request.getParameter("tablename");
|
||||
String updatefield = request.getParameter("updatefield");
|
||||
String statusfield = request.getParameter("statusfield");
|
||||
String appId = request.getParameter("xId");
|
||||
BufferedReader reader = request.getReader();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
@@ -52,25 +53,22 @@ public class EsignCallBackController extends BaseController {
|
||||
String flowId = callbackParams.getSignFlowId();
|
||||
String action = callbackParams.getAction();
|
||||
log.info("签署回调当前流程: " + flowId);
|
||||
if(action.equals("SIGN_FLOW_COMPLETE")) {
|
||||
if(callbackParams.getSignFlowStatus() == 2) {
|
||||
Map<String, Object> fileInfo = esignByUploadFileService.getDownloadFileInfo(flowId);
|
||||
esignCallbackBizService.handleSuccessSignCallbackBiz(tableName,updatefield,statusfield,formId,(String)fileInfo.get("downloadUrl"),(String)fileInfo.get("fileName"));
|
||||
}else if(callbackParams.getSignFlowStatus() == 5){
|
||||
if (action.equals("SIGN_FLOW_COMPLETE")) {
|
||||
if (callbackParams.getSignFlowStatus() == 2) {
|
||||
Map<String, Object> fileInfo = esignByUploadFileService.getDownloadFileInfo(flowId,appId);
|
||||
esignCallbackBizService.handleSuccessSignCallbackBiz(tableName, updatefield, statusfield, formId, (String) fileInfo.get("downloadUrl"), (String) fileInfo.get("fileName"));
|
||||
} else if (callbackParams.getSignFlowStatus() == 5) {
|
||||
//合同过期
|
||||
esignCallbackBizService.handleExpiredSignCallbackBiz(tableName,statusfield,formId);
|
||||
}else {
|
||||
esignCallbackBizService.handleFailSignCallbackBiz(tableName,statusfield,formId,callbackParams.getResultDescription());
|
||||
esignCallbackBizService.handleExpiredSignCallbackBiz(tableName, statusfield, formId);
|
||||
} else {
|
||||
esignCallbackBizService.handleFailSignCallbackBiz(tableName, statusfield, formId, callbackParams.getResultDescription());
|
||||
}
|
||||
signLinkService.del(flowId);
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
return;
|
||||
}else if(action.equals("SIGN_MISSON_COMPLETE") && callbackParams.getSignResult() == 2 && callbackParams.getSignOrder() == 2){
|
||||
} else if (action.equals("SIGN_MISSON_COMPLETE") && callbackParams.getSignResult() == 2 && callbackParams.getSignOrder() == 2) {
|
||||
//发送消息
|
||||
MessageVo messageVo = new MessageVo();
|
||||
messageVo.setBizId(flowId);
|
||||
messageVo.setMessageType("SIGN");
|
||||
|
||||
// thirdMessageService.sendMessage();
|
||||
}
|
||||
//下载合同
|
||||
@@ -82,11 +80,10 @@ public class EsignCallBackController extends BaseController {
|
||||
out.flush();
|
||||
}
|
||||
log.info("回调处理完成: " + flowId);
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
log.error("回调处理失败", e);
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
e.printStackTrace();
|
||||
}
|
||||
// response.setStatus(HttpServletResponse.SC_OK);
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,9 +21,9 @@ public class CustomerService {
|
||||
}
|
||||
|
||||
public String matchCusPerson(Customer customer) throws Exception {
|
||||
String phone = customer.getCusPhone();
|
||||
String cardNo = customer.getCardNo();
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("联系电话").value(phone).clauseFactor(ClauseFactor.EQ));
|
||||
conditions.add(FormWhereCondition.build().display("统一社会信用代码").value(cardNo).clauseFactor(ClauseFactor.EQ));
|
||||
conditions.add(FormWhereCondition.build().display("承租方类型").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"承租方类型","个人")));
|
||||
List<FormColumn> formColumnList = formDataOperator.queryFormDataCondition(getFormNo(), null, conditions);
|
||||
if(formColumnList != null && formColumnList.size() > 0){
|
||||
@@ -36,7 +36,8 @@ public class CustomerService {
|
||||
public String matchCusOrg(Customer customer) throws BusinessException {
|
||||
String orgNo = customer.getOrgNo();
|
||||
List<FormWhereCondition> conditions = new ArrayList<>();
|
||||
conditions.add(FormWhereCondition.build().display("社会信用代码").value(orgNo).clauseFactor(ClauseFactor.EQ));
|
||||
conditions.add(FormWhereCondition.build().display("承租方类型").value(EnumMapUtils.getMasterTableEnumItemValue(getFormNo(),"承租方类型","单位")));
|
||||
conditions.add(FormWhereCondition.build().display("统一社会信用代码").value(orgNo).clauseFactor(ClauseFactor.EQ));
|
||||
List<FormColumn> formColumnList = formDataOperator.queryFormDataCondition(getFormNo(), null, conditions);
|
||||
if(formColumnList != null && formColumnList.size() > 0){
|
||||
Map<String, Object> fieldsMap = formColumnList.get(0).getFieldsMap();
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.seeyon.ctp.util.JDBCAgent;
|
||||
import com.seeyon.v3x.services.form.FormFactory;
|
||||
import com.seeyon.v3x.services.form.bean.FormExport;
|
||||
import com.seeyon.v3x.services.form.bean.ValueExport;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
@@ -368,6 +369,81 @@ public class FormDataOperator {
|
||||
return columns;
|
||||
}
|
||||
|
||||
public List<Object> queryFormDataPageCondition(String formNo,Boolean changeEnum,List<String> queryColumnVos, List<FormWhereCondition> conditionVos,Integer pageNo,Integer pageSize,String orderField,String orderKeyWord) throws BusinessException {
|
||||
FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4");
|
||||
FormBean cap4FormBean = formApi4Cap4.getFormByFormCode(formNo);
|
||||
List<String> queryColumns = new ArrayList<>();
|
||||
FormTableBean masterTableBean = cap4FormBean.getMasterTableBean();
|
||||
String tableName = masterTableBean.getTableName();
|
||||
Map<String, FormFieldBean> fieldMap4Name = masterTableBean.getFieldMap4Name();
|
||||
String orderFieldName = null;
|
||||
if (queryColumnVos != null) {
|
||||
for (String queryColumnVo : queryColumnVos) {
|
||||
FormFieldBean fieldBeanByDisplay = masterTableBean.getFieldBeanByDisplay(queryColumnVo);
|
||||
if (fieldBeanByDisplay == null) {
|
||||
continue;
|
||||
}
|
||||
queryColumns.add(fieldBeanByDisplay.getColumnName());
|
||||
}
|
||||
}
|
||||
FormFieldBean formFieldBean = masterTableBean.getFieldBeanByDisplay(orderField);
|
||||
if(formFieldBean != null) {
|
||||
orderFieldName = formFieldBean.getColumnName();
|
||||
}
|
||||
for (FormWhereCondition conditionVo : conditionVos) {
|
||||
FormFieldBean fieldBeanByDisplay = masterTableBean.getFieldBeanByDisplay(conditionVo.getDisplay());
|
||||
if (fieldBeanByDisplay == null) {
|
||||
if (conditionVo.getDisplay().equals("ID") || conditionVo.getDisplay().equals("id")) {
|
||||
conditionVo.setFieldName("ID");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
conditionVo.setFieldName(fieldBeanByDisplay.getColumnName());
|
||||
}
|
||||
|
||||
Map<String, Object> generateSql = generatePageQuerySql(queryColumns, conditionVos, tableName,pageNo,pageSize,orderFieldName,orderKeyWord);
|
||||
String sql = (String) generateSql.get("sql");
|
||||
List<Object> params = (List<Object>) generateSql.get("params");
|
||||
log.info("sql为: " + sql);
|
||||
log.info("参数为: " + JsonUtils.toJSONString(params));
|
||||
JDBCAgent jdbcAgent = new JDBCAgent();
|
||||
List<Object> columns = new ArrayList<>();
|
||||
try {
|
||||
jdbcAgent.execute(sql, params);
|
||||
List list = jdbcAgent.resultSetToList();
|
||||
for (Object o : list) {
|
||||
FormColumn column = new FormColumn();
|
||||
Map<String, Object> columnMap = (Map<String, Object>) o;
|
||||
List<FormFieldVo> vos = new ArrayList<>();
|
||||
for (String key : columnMap.keySet()) {
|
||||
FormFieldVo fieldVo = new FormFieldVo();
|
||||
if (fieldMap4Name.containsKey(key)) {
|
||||
FormFieldBean fieldBean = fieldMap4Name.get(key);
|
||||
fieldVo.setDisplayName(fieldBean.getDisplay());
|
||||
fieldVo.setValue(columnMap.get(key));
|
||||
if(changeEnum){
|
||||
//转换枚举值
|
||||
convert2ShowValue(fieldVo,fieldBean);
|
||||
}
|
||||
vos.add(fieldVo);
|
||||
}
|
||||
}
|
||||
column.setVos(vos);
|
||||
if (columnMap.get("id") != null) {
|
||||
column.setId(columnMap.get("id") + "");
|
||||
}
|
||||
Map<String, Object> fieldsMap = column.getFieldsMap();
|
||||
columns.add(fieldsMap);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(),e);
|
||||
} finally {
|
||||
jdbcAgent.close();
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
||||
public List<Object> queryFormDataPageCondition(String formNo,Boolean changeEnum,List<String> queryColumnVos, List<FormWhereCondition> conditionVos,Integer pageNo,Integer pageSize) throws BusinessException {
|
||||
FormApi4Cap4 formApi4Cap4 = (FormApi4Cap4) AppContext.getBean("formApi4Cap4");
|
||||
FormBean cap4FormBean = formApi4Cap4.getFormByFormCode(formNo);
|
||||
@@ -563,7 +639,7 @@ public class FormDataOperator {
|
||||
break;
|
||||
}
|
||||
}
|
||||
Map<String, Object> generateSql = generateSql(queryColumns, conditionVos, tableName,"sort",pageNo,pageSize);
|
||||
Map<String, Object> generateSql = generateSql(queryColumns, conditionVos, tableName,"sort",null,pageNo,pageSize);
|
||||
String sql = (String) generateSql.get("sql");
|
||||
List<Object> params = (List<Object>) generateSql.get("params");
|
||||
log.info("sql为: " + sql);
|
||||
@@ -625,14 +701,19 @@ public class FormDataOperator {
|
||||
}
|
||||
|
||||
private Map<String, Object> generateSql(List<String> queryColumn, List<FormWhereCondition> conditions, String tableName) {
|
||||
return generateSql( queryColumn, conditions, tableName,null,null,null);
|
||||
return generateSql( queryColumn, conditions, tableName,null,null,null,null);
|
||||
}
|
||||
|
||||
private Map<String, Object> generatePageQuerySql(List<String> queryColumn, List<FormWhereCondition> conditions, String tableName,Integer pageNo,Integer pageSize,String orderField,String orderKeyWord) {
|
||||
return generateSql( queryColumn, conditions, tableName,orderField,orderKeyWord,pageNo,pageSize);
|
||||
}
|
||||
|
||||
|
||||
private Map<String, Object> generatePageQuerySql(List<String> queryColumn, List<FormWhereCondition> conditions, String tableName,Integer pageNo,Integer pageSize) {
|
||||
return generateSql( queryColumn, conditions, tableName,null,pageNo,pageSize);
|
||||
return generateSql( queryColumn, conditions, tableName,null,null,pageNo,pageSize);
|
||||
}
|
||||
|
||||
private Map<String, Object> generateSql(List<String> queryColumn, List<FormWhereCondition> conditions, String tableName,String orderField,Integer pageNo,Integer pageSize) {
|
||||
private Map<String, Object> generateSql(List<String> queryColumn, List<FormWhereCondition> conditions, String tableName,String orderField,String orderKeyWord,Integer pageNo,Integer pageSize) {
|
||||
if (tableName == null) {
|
||||
throw new IllegalArgumentException("tableName cannot be null or empty");
|
||||
}
|
||||
@@ -656,8 +737,11 @@ public class FormDataOperator {
|
||||
|
||||
List<Object> params = new ArrayList<>();
|
||||
sqlBuilder.append(buildWhereClause(conditions,params));
|
||||
String orderType = StringUtils.isBlank(orderKeyWord) ? "ASC" : orderKeyWord;
|
||||
if(orderField == null) {
|
||||
sqlBuilder.append(" order by start_date desc");
|
||||
sqlBuilder.append(" order by start_date " + orderType);
|
||||
}else {
|
||||
sqlBuilder.append(" order by " + orderField + " " +orderType);
|
||||
}
|
||||
if(pageNo != null && pageSize != null) {
|
||||
sqlBuilder.append(" limit " + pageSize + " offset " + (pageNo - 1) * pageSize);
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.seeyon.ctp.common.AppContext;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class SealDocSyncJob extends AbstractQuartzTask {
|
||||
@@ -27,22 +28,24 @@ public class SealDocSyncJob extends AbstractQuartzTask {
|
||||
@Override
|
||||
public String taskRun(String s) throws Exception {
|
||||
log.info("开始执行印章同步任务");
|
||||
syncSeals();
|
||||
List<String> appIds = tokenCacheManager.getAppIds();
|
||||
for (String appId : appIds) {
|
||||
syncSeals(appId);
|
||||
}
|
||||
log.info("印章同步任务完成");
|
||||
return "";
|
||||
}
|
||||
|
||||
private void syncSeals() {
|
||||
String orgId = configProvider.getBizConfigByKey(RentConstants.eSignOrgId);
|
||||
private void syncSeals(String appId) {
|
||||
String host = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST);
|
||||
Integer pageNum = 1;
|
||||
Integer pageSize = 20;
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(tokenCacheManager.getToken());
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId);
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId));
|
||||
EsignBaseResp esignBaseResp = null;
|
||||
Map<String,Object> dataMap = null;
|
||||
do {
|
||||
String url = host + EsignApiUrl.SEAL_QUERY_URL + "?" + "orgId=" + orgId + "&pageNum=" + (pageNum++) + "&pageSize=" + pageSize;
|
||||
String url = host + EsignApiUrl.SEAL_QUERY_URL + "?" + "orgId=" + tokenCacheManager.getOrgNameByAppId(appId) + "&pageNum=" + (pageNum++) + "&pageSize=" + pageSize;
|
||||
String respStr = HttpClient.httpGet(url, esignApiHeader.convert2Headers(),"UTF-8");
|
||||
esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
if(esignBaseResp.getCode() != 0) {
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.seeyon.apps.src_rent.po.Signer;
|
||||
import com.seeyon.apps.src_rent.service.EsignByTemplateService;
|
||||
import com.seeyon.apps.src_rent.service.EsignByUploadFileService;
|
||||
import com.seeyon.apps.src_rent.service.SignLinkService;
|
||||
import com.seeyon.apps.src_rent.service.TokenCacheManager;
|
||||
import com.seeyon.cap4.form.bean.FormDataMasterBean;
|
||||
import com.seeyon.cap4.form.bean.FormFieldBean;
|
||||
import com.seeyon.cap4.form.service.CAP4FormManager;
|
||||
@@ -43,6 +44,7 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
private EsignByUploadFileService uploadFileService = (EsignByUploadFileService) AppContext.getBean("qcEsignByUploadFileService");
|
||||
private EsignByTemplateService templateService = (EsignByTemplateService) AppContext.getBean("qcEsignByTemplateService");
|
||||
private SignLinkService signLinkService = (SignLinkService) AppContext.getBean("qcSignLinkService");
|
||||
private TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
@Override
|
||||
public String getPluginId() {
|
||||
@@ -59,13 +61,17 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
SuperNodeContext context = new SuperNodeContext();
|
||||
context.setNeedSave(true);
|
||||
log.info("进入 E签宝多方签署集成超级节点");
|
||||
|
||||
try {
|
||||
Map<String, Object> signParams = buildSignParams(formDataVo, formDataMasterBean, true);
|
||||
String appId = null;
|
||||
FieldDataVo signOrgData = formDataVo.getFieldData("签订单位");
|
||||
if(signOrgData != null) {
|
||||
appId = tokenCacheManager.getAppIdByOrgName(signOrgData.getStringValue());
|
||||
}
|
||||
Map<String, Object> signParams = buildSignParams(appId,formDataVo, formDataMasterBean, true);
|
||||
if (signParams == null) throw new RuntimeException("签署参数构建失败");
|
||||
EsignParamRecordUtils.saveEsignParamRecord(signParams);
|
||||
String esignFlowId = templateService.createBySignTemplate(signParams);
|
||||
signLinkService.saveGetLinkParam(formDataVo, formDataMasterBean,esignFlowId);
|
||||
String esignFlowId = templateService.createBySignTemplate(signParams,appId);
|
||||
signLinkService.saveGetLinkParam(appId,formDataVo, formDataMasterBean,esignFlowId);
|
||||
log.info("E签宝签署流程ID: " + esignFlowId + " , OA超级节点ID:" + formDataVo.getToken());
|
||||
log.info("E签宝多方签署合同已发送: " + esignFlowId);
|
||||
formDataVo.getNewFieldDataMap().put("电子签合同流程ID", esignFlowId);
|
||||
@@ -77,12 +83,13 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> buildSignFlowConfig(FormDataVo formDataVo,FormDataMasterBean masterBean) throws Exception {
|
||||
private Map<String, Object> buildSignFlowConfig(String appId,FormDataVo formDataVo,FormDataMasterBean masterBean) throws Exception {
|
||||
String contractName = getStringField(formDataVo, CONTRACT_NAME_FIELD);
|
||||
if (contractName == null) throw new RuntimeException("合同名称不能为空");
|
||||
String formId = formDataVo.getToken() +"_" + formDataVo.getId();
|
||||
Long enumId = masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getEnumId();
|
||||
String signCallBackUrl = configProvider.getBizConfigByKey(RentConstants.OA_HOST) + "/seeyon/esigncallback.do?method=callback&formId=" + formId + "&tablename=" + masterBean.getFormTable().getTableName() + "&updatefield=" + masterBean.getFormTable().getFieldBeanByDisplay("盖章后合同附件").getColumnName() + "&statusfield=" + masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getColumnName() + "_" + enumId;
|
||||
String signCallBackUrl = configProvider.getBizConfigByKey(RentConstants.OA_HOST) + "/seeyon/esigncallback.do?method=callback&formId=" + formId + "&tablename=" + masterBean.getFormTable().getTableName() + "&updatefield=" + masterBean.getFormTable().getFieldBeanByDisplay("盖章后合同附件").getColumnName()
|
||||
+ "&statusfield=" + masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getColumnName() + "_" + enumId + "&xId=" + appId;;
|
||||
Map<String, Object> config = new HashMap<>();
|
||||
config.put("signFlowTitle", contractName);
|
||||
config.put("autoFinish", true);
|
||||
@@ -101,8 +108,8 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
return config;
|
||||
}
|
||||
|
||||
private List<Signer> buildSigners(FormDataVo formDataVo, String fileId) throws Exception {
|
||||
List<Object> positions = uploadFileService.getSignPosition(fileId);
|
||||
private List<Signer> buildSigners(String appId,FormDataVo formDataVo, String fileId) throws Exception {
|
||||
List<Object> positions = uploadFileService.getSignPosition(appId,fileId);
|
||||
List<SignFieldPosition> bPositions = extractPosition(positions, configProvider.getBizConfigByKey(RentConstants.bSignPositionKeyword));
|
||||
List<SignFieldPosition> aPositions = extractPosition(positions, configProvider.getBizConfigByKey(RentConstants.aSignPositionKeyword));
|
||||
List<SignFieldPosition> lpPositions = extractPosition(positions, configProvider.getBizConfigByKey(RentConstants.lpSignPositionKeyword));
|
||||
@@ -154,13 +161,13 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> buildSignParams(FormDataVo formDataVo, FormDataMasterBean formDataMasterBean, boolean byFile) throws Exception {
|
||||
private Map<String, Object> buildSignParams(String appId,FormDataVo formDataVo, FormDataMasterBean formDataMasterBean, boolean byFile) throws Exception {
|
||||
log.info("开始构建签署方参数");
|
||||
String fileId = null;
|
||||
if (byFile) {
|
||||
String attachmentId = getStringField(formDataVo, CONTRACT_ATTACHMENT_FIELD);
|
||||
if (attachmentId == null) throw new RuntimeException("合同附件不能为空");
|
||||
fileId = uploadFileService.uploadFileToEsign(attachmentId);
|
||||
fileId = uploadFileService.uploadFileToEsign(appId,attachmentId);
|
||||
if(fileId == null) {
|
||||
throw new RuntimeException("合同附件上传E签宝失败");
|
||||
}
|
||||
@@ -171,8 +178,8 @@ public class EsignMultipleSignerNode extends ACommonSuperNode {
|
||||
Thread.sleep(1000);
|
||||
List<Object> docs = new ArrayList<>();
|
||||
docs.add(docMap);
|
||||
Map<String, Object> signFlowConfig = buildSignFlowConfig(formDataVo, formDataMasterBean);
|
||||
List<Signer> signers = buildSigners(formDataVo, fileId);
|
||||
Map<String, Object> signFlowConfig = buildSignFlowConfig(appId,formDataVo, formDataMasterBean);
|
||||
List<Signer> signers = buildSigners(appId,formDataVo, fileId);
|
||||
Map<String, Object> signParams = new HashMap<>();
|
||||
signParams.put("signFlowConfig", signFlowConfig);
|
||||
signParams.put("signers", signers);
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.seeyon.apps.src_rent.po.SignFieldPosition;
|
||||
import com.seeyon.apps.src_rent.po.Signer;
|
||||
import com.seeyon.apps.src_rent.service.EsignByTemplateService;
|
||||
import com.seeyon.apps.src_rent.service.EsignByUploadFileService;
|
||||
import com.seeyon.apps.src_rent.service.TokenCacheManager;
|
||||
import com.seeyon.cap4.form.bean.FormDataMasterBean;
|
||||
import com.seeyon.cap4.form.bean.FormFieldBean;
|
||||
import com.seeyon.cap4.form.service.CAP4FormManager;
|
||||
@@ -43,6 +44,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
private EsignByUploadFileService uploadFileService = (EsignByUploadFileService) AppContext.getBean("qcEsignByUploadFileService");
|
||||
private EsignByTemplateService templateService = (EsignByTemplateService) AppContext.getBean("qcEsignByTemplateService");
|
||||
private OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager");
|
||||
private TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
@Override
|
||||
public String getPluginId() {
|
||||
@@ -61,10 +63,15 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
log.info("进入 E签宝单方签署集成超级节点");
|
||||
|
||||
try {
|
||||
Map<String, Object> signParams = buildSignParams(formDataVo, formDataMasterBean, true);
|
||||
String appId = null;
|
||||
FieldDataVo signOrgData = formDataVo.getFieldData("签订单位");
|
||||
if(signOrgData != null) {
|
||||
appId = tokenCacheManager.getAppIdByOrgName(signOrgData.getStringValue());
|
||||
}
|
||||
Map<String, Object> signParams = buildSignParams(appId,formDataVo, formDataMasterBean, true);
|
||||
if (signParams == null) throw new RuntimeException("签署参数构建失败");
|
||||
EsignParamRecordUtils.saveEsignParamRecord(signParams);
|
||||
String esignFlowId = templateService.createBySignTemplate(signParams);
|
||||
String esignFlowId = templateService.createBySignTemplate(signParams,appId);
|
||||
log.info("E签宝签署流程ID: " + esignFlowId + " , OA超级节点ID:" + formDataVo.getToken());
|
||||
log.info("E签宝单方签署合同已发送: " + esignFlowId);
|
||||
formDataVo.getNewFieldDataMap().put("电子签合同流程ID", esignFlowId);
|
||||
@@ -76,12 +83,13 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> buildSignFlowConfig(FormDataVo formDataVo,FormDataMasterBean masterBean) throws Exception {
|
||||
private Map<String, Object> buildSignFlowConfig(String appId,FormDataVo formDataVo,FormDataMasterBean masterBean) throws Exception {
|
||||
String contractName = getStringField(formDataVo, CONTRACT_NAME_FIELD);
|
||||
if (contractName == null) throw new RuntimeException("合同名称不能为空");
|
||||
String formId = formDataVo.getToken() +"_" + formDataVo.getId();
|
||||
Long enumId = masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getEnumId();
|
||||
String signCallBackUrl = configProvider.getBizConfigByKey(RentConstants.OA_HOST) + "/seeyon/esigncallback.do?method=callback&formId=" + formId + "&tablename=" + masterBean.getFormTable().getTableName() + "&updatefield=" + masterBean.getFormTable().getFieldBeanByDisplay("盖章后合同附件").getColumnName() + "&statusfield=" + masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getColumnName() + "_" + enumId;
|
||||
String signCallBackUrl = configProvider.getBizConfigByKey(RentConstants.OA_HOST) + "/seeyon/esigncallback.do?method=callback&formId=" + formId + "&tablename=" + masterBean.getFormTable().getTableName() + "&updatefield=" + masterBean.getFormTable().getFieldBeanByDisplay("盖章后合同附件").getColumnName() + "&statusfield="
|
||||
+ masterBean.getFormTable().getFieldBeanByDisplay("签署状态").getColumnName() + "_" + enumId + "&xId=" + appId;
|
||||
Map<String, Object> config = new HashMap<>();
|
||||
config.put("signFlowTitle", contractName);
|
||||
config.put("autoFinish", true);
|
||||
@@ -95,7 +103,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
return config;
|
||||
}
|
||||
|
||||
private List<Signer> buildOnlyASigner(FormDataVo formDataVo, String fileId) throws Exception {
|
||||
private List<Signer> buildOnlyASigner(String appId,FormDataVo formDataVo, String fileId) throws Exception {
|
||||
|
||||
SignFieldPosition aQiFengposition = new SignFieldPosition();
|
||||
aQiFengposition.setAcrossPageMode("ALL");
|
||||
@@ -115,7 +123,7 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
throw new RuntimeException("甲方签署经办人为空");
|
||||
}
|
||||
String psnMobile = getStringField(formDataVo,"甲方签署经办人联系方式");
|
||||
String orgName = configProvider.getBizConfigByKey(RentConstants.UNITNAME);
|
||||
String orgName = tokenCacheManager.getOrgNameByAppId(appId);
|
||||
List<SignFieldPosition> pos = new ArrayList<>();
|
||||
Signer aSigner = createOrgSigner(
|
||||
fileId,orgName, pos, null, null, null, psnMobile, psnName, null,false
|
||||
@@ -129,13 +137,13 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
return signers;
|
||||
}
|
||||
|
||||
private Map<String, Object> buildSignParams(FormDataVo formDataVo, FormDataMasterBean formDataMasterBean, boolean byFile) throws Exception {
|
||||
private Map<String, Object> buildSignParams(String appId,FormDataVo formDataVo, FormDataMasterBean formDataMasterBean, boolean byFile) throws Exception {
|
||||
log.info("开始构建签署方参数");
|
||||
String fileId = null;
|
||||
if (byFile) {
|
||||
String attachmentId = getStringField(formDataVo, CONTRACT_ATTACHMENT_FIELD);
|
||||
if (attachmentId == null) throw new RuntimeException("合同附件不能为空");
|
||||
fileId = uploadFileService.uploadFileToEsign(attachmentId);
|
||||
fileId = uploadFileService.uploadFileToEsign(appId,attachmentId);
|
||||
if(fileId == null) {
|
||||
throw new RuntimeException("合同附件上传E签宝失败");
|
||||
}
|
||||
@@ -146,8 +154,8 @@ public class EsignOneSignerNode extends ACommonSuperNode {
|
||||
docMap.put("fileId", fileId);
|
||||
List<Object> docs = new ArrayList<>();
|
||||
docs.add(docMap);
|
||||
Map<String, Object> signFlowConfig = buildSignFlowConfig(formDataVo, formDataMasterBean);
|
||||
List<Signer> signers = buildOnlyASigner(formDataVo, fileId);
|
||||
Map<String, Object> signFlowConfig = buildSignFlowConfig(appId,formDataVo, formDataMasterBean);
|
||||
List<Signer> signers = buildOnlyASigner(appId,formDataVo, fileId);
|
||||
Map<String, Object> signParams = new HashMap<>();
|
||||
signParams.put("signFlowConfig", signFlowConfig);
|
||||
signParams.put("signers", signers);
|
||||
|
||||
@@ -15,16 +15,17 @@ import java.util.Map;
|
||||
public class EsignAuthService {
|
||||
|
||||
private RentConfigProvider configProvider = (RentConfigProvider) AppContext.getBean("rentConfigProvider");
|
||||
private TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
public void personAuth(Map<String,Object> authParams) throws Exception {
|
||||
public void personAuth(Map<String,Object> authParams,String appId) throws Exception {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
String jsonBody = JsonUtils.toJSONString(authParams);
|
||||
esignApiHeader.appId(configProvider.getBizConfigByKey(RentConstants.APP_ID))
|
||||
esignApiHeader.appId(appId)
|
||||
.httpMethod("POST")
|
||||
.heads("")
|
||||
.pathAndParameters(EsignApiUrl.PERSON_AUTH_URL)
|
||||
.contentMD5(jsonBody)
|
||||
.signature(configProvider.getBizConfigByKey(RentConstants.APP_SECRET));
|
||||
.signature(tokenCacheManager.getSecretByAppId(appId));
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.PERSON_AUTH_URL;
|
||||
String respStr = HttpClient.httpPostRaw(url, jsonBody, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
|
||||
@@ -35,10 +35,10 @@ public class EsignByTemplateService {
|
||||
}
|
||||
}
|
||||
|
||||
public String createBySignTemplate(Map<String,Object> params) throws Exception {
|
||||
public String createBySignTemplate(Map<String,Object> params,String appId) throws Exception {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
String jsonBody = JsonCleaner.removeEmptyObjects(JsonUtils.toJSONString(params));
|
||||
esignApiHeader.token(tokenCacheManager.getToken()).appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId)).appId(appId);
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.SIGN_BY_FILE_URL;
|
||||
log.info("合同发起入参: " + jsonBody);
|
||||
String respStr = HttpClient.httpPostRaw(url, jsonBody, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.seeyon.apps.src_rent.utils.FileUtil;
|
||||
import com.seeyon.apps.src_rent.utils.HttpClient;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -27,10 +28,10 @@ public class EsignByUploadFileService {
|
||||
protected TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
|
||||
public Map<String,Object> getDownloadFileInfo(String flowId) throws Exception {
|
||||
public Map<String,Object> getDownloadFileInfo(String flowId,String appId) throws Exception {
|
||||
String reqPath = EsignApiUrl.CONTRACT_DOWNLOAD_URL.replace("{signFlowId}", flowId);
|
||||
String getDownloadUrl = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + reqPath;
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(configProvider.getBizConfigByKey(RentConstants.APP_ID)).token(tokenCacheManager.getToken());
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId).token(tokenCacheManager.getToken(appId));
|
||||
String respStr = HttpClient.httpGet(getDownloadUrl, esignApiHeader.convert2Headers(), null);
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
if(esignBaseResp.getCode() != 0 || esignBaseResp.getData() == null){
|
||||
@@ -45,11 +46,11 @@ public class EsignByUploadFileService {
|
||||
return fileInfo;
|
||||
}
|
||||
|
||||
public GetUploadUrlResp getUploadFileUrl(String fileName, String fileMd5, Long fileSize, boolean convert2Pdf) throws Exception {
|
||||
public GetUploadUrlResp getUploadFileUrl(String appId,String fileName, String fileMd5, Long fileSize, boolean convert2Pdf) throws Exception {
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.GET_UPLOAD_FILE_URL;
|
||||
GetUploadUrlResp resp = new GetUploadUrlResp();
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(tokenCacheManager.getToken());
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId);
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId));
|
||||
EsignFileUploadParams params = new EsignFileUploadParams();
|
||||
params.setFileName(fileName);
|
||||
params.setContentMd5(fileMd5);
|
||||
@@ -70,17 +71,29 @@ public class EsignByUploadFileService {
|
||||
}
|
||||
|
||||
|
||||
public List<Object> getSignPosition(String fileId) throws Exception {
|
||||
public List<Object> getSignPosition(String appId,String fileId) throws Exception {
|
||||
String reqPath = EsignApiUrl.SIGN_POSITION_URL.replace("{fileId}", fileId);
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + reqPath;
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId);
|
||||
List<String> keywords = new ArrayList<>();
|
||||
keywords.add(configProvider.getBizConfigByKey(RentConstants.bSignPositionKeyword));
|
||||
keywords.add(configProvider.getBizConfigByKey(RentConstants.aSignPositionKeyword));
|
||||
keywords.add(configProvider.getBizConfigByKey(RentConstants.lpSignPositionKeyword));
|
||||
String aSignPosKeyword = configProvider.getBizConfigByKey(RentConstants.aSignPositionKeyword);
|
||||
String bSignPosKeyword = configProvider.getBizConfigByKey(RentConstants.bSignPositionKeyword);
|
||||
String lpSignPosKeyword = configProvider.getBizConfigByKey(RentConstants.lpSignPositionKeyword);
|
||||
if(StringUtils.isNotBlank(aSignPosKeyword)){
|
||||
keywords.add(aSignPosKeyword);
|
||||
}
|
||||
if(StringUtils.isNotBlank(bSignPosKeyword)){
|
||||
keywords.add(bSignPosKeyword);
|
||||
}
|
||||
if(StringUtils.isNotBlank(lpSignPosKeyword)) {
|
||||
keywords.add(lpSignPosKeyword);
|
||||
}
|
||||
Map<String,Object> params = new HashMap<>();
|
||||
if(keywords.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
params.put("keywords",keywords);
|
||||
esignApiHeader.token(tokenCacheManager.getToken());
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId));
|
||||
String respStr = HttpClient.httpPostRaw(url,JsonUtils.toJSONString(params),esignApiHeader.convert2Headers(),null);
|
||||
Map map = JsonUtils.parseObject(respStr, Map.class);
|
||||
Map<String,Object> data = (Map<String,Object>) map.get("data");
|
||||
@@ -92,7 +105,7 @@ public class EsignByUploadFileService {
|
||||
return resList;
|
||||
}
|
||||
|
||||
public String uploadFileToEsign(String refId) throws Exception {
|
||||
public String uploadFileToEsign(String appId,String refId) throws Exception {
|
||||
String tempDir = System.getProperty("java.io.tmpdir");
|
||||
File file = null;
|
||||
FileUtil fileUtil = new FileUtil();
|
||||
@@ -100,7 +113,7 @@ public class EsignByUploadFileService {
|
||||
List<String> paths = fileUtil.fieldFileDownload(Long.parseLong(refId), tempDir + File.separator + "oafile" + File.separator);
|
||||
file = new File(paths.get(0));
|
||||
String contentMD5 = EsignByUploadFileService.getFileContentMD5(paths.get(0));
|
||||
GetUploadUrlResp uploadResp = getUploadFileUrl(file.getName(), contentMD5, file.length(),true);
|
||||
GetUploadUrlResp uploadResp = getUploadFileUrl(appId,file.getName(), contentMD5, file.length(),true);
|
||||
uploadFile(uploadResp.getFileUploadUrl(), contentMD5, file.getName(), paths.get(0));
|
||||
return uploadResp.getFileId();
|
||||
}finally {
|
||||
|
||||
@@ -26,12 +26,12 @@ public class EsignFileTemplateService {
|
||||
private String getOrgId(String appId) {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
try {
|
||||
esignApiHeader.token(tokenCacheManager.getToken()).appId(appId);
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId)).appId(appId);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//获取orgId
|
||||
String queryStr = EsignApiUrl.QUERY_ORGINFO + "?orgName=" + configProvider.getBizConfigByKey(RentConstants.UNITNAME);
|
||||
String queryStr = EsignApiUrl.QUERY_ORGINFO + "?orgName=" + tokenCacheManager.getOrgNameByAppId(appId);
|
||||
String reqUrl = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + queryStr;
|
||||
String orgInfoRespStr = HttpClient.httpGet(reqUrl, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp orgInfoResp = JsonUtils.parseObject(orgInfoRespStr, EsignBaseResp.class);
|
||||
@@ -77,7 +77,7 @@ public class EsignFileTemplateService {
|
||||
//获取模板详细信息
|
||||
public Map<String,Object> getTemplateDetail(String appId,String signTemplateId,String orgId) {
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.QUERY_TEMPLATE_DETAIL_URL + "?" +"orgId=" + orgId + "&signTemplateId=" + signTemplateId;
|
||||
EsignApiHeader apiHeader = EsignApiHeader.build().token(tokenCacheManager.getToken()).appId(appId);
|
||||
EsignApiHeader apiHeader = EsignApiHeader.build().token(tokenCacheManager.getToken(appId)).appId(appId);
|
||||
String resp = HttpClient.httpGet(url, apiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(resp, EsignBaseResp.class);
|
||||
Map<String,Object> data = (Map<String, Object>) esignBaseResp.getData();
|
||||
@@ -87,7 +87,7 @@ public class EsignFileTemplateService {
|
||||
public Map<String,Object> queryTemplates(Integer pageNo,String appId) throws Exception {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId);
|
||||
String queryStr = EsignApiUrl.QUERY_TEMPLATES_URL + "?" + "orgId=" + obtainOrgId(appId) + "&pageNum=" + pageNo + "&pageSize=" + 20 + "&status=" + 1;
|
||||
esignApiHeader.token(tokenCacheManager.getToken());
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId));
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + queryStr;
|
||||
String templateListRespStr = HttpClient.httpGet(url, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp templateListResp = JsonUtils.parseObject(templateListRespStr, EsignBaseResp.class);
|
||||
@@ -101,15 +101,15 @@ public class EsignFileTemplateService {
|
||||
}
|
||||
|
||||
public String getCompareDetailUrl(String appId,String templateRefId,String contractRefId) throws Exception {
|
||||
String templateFileId = uploadFileService.uploadFileToEsign(templateRefId);
|
||||
String contractFileId = uploadFileService.uploadFileToEsign(contractRefId);
|
||||
String templateFileId = uploadFileService.uploadFileToEsign(appId,templateRefId);
|
||||
String contractFileId = uploadFileService.uploadFileToEsign(appId,contractRefId);
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.CONTRACT_COMPARE_GETURL;
|
||||
Map<String,String> params = new HashMap<>();
|
||||
params.put("standardFileId",templateFileId);
|
||||
params.put("comparativeFileId",contractFileId);
|
||||
String jsonString = JsonUtils.toJSONString(params);
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build().appId(appId);
|
||||
esignApiHeader.token(tokenCacheManager.getToken());
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId));
|
||||
String respStr = HttpClient.httpPostRaw(url, jsonString, esignApiHeader.convert2Headers(), null);
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
log.info("调用获取合同比对链接接口返回值: " + JsonUtils.toJSONString(esignBaseResp));
|
||||
|
||||
@@ -29,6 +29,7 @@ public class SealService {
|
||||
private static final Log log = LogFactory.getLog(SealService.class);
|
||||
private RentConfigProvider configProvider = (RentConfigProvider) AppContext.getBean("rentConfigProvider");
|
||||
private FormFactory formFactory;
|
||||
private TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
public FormFactory getFormFactory() {
|
||||
if (formFactory == null) {
|
||||
@@ -37,9 +38,9 @@ public class SealService {
|
||||
return formFactory;
|
||||
}
|
||||
|
||||
public void grantSeal(Map<String, Object> params) throws Exception {
|
||||
public void grantSeal(String appId,Map<String, Object> params) throws Exception {
|
||||
JsonObject reqParams = new JsonObject();
|
||||
String sealId = getSealId((String) params.get("orgId"), (String) params.get("sealName"));
|
||||
String sealId = getSealId(appId,(String) params.get("orgId"), (String) params.get("sealName"));
|
||||
reqParams.put("sealId", sealId);
|
||||
List<String> authorizedPsnIds = new ArrayList<>();
|
||||
authorizedPsnIds.add((String) params.get("accountId"));
|
||||
@@ -52,27 +53,27 @@ public class SealService {
|
||||
sealAuthScope.put("templateIds", templateIds);
|
||||
reqParams.put("sealAuthScope", sealAuthScope);
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
esignApiHeader.appId(configProvider.getBizConfigByKey(RentConstants.APP_ID))
|
||||
esignApiHeader.appId(appId)
|
||||
.httpMethod("POST")
|
||||
.heads("")
|
||||
.pathAndParameters(EsignApiUrl.SEAL_GRANT_URL)
|
||||
.contentMD5(reqParams.toString())
|
||||
.signature(configProvider.getBizConfigByKey(RentConstants.APP_SECRET));
|
||||
.signature(tokenCacheManager.getSecretByAppId(appId));
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.SEAL_GRANT_URL;
|
||||
HttpClient.httpPostRaw(url, reqParams.toString(), esignApiHeader.convert2Headers(), null);
|
||||
}
|
||||
|
||||
private String getSealId(String orgId, String sealName) throws Exception {
|
||||
private String getSealId(String appId,String orgId, String sealName) throws Exception {
|
||||
String host = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST);
|
||||
int pageNo = 1;
|
||||
int pageSize = 20;
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
esignApiHeader.appId(configProvider.getBizConfigByKey(RentConstants.APP_ID))
|
||||
esignApiHeader.appId(appId)
|
||||
.httpMethod("GET")
|
||||
.heads("")
|
||||
.pathAndParameters(EsignApiUrl.SEAL_QUERY_URL + "?" + HttpClient.sortQueryString("orgId=" + orgId + "&pageNo=" + pageNo + "&pageSize=" + pageSize))
|
||||
.contentMD5("")
|
||||
.signature(configProvider.getBizConfigByKey(RentConstants.APP_SECRET));
|
||||
.signature(tokenCacheManager.getSecretByAppId(appId));
|
||||
String url = host + EsignApiUrl.SEAL_QUERY_URL + "?orgId=" + orgId + "&pageNo=" + pageNo + "&pageSize=" + pageSize;
|
||||
String respStr = HttpClient.httpGet(url, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
|
||||
@@ -27,7 +27,7 @@ public class SignLinkService {
|
||||
private RentConfigProvider configProvider = (RentConfigProvider) AppContext.getBean("rentConfigProvider");
|
||||
private TokenCacheManager tokenCacheManager = (TokenCacheManager) AppContext.getBean("qcTokenCacheManager");
|
||||
|
||||
public void saveGetLinkParam(FormDataVo formDataVo, FormDataMasterBean formDataMasterBean,String eFlowId) {
|
||||
public void saveGetLinkParam(String appId,FormDataVo formDataVo, FormDataMasterBean formDataMasterBean,String eFlowId) {
|
||||
try {
|
||||
String bSignerType = formDataVo.getFieldData("乙方签署类型").getStringValue();
|
||||
String psnAccount = null;
|
||||
@@ -44,7 +44,7 @@ public class SignLinkService {
|
||||
param.put("signFlowId",eFlowId);
|
||||
param.put("operator",operator);
|
||||
String paramStr = JsonUtils.toJSONString(param);
|
||||
saveDb(paramStr,eFlowId,contractNo);
|
||||
saveDb(paramStr,eFlowId,appId,contractNo);
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage(),e);
|
||||
}
|
||||
@@ -65,8 +65,8 @@ public class SignLinkService {
|
||||
}
|
||||
}
|
||||
|
||||
private void saveDb(String jsonStr,String eFlowId,String contractNo) {
|
||||
String sqlInsert = "insert into SIGN_LINK_PARAM (id,param,eFlowId,contractNo) values (?,?,?,?)";
|
||||
private void saveDb(String jsonStr,String eFlowId,String appId,String contractNo) {
|
||||
String sqlInsert = "insert into SIGN_LINK_PARAM (id,param,eFlowId,contractNo,appId) values (?,?,?,?,?)";
|
||||
String sqlQuery = "select * FROM SIGN_LINK_PARAM where contractNo = ?";
|
||||
String sqlUpdate = "update SIGN_LINK_PARAM set param = ?,eFlowId = ? where id = ?";
|
||||
JDBCAgent jdbcAgent = new JDBCAgent();
|
||||
@@ -83,6 +83,7 @@ public class SignLinkService {
|
||||
param.add(jsonStr);
|
||||
param.add(eFlowId);
|
||||
param.add(contractNo);
|
||||
param.add(appId);
|
||||
jdbcAgent.execute(sqlInsert,param);
|
||||
}else {
|
||||
param.clear();
|
||||
@@ -110,12 +111,13 @@ public class SignLinkService {
|
||||
if(list.size() > 0) {
|
||||
Map<String,Object> tempMap = (Map<String, Object>) list.get(0);
|
||||
String paramStr = (String)tempMap.get("param");
|
||||
if(!checkContractVaild(eFlowId)) {
|
||||
String appId = (String)tempMap.get("appid");
|
||||
if(!checkContractVaild(eFlowId,appId)) {
|
||||
throw new RuntimeException("当前合同无效");
|
||||
}
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.SIGN_LINK_GET_URL.replace("{signFlowId}",eFlowId);
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
esignApiHeader.token(tokenCacheManager.getToken()).appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId)).appId(appId);
|
||||
String respStr = HttpClient.httpPostRaw(url, paramStr,esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
Map<String,Object> dataMap = (Map<String, Object>) esignBaseResp.getData();
|
||||
@@ -134,9 +136,9 @@ public class SignLinkService {
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean checkContractVaild(String eFlowId) {
|
||||
private boolean checkContractVaild(String eFlowId,String appId) {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
esignApiHeader.token(tokenCacheManager.getToken()).appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(tokenCacheManager.getToken(appId)).appId(appId);
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.SIGN_FLOW_QUERY.replace("{signFlowId}",eFlowId);
|
||||
String respStr = HttpClient.httpGet(url, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
|
||||
@@ -10,34 +10,29 @@ import com.seeyon.apps.src_rent.po.EsignToken;
|
||||
import com.seeyon.apps.src_rent.utils.HttpClient;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TokenCacheManager {
|
||||
|
||||
private RentConfigProvider configProvider = (RentConfigProvider) AppContext.getBean("rentConfigProvider");
|
||||
private final AtomicReference<EsignToken> tokenRef = new AtomicReference<>();
|
||||
private final ConcurrentHashMap<String, EsignToken> tokenRef = new ConcurrentHashMap<>();
|
||||
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
|
||||
private static final long CHECK_INTERVAL = 2 * 60 * 60 * 1000; // 120分钟检查一次
|
||||
|
||||
public TokenCacheManager() {
|
||||
// 启动定期检查任务
|
||||
scheduler.scheduleAtFixedRate(this::checkTokenExpiry,
|
||||
CHECK_INTERVAL, CHECK_INTERVAL, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
private boolean checkExpired(String token) {
|
||||
private boolean checkExpired(String token,String appId) {
|
||||
EsignApiHeader esignApiHeader = EsignApiHeader.build();
|
||||
try {
|
||||
esignApiHeader.token(token).appId(configProvider.getBizConfigByKey(RentConstants.APP_ID));
|
||||
esignApiHeader.token(token).appId(appId);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//获取orgId
|
||||
String queryStr = EsignApiUrl.QUERY_ORGINFO + "?orgName=" + configProvider.getBizConfigByKey(RentConstants.UNITNAME);
|
||||
String queryStr = EsignApiUrl.QUERY_ORGINFO + "?orgName=" + getOrgNameByAppId(appId);
|
||||
String reqUrl = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + queryStr;
|
||||
String orgInfoRespStr = HttpClient.httpGet(reqUrl, esignApiHeader.convert2Headers(), "UTF-8");
|
||||
EsignBaseResp orgInfoResp = JsonUtils.parseObject(orgInfoRespStr, EsignBaseResp.class);
|
||||
@@ -47,24 +42,24 @@ public class TokenCacheManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
EsignToken current = tokenRef.get();
|
||||
if (current != null && !checkExpired(current.getTokenStr())) {
|
||||
public String getToken(String appId) {
|
||||
EsignToken current = tokenRef.get(appId);
|
||||
if (current != null && !checkExpired(current.getTokenStr(),appId)) {
|
||||
return current.getTokenStr();
|
||||
}
|
||||
return refreshToken();
|
||||
return refreshToken(appId);
|
||||
}
|
||||
|
||||
private String refreshToken() {
|
||||
EsignToken newToken = fetchNewToken();
|
||||
tokenRef.set(newToken);
|
||||
private String refreshToken(String appId) {
|
||||
EsignToken newToken = fetchNewToken(appId);
|
||||
tokenRef.put(appId,newToken);
|
||||
return newToken.getTokenStr();
|
||||
}
|
||||
|
||||
private void checkTokenExpiry() {
|
||||
EsignToken current = tokenRef.get();
|
||||
private void checkTokenExpiry(String appId) {
|
||||
EsignToken current = tokenRef.get(appId);
|
||||
if (current != null && isTokenExpired(current)) {
|
||||
refreshToken();
|
||||
refreshToken(appId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,9 +67,9 @@ public class TokenCacheManager {
|
||||
return System.currentTimeMillis() >= token.getTtl();
|
||||
}
|
||||
|
||||
private EsignToken fetchNewToken() {
|
||||
private EsignToken fetchNewToken(String appId) {
|
||||
// 实际获取token的逻辑
|
||||
String queryStr = "?appId=" + configProvider.getBizConfigByKey(RentConstants.APP_ID) + "&secret=" + configProvider.getBizConfigByKey(RentConstants.APP_SECRET) + "&grantType=client_credentials";
|
||||
String queryStr = "?appId=" + appId + "&secret=" + getSecretByAppId(appId) + "&grantType=client_credentials";
|
||||
String url = configProvider.getBizConfigByKey(RentConstants.ESIGN_HOST) + EsignApiUrl.TOKEN_GET_URL + queryStr;
|
||||
String respStr = HttpClient.httpGet(url, null, null);
|
||||
EsignBaseResp esignBaseResp = JsonUtils.parseObject(respStr, EsignBaseResp.class);
|
||||
@@ -96,4 +91,32 @@ public class TokenCacheManager {
|
||||
scheduler.shutdown();
|
||||
}
|
||||
|
||||
public String getOrgNameByAppId(String appId) {
|
||||
String configMap = configProvider.getBizConfigByKey(RentConstants.ESIGN_APP_UNITMAP);
|
||||
Map<String,String> map = JsonUtils.parseObject(configMap, Map.class);
|
||||
return map.get(appId);
|
||||
}
|
||||
|
||||
public String getSecretByAppId(String appId) {
|
||||
String configMap = configProvider.getBizConfigByKey(RentConstants.ESIGN_APP_SECRETMAP);
|
||||
Map<String,String> map = JsonUtils.parseObject(configMap, Map.class);
|
||||
return map.get(appId);
|
||||
}
|
||||
|
||||
public String getAppIdByOrgName(String orgName) {
|
||||
String configMap = configProvider.getBizConfigByKey(RentConstants.ESIGN_APP_UNITMAP);
|
||||
Map<String,String> map = JsonUtils.parseObject(configMap, Map.class);
|
||||
for (String key : map.keySet()) {
|
||||
if(map.get(key).equals(orgName)) {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> getAppIds() {
|
||||
String configMap = configProvider.getBizConfigByKey(RentConstants.ESIGN_APP_SECRETMAP);
|
||||
Map<String,String> map = JsonUtils.parseObject(configMap, Map.class);
|
||||
return map.keySet().stream().collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.seeyon.apps.src_rent.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
public class WeAppContractSyncService {
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.log.Log;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.seeyon.apps.src_rent.bill.BillService;
|
||||
import com.seeyon.apps.src_rent.bill.FeeRecordService;
|
||||
import com.seeyon.apps.src_rent.bill.MarginBillService;
|
||||
import com.seeyon.apps.src_rent.bill.WaeBillService;
|
||||
import com.seeyon.ctp.common.AppContext;
|
||||
import com.seeyon.ctp.rest.resources.BaseResource;
|
||||
@@ -13,6 +14,7 @@ import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
@@ -26,6 +28,7 @@ public class BillResource extends BaseResource {
|
||||
private BillService billService = (BillService) AppContext.getBean("qcBillService");
|
||||
private WaeBillService waeBillService = (WaeBillService) AppContext.getBean("qcWaeBillService");
|
||||
private FeeRecordService feeRecordService = (FeeRecordService) AppContext.getBean("qcFeeRecordService");
|
||||
private MarginBillService marginBillService = (MarginBillService) AppContext.getBean("qcMarginBillService");
|
||||
|
||||
@POST
|
||||
@Path("/contractBill/queryPage")
|
||||
@@ -40,6 +43,21 @@ public class BillResource extends BaseResource {
|
||||
return fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/unpaidMargin/queryPage")
|
||||
@Produces({"application/json"})
|
||||
@Consumes({"application/json"})
|
||||
public Response cunpaidMarginQueryPage(JSONObject params) throws IOException {
|
||||
log.info("分页查询保证金账单信息参数为:"+params);
|
||||
try{
|
||||
return success(marginBillService.pageQuery(params));
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(),e);
|
||||
return fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/payRecord/queryPage")
|
||||
@Produces({"application/json"})
|
||||
@@ -68,15 +86,17 @@ public class BillResource extends BaseResource {
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@POST
|
||||
@Path("/pay/callback")
|
||||
@Produces({"application/json"})
|
||||
public Response onlinePayCallback(@Context HttpServletRequest request) throws IOException {
|
||||
String billNo = request.getParameter("billNo");
|
||||
String bizType = request.getParameter("bizType");
|
||||
log.info("支付回调信息参数为:"+ billNo +"," + bizType);
|
||||
@Consumes({"application/json"})
|
||||
public Response onlinePayCallback(JSONObject params) throws IOException {
|
||||
String billNo = params.getString("billNo");
|
||||
String bizType = params.getString("bizType");
|
||||
String payDate = params.getString("payDate");
|
||||
log.info("支付回调信息参数为:"+ billNo +"," + bizType + "," + payDate);
|
||||
try{
|
||||
feeRecordService.payCallBack(billNo,bizType);
|
||||
feeRecordService.payCallBack(billNo,bizType,payDate);
|
||||
return this.success("回调处理成功");
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(),e);
|
||||
@@ -99,6 +119,21 @@ public class BillResource extends BaseResource {
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/countUnpay/margin")
|
||||
@Produces({"application/json"})
|
||||
@Consumes({"application/json"})
|
||||
public Response countUnpaidRentMargin(JSONObject params) throws IOException {
|
||||
log.info("统计待缴保证金账单数量:" + params, new Object[0]);
|
||||
|
||||
try {
|
||||
return this.success(marginBillService.countUnpay(params));
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), new Object[]{e});
|
||||
return this.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/countUnpay/wae")
|
||||
@Produces({"application/json"})
|
||||
@@ -124,8 +159,10 @@ public class BillResource extends BaseResource {
|
||||
String bizType = params.getString("bizType");
|
||||
if("rent".equals(bizType)){
|
||||
return this.success(billService.getBillPayReceiver(params.getString("billNo")));
|
||||
}else {
|
||||
}else if("wae".equals(bizType)){
|
||||
return this.success(waeBillService.getBillPayReceiver(params.getString("billNo")));
|
||||
}else {
|
||||
return this.success(marginBillService.getBillPayReceiver(params.getString("billNo")));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), new Object[]{e});
|
||||
|
||||
@@ -32,7 +32,7 @@ public class CustomerMatchResource extends BaseResource {
|
||||
try{
|
||||
log.info("匹配个人客商参数为:" + params);
|
||||
Customer customer = new Customer();
|
||||
customer.setCusPhone(params.getString("phone"));
|
||||
customer.setCardNo(params.getString("cardNo"));
|
||||
String cusNo = customerService.matchCusPerson(customer);
|
||||
return success(cusNo);
|
||||
} catch (Exception e) {
|
||||
@@ -47,6 +47,7 @@ public class CustomerMatchResource extends BaseResource {
|
||||
@Consumes({"application/json"})
|
||||
public Response matchOrg(JSONObject params) throws IOException {
|
||||
try{
|
||||
log.info("匹配单位客商参数为:" + params);
|
||||
Customer customer = new Customer();
|
||||
customer.setOrgNo(params.getString("orgNo"));
|
||||
return success(customerService.matchCusOrg(customer));
|
||||
|
||||
@@ -33,4 +33,5 @@
|
||||
<bean id="qcContractDocService" class="com.seeyon.apps.src_rent.contract.ContractDocService"/>
|
||||
<bean id="qcCustomerService" class="com.seeyon.apps.src_rent.cus.CustomerService"/>
|
||||
<bean id="qcViewRecordService" class="com.seeyon.apps.src_rent.viewrecord.ViewRecordService"/>
|
||||
<bean id="qcMarginBillService" class="com.seeyon.apps.src_rent.bill.MarginBillService"/>
|
||||
</beans>
|
||||
|
||||
Reference in New Issue
Block a user