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