Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangxinjiang
yifu-mvp
Commits
77dd2305
Commit
77dd2305
authored
Oct 15, 2025
by
hongguangwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MVP1.7.16-法大大
parent
d73818dd
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
518 additions
and
79 deletions
+518
-79
TEmployeeContractPre.java
...ud/plus/v1/yifu/archives/entity/TEmployeeContractPre.java
+12
-0
TFascTemplateDetail.java
...oud/plus/v1/yifu/archives/entity/TFascTemplateDetail.java
+8
-0
TEmployeeContractPreVo.java
...loud/plus/v1/yifu/archives/vo/TEmployeeContractPreVo.java
+9
-0
FascController.java
...loud/plus/v1/yifu/archives/controller/FascController.java
+43
-63
FascService.java
...yifu/cloud/plus/v1/yifu/archives/service/FascService.java
+10
-0
FascServiceImpl.java
...d/plus/v1/yifu/archives/service/impl/FascServiceImpl.java
+97
-8
FascConstants.java
...yifu/cloud/plus/v1/yifu/archives/utils/FascConstants.java
+5
-0
FascUtil.java
.../com/yifu/cloud/plus/v1/yifu/archives/utils/FascUtil.java
+323
-7
application-dev.yml
.../yifu-archives-biz/src/main/resources/application-dev.yml
+1
-0
TEmployeeContractPreMapper.xml
.../src/main/resources/mapper/TEmployeeContractPreMapper.xml
+7
-1
TFascTemplateDetailMapper.xml
...z/src/main/resources/mapper/TFascTemplateDetailMapper.xml
+2
-0
CacheConstants.java
...oud/plus/v1/yifu/common/core/constant/CacheConstants.java
+1
-0
No files found.
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TEmployeeContractPre.java
View file @
77dd2305
...
...
@@ -88,6 +88,7 @@ public class TEmployeeContractPre extends BaseEntity {
@Schema
(
description
=
"法大大模版名称"
)
private
String
fadadaTemplate
;
@Schema
(
description
=
"数据来源1客户端 2客服端"
)
private
String
dataSource
;
...
...
@@ -288,4 +289,15 @@ public class TEmployeeContractPre extends BaseEntity {
@TableField
(
exist
=
false
)
private
List
<
TAttaInfo
>
attaList
;
@Schema
(
description
=
"法大大模版ID"
)
private
String
fadadaTemplateId
;
// 1待发起、5发起失败、7签署失败,可以发起电子签 2025-10-14 18:25:16倩倩
// processStatus = "状态,0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9已完结10撤销签署")
@Schema
(
description
=
"任务ID"
)
private
String
requestId
;
@Schema
(
description
=
"任务信息"
)
private
String
requestMsg
;
}
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/entity/TFascTemplateDetail.java
View file @
77dd2305
...
...
@@ -56,6 +56,14 @@ public class TFascTemplateDetail extends BaseEntity {
@ExcelProperty
(
"模板ID"
)
@Schema
(
description
=
"模板ID"
)
private
String
signTemplateId
;
/**
* 法大大文档ID
*/
@ExcelAttribute
(
name
=
"法大大文档ID"
,
maxLength
=
100
)
@Length
(
max
=
100
,
message
=
"法大大文档ID不能超过100个字符"
)
@ExcelProperty
(
"法大大文档ID"
)
@Schema
(
description
=
"法大大文档ID"
)
private
String
fascDocId
;
/**
* 法大大字段
*/
...
...
yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/vo/TEmployeeContractPreVo.java
View file @
77dd2305
...
...
@@ -565,4 +565,13 @@ public class TEmployeeContractPreVo extends RowIndex implements Serializable {
private
String
revokeReason
;
/**
* 法大大模版ID
*/
@Length
(
max
=
50
,
message
=
"法大大模版ID 不能超过50 个字符"
)
@ExcelAttribute
(
name
=
"法大大模版ID"
,
maxLength
=
50
)
@Schema
(
description
=
"法大大模版ID"
)
@ExcelProperty
(
"法大大模版ID"
)
private
String
fadadaTemplateId
;
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/controller/FascController.java
View file @
77dd2305
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
archives
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.fasc.open.api.exception.ApiException
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.FddReqLog
;
import
com.yifu.cloud.plus.v1.yifu.archives.service.*
;
import
com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException
;
import
com.yifu.cloud.plus.v1.yifu.archives.service.FascService
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprUpmsProperties
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Map
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @auther huyc
* @date 2022/6/29
*/
@EnableConfigurationProperties
({
DaprUpmsProperties
.
class
})
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/fasc"
)
...
...
@@ -30,18 +24,6 @@ public class FascController {
@Autowired
private
FascService
fascService
;
@Autowired
private
FddReqLogService
reqLogService
;
@Autowired
private
FddPersonAccountService
fddPersonAccountService
;
@Autowired
private
FddContractInfoService
fddContractInfoService
;
@Autowired
private
FddCompanyInfoService
fddCompanyInfoService
;
@Autowired
private
FddContractAttachInfoService
fddContractAttachInfoService
;
@Autowired
private
TEmployeeContractInfoService
employeeContractInfoService
;
/**
* @param templateName 签署任务模板名称,如果传了该参数,会根据名称模糊匹配查询,长度最大100个字符。
...
...
@@ -51,50 +33,48 @@ public class FascController {
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation
(
description
=
"获取模板"
)
@GetMapping
(
"/getTemplate"
)
@GetMapping
(
"/getTemplate"
)
public
R
<
String
>
getTemplate
(
@RequestParam
(
required
=
false
)
String
templateName
)
throws
ApiException
{
return
fascService
.
getTemplate
(
templateName
);
}
/**
* 保存请求参数日志
*
* @param request
*/
private
void
saveReqLog
(
HttpServletRequest
request
)
{
Map
<
String
,
String
[]>
parameterMap
=
request
.
getParameterMap
();
FddReqLog
fddReqLog
=
new
FddReqLog
();
fddReqLog
.
setResData
(
JSON
.
toJSONString
(
parameterMap
));
fddReqLog
.
setMethodName
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getMethodName
());
fddReqLog
.
setClassName
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getClassName
());
reqLogService
.
save
(
fddReqLog
);
* @param id 合同待签订任务记录表TEmployeeContractPre:id
* @Description: 发起电子签署
* @Author: hgw
* @Date: 2025/10/13 17:24
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation
(
description
=
"发起电子签署"
)
@GetMapping
(
"/submitContract"
)
public
R
<
String
>
submitContract
(
@RequestParam
String
id
)
throws
ApiException
{
return
fascService
.
submitContract
(
id
);
}
//验证签名
public
void
checkSign
(
HttpServletRequest
request
)
throws
Exception
{
/* Map<String, String> paraMap = new HashMap<>(8);
paraMap.put(GlobalConstants.FDD_APPID, request.getHeader(GlobalConstants.FDD_APPID));
paraMap.put(GlobalConstants.FDD_SIGN_TYPE, request.getHeader(GlobalConstants.FDD_SIGN_TYPE));
paraMap.put(GlobalConstants.FDD_TIMESTAMP, request.getHeader(GlobalConstants.FDD_TIMESTAMP));
paraMap.put(GlobalConstants.FDD_NONCE, request.getHeader(GlobalConstants.FDD_NONCE));
paraMap.put(FDD_EVENT, request.getHeader(FDD_EVENT));
String fddBizContent = request.getParameter(FDD_BIZ_CONTENT);
paraMap.put(FDD_BIZ_CONTENT, fddBizContent);
//得到排序后的字符串,FddCryptUtil为法大大提供得签名工具类
String sortParam = FddCryptUtil.sortParameters(paraMap);
//计算之后得到签名 该签名需要放到请求头
String signature = FddCryptUtil.sign(sortParam, request.getHeader(GlobalConstants.FDD_TIMESTAMP), fddConfigProperties.getAppKey());
if (StringUtils.equals(signature, request.getHeader(GlobalConstants.FDD_API_SIGN))) {
FddReqLog fddReqLog = new FddReqLog();
paraMap.put(GlobalConstants.FDD_TIMESTAMP, request.getHeader(GlobalConstants.FDD_TIMESTAMP));
fddReqLog.setReqData(signature);
fddReqLog.setResData(JSON.toJSONString(paraMap));
fddReqLog.setMethodName(Thread.currentThread().getStackTrace()[1].getMethodName());
fddReqLog.setClassName(Thread.currentThread().getStackTrace()[1].getClassName());
reqLogService.save(fddReqLog);
return;
}*/
throw
new
CheckedException
(
"签名异常"
);
/**
* @param id 合同待签订任务记录表TEmployeeContractPre:id
* @Description: 撤销签署
* @Author: hgw
* @Date: 2025/10/13 17:24
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation
(
description
=
"撤销签署"
)
@GetMapping
(
"/cancelTask"
)
public
R
<
String
>
cancelTask
(
@RequestParam
String
id
)
throws
ApiException
{
return
fascService
.
cancelTask
(
id
);
}
/**
* @param id 合同待签订任务记录表TEmployeeContractPre:id
* @Description: 催办
* @Author: hgw
* @Date: 2025/10/13 17:24
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation
(
description
=
"催办"
)
@GetMapping
(
"/urgeTask"
)
public
R
<
String
>
urgeTask
(
@RequestParam
String
id
)
throws
ApiException
{
return
fascService
.
urgeTask
(
id
);
}
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/service/FascService.java
View file @
77dd2305
...
...
@@ -32,4 +32,14 @@ public interface FascService extends IService<FddContractInfo> {
// 获取模板
R
<
String
>
getTemplate
(
String
templateName
)
throws
ApiException
;
// 推送法大大任务
R
<
String
>
submitContract
(
String
id
)
throws
ApiException
;
// 撤销签署任务
R
<
String
>
cancelTask
(
String
id
)
throws
ApiException
;
// 催办签署任务
R
<
String
>
urgeTask
(
String
id
)
throws
ApiException
;
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/service/impl/FascServiceImpl.java
View file @
77dd2305
...
...
@@ -19,23 +19,18 @@ package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fasc.open.api.exception.ApiException
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateListInfo
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.FddContractInfo
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascEditLog
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.*
;
import
com.yifu.cloud.plus.v1.yifu.archives.mapper.FddContractInfoMapper
;
import
com.yifu.cloud.plus.v1.yifu.archives.service.*
;
import
com.yifu.cloud.plus.v1.yifu.archives.utils.FascUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.Common
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.log4j.Log4j2
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* 法大大专业版
...
...
@@ -54,6 +49,7 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
private
final
TFascPushLogService
tFascPushLogService
;
private
final
TFascTemplateService
tFascTemplateService
;
private
final
TFascTemplateDetailService
tFascTemplateDetailService
;
private
final
TEmployeeContractPreService
tEmployeeContractPreService
;
@Override
public
R
<
String
>
getTemplate
(
String
templateName
)
throws
ApiException
{
...
...
@@ -95,10 +91,14 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
}
// 主表:
TFascTemplate
oldMain
;
String
logId
;
for
(
TFascTemplate
t
:
tList
)
{
oldMain
=
oldMainMap
.
get
(
t
.
getSignTemplateId
());
if
(
oldMain
!=
null
)
{
t
.
setId
(
oldMain
.
getId
());
}
else
{
logId
=
String
.
valueOf
(
UUID
.
randomUUID
()).
replaceAll
(
"-"
,
""
);
t
.
setId
(
logId
);
}
this
.
addFascLogToList
(
t
.
getId
(),
CommonConstants
.
ONE_STRING
,
editContent1
,
logList
);
updateMain
.
add
(
t
);
...
...
@@ -115,6 +115,9 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
oldDetail
=
oldDetailMap
.
get
(
t
.
getSignTemplateId
()
+
CommonConstants
.
DOWN_LINE_STRING
+
t
.
getFascFieldId
());
if
(
oldDetail
!=
null
)
{
t
.
setId
(
oldDetail
.
getId
());
}
else
{
logId
=
String
.
valueOf
(
UUID
.
randomUUID
()).
replaceAll
(
"-"
,
""
);
t
.
setId
(
logId
);
}
this
.
addFascLogToList
(
t
.
getId
(),
CommonConstants
.
TWO_STRING
,
editContent1
,
logList
);
updateDetail
.
add
(
t
);
...
...
@@ -157,4 +160,90 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
}
/**
* @param id TEmployeeContractPre主键
* @Description: 推送法大大任务
* @Author: hgw
* @Date: 2025/10/15 16:40
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Override
public
R
<
String
>
submitContract
(
String
id
)
throws
ApiException
{
// templateName 签署任务模板名称
TEmployeeContractPre
contract
=
tEmployeeContractPreService
.
getById
(
id
);
if
(
contract
==
null
)
{
return
R
.
failed
(
"未找到合同"
);
}
if
(
Common
.
isEmpty
(
contract
.
getFadadaTemplateId
()))
{
return
R
.
failed
(
"未找到合同模板ID,请联系管理员"
);
}
if
(
Common
.
isEmpty
(
contract
.
getSignType
()))
{
return
R
.
failed
(
"签署方式为空,请联系管理员"
);
}
else
if
(!
CommonConstants
.
ONE_STRING
.
equals
(
contract
.
getSignType
()))
{
return
R
.
failed
(
"签署方式不是电子签,不可发起电子签署"
);
}
if
(
Common
.
isEmpty
(
contract
.
getProcessStatus
()))
{
return
R
.
failed
(
"合同无状态,请联系管理员"
);
}
else
if
(!
CommonConstants
.
dingleDigitStrArray
[
1
].
equals
(
contract
.
getProcessStatus
())
&&
!
CommonConstants
.
dingleDigitStrArray
[
5
].
equals
(
contract
.
getProcessStatus
())
&&
!
CommonConstants
.
dingleDigitStrArray
[
7
].
equals
(
contract
.
getProcessStatus
()))
{
return
R
.
failed
(
"合同状态不是待发起、发起失败、签署失败,不可发起电子签署!"
);
}
if
(
Common
.
isNotNull
(
contract
.
getRequestId
()))
{
return
R
.
failed
(
"合同已发起,请勿重复发起!"
);
}
// TODO - 判断是否入职超过1个月
R
<
String
>
requestInfo
=
fascUtil
.
submitContract
(
contract
,
tFascPushLogService
,
tEmployeeContractPreService
);
return
requestInfo
;
}
/**
* @param id TEmployeeContractPre主键
* @Description: 撤销签署任务
* @Author: hgw
* @Date: 2025/10/15 16:40
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Override
public
R
<
String
>
cancelTask
(
String
id
)
throws
ApiException
{
// templateName 签署任务模板名称
TEmployeeContractPre
contract
=
tEmployeeContractPreService
.
getById
(
id
);
if
(
contract
==
null
)
{
return
R
.
failed
(
"未找到合同"
);
}
if
(
Common
.
isEmpty
(
contract
.
getRequestId
()))
{
return
R
.
failed
(
"无requestId,请检查数据"
);
}
// TODO - 判断什么状态撤销等,需要产品定
return
fascUtil
.
cancelTask
(
contract
,
tFascPushLogService
,
tEmployeeContractPreService
);
}
/**
* @param id TEmployeeContractPre主键
* @Description: 催办签署任务
* @Author: hgw
* @Date: 2025/10/15 17:56
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Override
public
R
<
String
>
urgeTask
(
String
id
)
throws
ApiException
{
// templateName 签署任务模板名称
TEmployeeContractPre
contract
=
tEmployeeContractPreService
.
getById
(
id
);
if
(
contract
==
null
)
{
return
R
.
failed
(
"未找到合同"
);
}
if
(
Common
.
isEmpty
(
contract
.
getRequestId
()))
{
return
R
.
failed
(
"无requestId,请检查数据"
);
}
// TODO - 判断什么状态催办等,需要产品定
return
fascUtil
.
urgeTask
(
contract
,
tFascPushLogService
,
tEmployeeContractPreService
);
}
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/utils/FascConstants.java
View file @
77dd2305
...
...
@@ -36,5 +36,10 @@ public interface FascConstants {
// 控件类型是印章
String
FIELD_ZHANG_TYPE
=
"corp_seal,corp_seal_cross_page"
;
// 撤销签署失败原因为 已完成签署(处理的同时员工完成签署公司免验证签完成),则更新为签署完成的“待归档”状态。
String
FIELD_REASON
=
"已完成签署"
;
// 超时未签署自行变更为线下签
String
TIME_OUT_REASON
=
"超时未签署自行变更为线下签"
;
//String FIELD_TYPE = "text_single_line,text_multi_line,number,id_card,fill_date,multi_radio,multi_checkbox,picture,select_box,table,verification_code,business_code";
}
yifu-archives/yifu-archives-biz/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/utils/FascUtil.java
View file @
77dd2305
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
archives
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
com.fasc.open.api.bean.base.BaseRes
;
import
com.fasc.open.api.bean.common.Actor
;
import
com.fasc.open.api.bean.common.OpenId
;
import
com.fasc.open.api.bean.common.TemplateField
;
import
com.fasc.open.api.exception.ApiException
;
import
com.fasc.open.api.v5_1.client.OpenApiClient
;
import
com.fasc.open.api.v5_1.client.ServiceClient
;
import
com.fasc.open.api.v5_1.client.SignTaskClient
;
import
com.fasc.open.api.v5_1.client.TemplateClient
;
import
com.fasc.open.api.v5_1.req.signtask.*
;
import
com.fasc.open.api.v5_1.req.template.GetSignTemplateListReq
;
import
com.fasc.open.api.v5_1.req.template.SignTemplateDetailReq
;
import
com.fasc.open.api.v5_1.req.template.SignTemplateListFilterInfo
;
import
com.fasc.open.api.v5_1.res.service.AccessTokenRes
;
import
com.fasc.open.api.v5_1.res.signtask.CreateSignTaskRes
;
import
com.fasc.open.api.v5_1.res.template.DocumentInfo
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateDetailRes
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateListInfo
;
import
com.fasc.open.api.v5_1.res.template.SignTemplateListRes
;
import
com.yifu.cloud.plus.v1.yifu.archives.config.FascConfig
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPre
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascPushLog
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplate
;
import
com.yifu.cloud.plus.v1.yifu.archives.entity.TFascTemplateDetail
;
import
com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreService
;
import
com.yifu.cloud.plus.v1.yifu.archives.service.TFascPushLogService
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.Common
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.LocalDateTimeUtils
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
import
static
com
.
alibaba
.
fastjson
.
serializer
.
SerializerFeature
.*;
/**
* @Author: hgw
* @Date: 2025-9-25 14:24:53
...
...
@@ -46,6 +59,11 @@ public class FascUtil {
@Autowired
private
FascConfig
fascConfig
;
private
static
final
SerializerFeature
[]
features
=
new
SerializerFeature
[]{
WriteMapNullValue
,
WriteNullNumberAsZero
,
WriteNullListAsEmpty
,
WriteNullStringAsEmpty
,
WriteDateUseDateFormat
};
/**
* @Description: 获取token
* @Author: huyc
...
...
@@ -107,7 +125,7 @@ public class FascUtil {
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
getSignTemplateListReq
.
toString
(
));
pushLog
.
setPushData
(
JSON
.
toJSONString
(
getSignTemplateListReq
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
pushLog
.
setTypeKey
(
"获取所有模板"
);
pushLog
.
setTypeName
(
"获取模板"
);
...
...
@@ -117,7 +135,7 @@ public class FascUtil {
List
<
SignTemplateListInfo
>
list
=
null
;
if
(
res
!=
null
)
{
// 更新日志
pushLog
.
setReturnData
(
res
.
toString
(
));
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
...
...
@@ -133,7 +151,7 @@ public class FascUtil {
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
getSignTemplateListReq
.
toString
(
));
pushLog
.
setPushData
(
JSON
.
toJSONString
(
getSignTemplateListReq
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
pushLog
.
setTypeKey
(
pushLog
.
getId
()
+
"获取所有模板"
+
i
);
pushLog
.
setTypeName
(
"分页循环获取模板"
);
...
...
@@ -142,7 +160,7 @@ public class FascUtil {
res
=
templateClient
.
getSignTemplateList
(
getSignTemplateListReq
);
if
(
res
!=
null
)
{
// 更新日志
pushLog
.
setReturnData
(
res
.
toString
(
));
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
...
...
@@ -184,6 +202,7 @@ public class FascUtil {
String
fieldType
;
String
isMust
;
StringBuilder
zhangName
;
String
docId
;
for
(
SignTemplateListInfo
mainInfo
:
templateList
)
{
if
(
mainInfo
!=
null
&&
mainInfo
.
getSignTemplateId
()
!=
null
)
{
zhangName
=
new
StringBuilder
();
...
...
@@ -208,7 +227,7 @@ public class FascUtil {
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
signTemplateDetailReq
.
toString
(
));
pushLog
.
setPushData
(
JSON
.
toJSONString
(
signTemplateDetailReq
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
pushLog
.
setTypeKey
(
"获取所有明细映射"
);
pushLog
.
setTypeName
(
"获取明细映射"
);
...
...
@@ -218,7 +237,7 @@ public class FascUtil {
if
(
res
!=
null
)
{
// 更新日志
pushLog
.
setReturnData
(
res
.
toString
(
));
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
...
...
@@ -229,7 +248,8 @@ public class FascUtil {
}
// 循环文档(1,2,3)
for
(
DocumentInfo
doc
:
res
.
getData
().
getDocs
())
{
if
(
doc
.
getDocFields
()
!=
null
)
{
if
(
doc
.
getDocFields
()
!=
null
&&
Common
.
isNotNull
(
doc
.
getDocId
()))
{
docId
=
String
.
valueOf
(
doc
.
getDocId
());
// 循环文档里的字段
for
(
TemplateField
fields
:
doc
.
getDocFields
())
{
fieldType
=
fields
.
getFieldType
();
...
...
@@ -238,6 +258,7 @@ public class FascUtil {
// 文本数字等控件
detail
=
new
TFascTemplateDetail
();
detail
.
setSignTemplateId
(
signTemplateId
);
detail
.
setFascDocId
(
docId
);
detail
.
setFascField
(
fields
.
getFieldName
());
detail
.
setFascFieldId
(
fields
.
getFieldId
());
isMust
=
CommonConstants
.
ONE_STRING
;
...
...
@@ -291,4 +312,299 @@ public class FascUtil {
}
}
public
R
<
String
>
submitContract
(
TEmployeeContractPre
contract
,
TFascPushLogService
tFascPushLogService
,
TEmployeeContractPreService
tEmployeeContractPreService
)
throws
ApiException
{
OpenApiClient
openApiClient
=
new
OpenApiClient
(
fascConfig
.
getAppId
(),
fascConfig
.
getAppSecret
(),
fascConfig
.
getAppUrl
());
String
accessToken
=
this
.
getFascToken
(
openApiClient
);
OpenId
openId
=
new
OpenId
();
openId
.
setIdType
(
CacheConstants
.
FASC_ID_TYPE
);
openId
.
setOpenId
(
fascConfig
.
getOpenId
());
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
);
CreateWithTemplateReq
createWithTemplateReq
=
new
CreateWithTemplateReq
();
createWithTemplateReq
.
setAccessToken
(
accessToken
);
createWithTemplateReq
.
setInitiator
(
openId
);
createWithTemplateReq
.
setSignTaskSubject
(
"签署合同-"
+
contract
.
getEmpIdcard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
DateUtil
.
getThisTime
());
createWithTemplateReq
.
setAutoStart
(
false
);
// 不要自动提交
createWithTemplateReq
.
setAutoFillFinalize
(
true
);
// 自动定稿
createWithTemplateReq
.
setAutoFinish
(
true
);
// 签署完成后自动结束
createWithTemplateReq
.
setCertCAOrg
(
"CFCA"
);
// 签署参与方使用的签章证书颁发机构,默认无要求。CFCA:要求使用CFCA(中国金融认证中心);EZCA:要求使用东方中讯CA
createWithTemplateReq
.
setSignTemplateId
(
contract
.
getFadadaTemplateId
());
// 核心代码:设置参与方列表
createWithTemplateReq
.
setActors
(
this
.
buildActors
(
contract
));
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
JSON
.
toJSONString
(
createWithTemplateReq
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
String
empIdCard
=
contract
.
getEmpIdcard
();
pushLog
.
setTypeKey
(
"发起合同签署任务,身份证:"
+
empIdCard
);
pushLog
.
setTypeName
(
"发起合同签署任务"
);
pushLog
.
setContractId
(
contract
.
getId
());
tFascPushLogService
.
save
(
pushLog
);
BaseRes
<
CreateSignTaskRes
>
res
=
signTaskClient
.
createWithTemplate
(
createWithTemplateReq
);
String
requestId
=
null
;
String
msg
=
"法大大第一步创建签署任务失败!"
;
if
(
res
!=
null
)
{
// 更新日志
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
if
(
res
.
isSuccess
()
&&
res
.
getData
()
!=
null
&&
res
.
getData
().
getSignTaskId
()
!=
null
)
{
requestId
=
res
.
getData
().
getSignTaskId
();
pushLog
.
setSignTaskId
(
requestId
);
}
tFascPushLogService
.
updateById
(
pushLog
);
if
(
Common
.
isNotNull
(
requestId
))
{
// 第二步:填写控件
R
<
String
>
sendValue
=
buildDocFieldValue
(
contract
,
requestId
,
openApiClient
,
accessToken
);
if
(
R
.
isSuccess
(
sendValue
))
{
// 第三步:提交任务
sendValue
=
submitTask
(
requestId
,
openApiClient
,
accessToken
);
if
(
R
.
isSuccess
(
sendValue
))
{
// 电子签签署中
this
.
doSuccessContract
(
contract
,
tEmployeeContractPreService
,
requestId
);
return
R
.
ok
();
}
else
{
msg
=
"第三步失败:提交任务失败:"
+
sendValue
.
getMsg
();
}
}
else
{
msg
=
"第二步失败:填写控件失败:"
+
sendValue
.
getMsg
();
}
}
else
{
msg
=
"第一步失败:"
+
res
.
getMsg
();
}
}
this
.
doFailContract
(
contract
,
tEmployeeContractPreService
,
msg
);
return
R
.
failed
(
msg
);
}
// 发起失败,更新合同状态
private
void
doFailContract
(
TEmployeeContractPre
contract
,
TEmployeeContractPreService
tEmployeeContractPreService
,
String
msg
)
{
contract
.
setProcessStatus
(
CommonConstants
.
dingleDigitStrArray
[
7
]);
contract
.
setRequestMsg
(
msg
);
tEmployeeContractPreService
.
updateById
(
contract
);
}
// 发起成功,更新合同状态
private
void
doSuccessContract
(
TEmployeeContractPre
contract
,
TEmployeeContractPreService
tEmployeeContractPreService
,
String
requestId
)
{
// 电子签签署中
contract
.
setProcessStatus
(
CommonConstants
.
dingleDigitStrArray
[
6
]);
contract
.
setRequestId
(
requestId
);
contract
.
setRequestMsg
(
""
);
tEmployeeContractPreService
.
updateById
(
contract
);
}
// 第二步:填写控件
private
R
<
String
>
buildDocFieldValue
(
TEmployeeContractPre
contract
,
String
requestId
,
OpenApiClient
openApiClient
,
String
accessToken
)
throws
ApiException
{
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
);
FillFieldValuesReq
fillFieldValuesReq
=
new
FillFieldValuesReq
();
fillFieldValuesReq
.
setSignTaskId
(
requestId
);
List
<
DocFieldValueInfo
>
docFieldValues
=
new
ArrayList
<>();
DocFieldValueInfo
dfv
=
new
DocFieldValueInfo
();
dfv
.
setDocId
(
"78112332"
);
dfv
.
setFieldId
(
"9738851979"
);
dfv
.
setFieldValue
(
contract
.
getEmployeeName
());
docFieldValues
.
add
(
dfv
);
dfv
=
new
DocFieldValueInfo
();
dfv
.
setDocId
(
"78112332"
);
dfv
.
setFieldId
(
"2324432163"
);
dfv
.
setFieldValue
(
contract
.
getEmpIdcard
());
docFieldValues
.
add
(
dfv
);
fillFieldValuesReq
.
setDocFieldValues
(
docFieldValues
);
fillFieldValuesReq
.
setAccessToken
(
accessToken
);
BaseRes
<
Void
>
res
=
signTaskClient
.
fillFieldValues
(
fillFieldValuesReq
);
if
(
res
!=
null
)
{
if
(
res
.
isSuccess
())
{
return
R
.
ok
();
}
return
R
.
failed
(
res
.
getMsg
());
}
return
R
.
failed
(
"res无返回"
);
}
// 第三步:提交任务
private
R
<
String
>
submitTask
(
String
requestId
,
OpenApiClient
openApiClient
,
String
accessToken
)
throws
ApiException
{
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
);
SignTaskBaseReq
signTaskBaseReq
=
new
SignTaskBaseReq
();
signTaskBaseReq
.
setSignTaskId
(
requestId
);
signTaskBaseReq
.
setAccessToken
(
accessToken
);
BaseRes
<
Void
>
res
=
signTaskClient
.
start
(
signTaskBaseReq
);
if
(
res
!=
null
)
{
if
(
res
.
isSuccess
())
{
return
R
.
ok
();
}
return
R
.
failed
(
res
.
getMsg
());
}
return
R
.
failed
(
"res无返回"
);
}
/**
* 构建参与方列表
*/
private
List
<
AddActorsTempInfo
>
buildActors
(
TEmployeeContractPre
contract
)
{
List
<
AddActorsTempInfo
>
actors
=
new
ArrayList
<>();
// 添加企业方(甲方)
actors
.
add
(
buildCompanyActor
(
contract
));
// 核心代码:添加员工方(乙方)
actors
.
add
(
buildEmployeeActor
(
contract
));
return
actors
;
}
/**
* 构建企业方参与方
*/
private
AddActorsTempInfo
buildCompanyActor
(
TEmployeeContractPre
contract
)
{
AddActorsTempInfo
companyActor
=
new
AddActorsTempInfo
();
Actor
actor
=
new
Actor
();
// TODO - 改造签署openID到mysql表里配置
// TODO - 参与方1 在模板详情接口返回
actor
.
setActorId
(
"发起企业"
);
// 与模板中的参与方标识一致
actor
.
setActorType
(
CacheConstants
.
FASC_ID_TYPE
);
actor
.
setActorName
(
"安徽皖信人力资源管理有限公司"
);
// 权限设置
actor
.
setPermissions
(
Collections
.
singletonList
(
"sign"
));
// 企业OpenId
actor
.
setActorOpenId
(
fascConfig
.
getOpenId
());
// 通知设置
actor
.
setSendNotification
(
true
);
// 通知地址:注:如参与方已传actorOpenId、acterFDDId或accountName,该字段会被忽略
/*if Common.isNotNull(contract.getEmpPhone()))
actor.setNotifyAddress(contract.getEmpPhone()
}*/
actor
.
setNotifyType
(
Collections
.
singletonList
(
"start"
));
companyActor
.
setActor
(
actor
);
return
companyActor
;
}
/**
* 构建员工方参与方
*/
private
AddActorsTempInfo
buildEmployeeActor
(
TEmployeeContractPre
contract
)
{
AddActorsTempInfo
employeeActor
=
new
AddActorsTempInfo
();
Actor
actor
=
new
Actor
();
// TODO - 改造签署openID到mysql表里配置
// TODO - 参与方1 在模板详情接口返回
actor
.
setActorId
(
"个人签署"
);
// 与模板中的参与方标识一致
actor
.
setActorType
(
CacheConstants
.
FASC_ID_TYPE_PERSON
);
actor
.
setActorName
(
contract
.
getEmployeeName
());
// 权限设置
actor
.
setPermissions
(
Collections
.
singletonList
(
"sign"
));
// 通知设置
actor
.
setSendNotification
(
true
);
if
(
Common
.
isNotNull
(
contract
.
getEmpPhone
()))
{
actor
.
setNotifyAddress
(
contract
.
getEmpPhone
());
}
actor
.
setNotifyType
(
Collections
.
singletonList
(
"start"
));
employeeActor
.
setActor
(
actor
);
return
employeeActor
;
}
// 撤销签署
public
R
<
String
>
cancelTask
(
TEmployeeContractPre
contract
,
TFascPushLogService
tFascPushLogService
,
TEmployeeContractPreService
tEmployeeContractPreService
)
throws
ApiException
{
OpenApiClient
openApiClient
=
new
OpenApiClient
(
fascConfig
.
getAppId
(),
fascConfig
.
getAppSecret
(),
fascConfig
.
getAppUrl
());
String
accessToken
=
this
.
getFascToken
(
openApiClient
);
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
);
SignTaskCancelReq
signTaskCancelReq
=
new
SignTaskCancelReq
();
signTaskCancelReq
.
setSignTaskId
(
contract
.
getRequestId
());
signTaskCancelReq
.
setAccessToken
(
accessToken
);
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
JSON
.
toJSONString
(
signTaskCancelReq
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
String
empIdCard
=
contract
.
getEmpIdcard
();
pushLog
.
setTypeKey
(
"发起撤销签署任务,身份证:"
+
empIdCard
);
pushLog
.
setTypeName
(
"发起撤销签署任务"
);
pushLog
.
setContractId
(
contract
.
getId
());
tFascPushLogService
.
save
(
pushLog
);
BaseRes
<
Void
>
res
=
signTaskClient
.
cancel
(
signTaskCancelReq
);
if
(
res
!=
null
)
{
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
if
(
res
.
isSuccess
())
{
contract
.
setProcessStatus
(
CommonConstants
.
dingleDigitStrArray
[
1
]);
contract
.
setSignType
(
CommonConstants
.
dingleDigitStrArray
[
1
]);
contract
.
setRequestMsg
(
""
);
tEmployeeContractPreService
.
updateById
(
contract
);
return
R
.
ok
();
}
else
{
// 撤销签署失败原因为 已完成签署(处理的同时员工完成签署公司免验证签完成),则更新为签署完成的“待归档”状态。
if
(
Common
.
isNotNull
(
res
.
getMsg
())
&&
FascConstants
.
FIELD_REASON
.
equals
(
res
.
getMsg
()))
{
contract
.
setProcessStatus
(
CommonConstants
.
dingleDigitStrArray
[
8
]);
contract
.
setRevokeReason
(
FascConstants
.
TIME_OUT_REASON
);
}
contract
.
setRequestMsg
(
res
.
getMsg
());
tEmployeeContractPreService
.
updateById
(
contract
);
return
R
.
failed
(
res
.
getMsg
());
}
}
return
R
.
failed
(
"res无返回"
);
}
// 催办
public
R
<
String
>
urgeTask
(
TEmployeeContractPre
contract
,
TFascPushLogService
tFascPushLogService
,
TEmployeeContractPreService
tEmployeeContractPreService
)
throws
ApiException
{
OpenApiClient
openApiClient
=
new
OpenApiClient
(
fascConfig
.
getAppId
(),
fascConfig
.
getAppSecret
(),
fascConfig
.
getAppUrl
());
String
accessToken
=
this
.
getFascToken
(
openApiClient
);
SignTaskClient
signTaskClient
=
new
SignTaskClient
(
openApiClient
);
SignTaskBaseReq
signTaskBaseReq
=
new
SignTaskBaseReq
();
signTaskBaseReq
.
setSignTaskId
(
contract
.
getRequestId
());
signTaskBaseReq
.
setAccessToken
(
accessToken
);
// 新增推送日志
TFascPushLog
pushLog
=
new
TFascPushLog
();
pushLog
.
setTransReferenceId
(
fascConfig
.
getOpenId
());
pushLog
.
setPushData
(
JSON
.
toJSONString
(
signTaskClient
,
features
));
pushLog
.
setTaskStatus
(
CommonConstants
.
ZERO_STRING
);
String
empIdCard
=
contract
.
getEmpIdcard
();
pushLog
.
setTypeKey
(
"发起催办任务,身份证:"
+
empIdCard
);
pushLog
.
setTypeName
(
"发起催办任务"
);
pushLog
.
setContractId
(
contract
.
getId
());
tFascPushLogService
.
save
(
pushLog
);
BaseRes
<
Void
>
res
=
signTaskClient
.
signTaskUrge
(
signTaskBaseReq
);
if
(
res
!=
null
)
{
pushLog
.
setReturnData
(
JSON
.
toJSONString
(
res
,
features
));
pushLog
.
setTaskStatus
(
res
.
isSuccess
()
?
CommonConstants
.
ONE_STRING
:
CommonConstants
.
TWO_STRING
);
tFascPushLogService
.
updateById
(
pushLog
);
if
(
res
.
isSuccess
())
{
return
R
.
ok
();
}
else
{
contract
.
setRequestMsg
(
res
.
getMsg
());
tEmployeeContractPreService
.
updateById
(
contract
);
return
R
.
failed
(
res
.
getMsg
());
}
}
return
R
.
failed
(
"res无返回"
);
}
}
yifu-archives/yifu-archives-biz/src/main/resources/application-dev.yml
View file @
77dd2305
...
...
@@ -8,6 +8,7 @@ spring:
redis
:
host
:
127.0.0.1
port
:
6379
password
:
'
@yf_2017'
datasource
:
type
:
com.zaxxer.hikari.HikariDataSource
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
yifu-archives/yifu-archives-biz/src/main/resources/mapper/TEmployeeContractPreMapper.xml
View file @
77dd2305
...
...
@@ -24,6 +24,7 @@
<result
property=
"errorInfo"
column=
"error_info"
/>
<result
property=
"errorTime"
column=
"error_time"
/>
<result
property=
"fadadaTemplate"
column=
"fadada_template"
/>
<result
property=
"fadadaTemplateId"
column=
"fadada_template_id"
/>
<result
property=
"dataSource"
column=
"data_source"
/>
<result
property=
"expectedCollectionTime"
column=
"expected_collection_time"
/>
<result
property=
"contractStart"
column=
"contract_start"
/>
...
...
@@ -84,7 +85,9 @@
<result
property=
"createName"
column=
"create_name"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"contractSubName"
column=
"CONTRACT_SUB_NAME,"
/>
<result
property=
"contractSubName"
column=
"CONTRACT_SUB_NAME"
/>
<result
property=
"requestId"
column=
"request_id"
/>
<result
property=
"requestMsg"
column=
"request_msg"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id
...
...
@@ -103,6 +106,7 @@
,customer_user_loginname
,sign_type
,fadada_template
,fadada_template_id
,data_source
,expected_confirm_time
,expected_collection_time
...
...
@@ -165,6 +169,8 @@
,TASK
,TASK_TYPE
,TASK_END_STANDARD,contract_flag,a.CONTRACT_SUB_NAME
,a.request_id
,a.request_msg
</sql>
<sql
id=
"tEmployeeContractPre_where"
>
<if
test=
"tEmployeeContractPre != null"
>
...
...
yifu-archives/yifu-archives-biz/src/main/resources/mapper/TFascTemplateDetailMapper.xml
View file @
77dd2305
...
...
@@ -41,6 +41,7 @@
<result
property=
"signTemplateName"
column=
"sign_template_name"
/>
<result
property=
"signTemplateStatus"
column=
"sign_template_status"
/>
<result
property=
"contractType"
column=
"contract_type"
/>
<result
property=
"fascDocId"
column=
"fasc_doc_id"
/>
</resultMap>
<resultMap
id=
"tFascTemplateDetailExportMap"
type=
"com.yifu.cloud.plus.v1.yifu.archives.vo.TFascTemplateDetailExportVo"
>
...
...
@@ -59,6 +60,7 @@
<sql
id=
"Base_Column_List"
>
a.id,
a.sign_template_id,
a.fasc_doc_id,
a.fasc_field,
a.fasc_field_id,
a.is_must,
...
...
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/constant/CacheConstants.java
View file @
77dd2305
...
...
@@ -202,6 +202,7 @@ public interface CacheConstants {
String
FASC_ACCOSS_TOKEN
=
"FASC_ACCOSS_TOKEN"
;
// 如果idType为corp:代表应用系统上的企业用户,主体方是openCorpId所指定的企业
String
FASC_ID_TYPE
=
"corp"
;
String
FASC_ID_TYPE_PERSON
=
"person"
;
/**
* 登录用户最近一次选择的收入证明单位名称
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment