Commit 64fc5e8a authored by hongguangwu's avatar hongguangwu

MVP1.7.16-法大大字段

parent 0a0f3f12
......@@ -391,7 +391,7 @@ public class TEmployeeContractInfo extends BaseEntity {
/**
* 审核状态(0:待提交;1:待审核;2审核通过;3审核不通过)
*/
@Schema(description = "审核状态(0:待提交;1:待审核;2审核通过;3审核不通过)")
@Schema(description = "审核状态(0:待提交;1:待审核;2审核通过;3审核不通过;4签署中;5撤销签署;6签署失败)")
private Integer auditStatus;
/**
......
......@@ -187,7 +187,7 @@ public class EmployeeContractExportVO implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("审核状态")
@ExcelAttribute(name = "审核状态", readConverterExp = "0=待提交,1=待审核,2=审核通过,3=审核不通过")
@ExcelAttribute(name = "审核状态", readConverterExp = "0=待提交,1=待审核,2=审核通过,3=审核不通过,4=签署中,5=撤销签署,6=签署失败")
@Schema(description = "审核状态")
private String auditStatus;
......
......@@ -219,9 +219,14 @@ public class FascServiceImpl extends ServiceImpl<FddContractInfoMapper, FddContr
TFascTemplateDetail detail = new TFascTemplateDetail();
detail.setSignTemplateId(contract.getFadadaTemplateId());
List<TFascTemplateDetail> detailList = tFascTemplateDetailService.getTFascTemplateDetailList(detail);
// TODO - 判断是否入职超过1个月
// - 判断是否入职超过1个月——接口入口做了
R<String> requestInfo = fascUtil.submitContract(contract, tFascPushLogService, tEmployeeContractPreMapper);
R<String> requestInfo = fascUtil.submitContract(contract, tFascPushLogService, tEmployeeContractPreMapper, tFascTemplate, detailList);
if (!R.isSuccess(requestInfo)) {
contract.setRequestId(requestInfo.getData());
contract.setProcessStatus(CommonConstants.dingleDigitStrArray[2]);
tEmployeeContractPreMapper.updateById(contract);
}
return requestInfo;
}
......
......@@ -31,17 +31,13 @@ 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.*;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
......@@ -317,7 +313,8 @@ public class FascUtil {
}
public R<String> submitContract(TEmployeeContractPre contract, TFascPushLogService tFascPushLogService
, TEmployeeContractPreMapper tEmployeeContractPreMapper) throws ApiException {
, TEmployeeContractPreMapper tEmployeeContractPreMapper
, TFascTemplate tFascTemplate, List<TFascTemplateDetail> detailList) throws ApiException {
OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl());
String accessToken = this.getFascToken(openApiClient);
OpenId openId = new OpenId();
......@@ -362,7 +359,7 @@ public class FascUtil {
tFascPushLogService.updateById(pushLog);
if (Common.isNotNull(requestId)) {
// 第二步:填写控件
R<String> sendValue = buildDocFieldValue(contract, requestId, openApiClient, accessToken);
R<String> sendValue = buildDocFieldValue(contract, requestId, openApiClient, accessToken, tFascTemplate, detailList);
if (R.isSuccess(sendValue)) {
// 第三步:提交任务
sendValue = submitTask(requestId, openApiClient, accessToken);
......@@ -402,13 +399,32 @@ public class FascUtil {
// 第二步:填写控件
private R<String> buildDocFieldValue(TEmployeeContractPre contract, String requestId
, OpenApiClient openApiClient, String accessToken) throws ApiException {
, OpenApiClient openApiClient, String accessToken
, TFascTemplate tFascTemplate, List<TFascTemplateDetail> detailList) throws ApiException {
SignTaskClient signTaskClient = new SignTaskClient(openApiClient);
FillFieldValuesReq fillFieldValuesReq = new FillFieldValuesReq();
fillFieldValuesReq.setSignTaskId(requestId);
List<DocFieldValueInfo> docFieldValues = new ArrayList<>();
DocFieldValueInfo dfv = new DocFieldValueInfo();
if (detailList != null && !detailList.isEmpty()) {
DocFieldValueInfo dfv;
String fieldValue;
for (TFascTemplateDetail detail : detailList) {
if (Common.isNotNull(detail.getHrFieldId()) && Common.isNotNull(detail.getHrField())) {
dfv = new DocFieldValueInfo();
dfv.setDocId(detail.getFascDocId());
dfv.setFieldId(detail.getFascFieldId());
// 转化字段
fieldValue = this.getContractFieldValueByReflection(contract, detail.getHrFieldId());
dfv.setFieldValue(fieldValue);
dfv.setFieldValue(detail.getHrFieldId());
docFieldValues.add(dfv);
}
}
}
/*DocFieldValueInfo dfv = new DocFieldValueInfo();
dfv.setDocId("78112332");
dfv.setFieldId("9738851979");
dfv.setFieldValue(contract.getEmployeeName());
......@@ -417,7 +433,7 @@ public class FascUtil {
dfv.setDocId("78112332");
dfv.setFieldId("2324432163");
dfv.setFieldValue(contract.getEmpIdcard());
docFieldValues.add(dfv);
docFieldValues.add(dfv);*/
fillFieldValuesReq.setDocFieldValues(docFieldValues);
fillFieldValuesReq.setAccessToken(accessToken);
......@@ -431,6 +447,39 @@ public class FascUtil {
return R.failed("res无返回");
}
/**
* 使用反射根据字段名获取合同对象中对应字段的值
* @param contract 合同对象
* @param fieldName 字段名
* @return 字段值
*/
private String getContractFieldValueByReflection(TEmployeeContractPre contract, String fieldName) {
if (contract == null || fieldName == null) {
return null;
}
try {
// 获取对应的getter方法名
String getterMethodName = "get" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1);
// 获取方法并调用
java.lang.reflect.Method method = contract.getClass().getMethod(getterMethodName);
Object value = method.invoke(contract);
return value != null ? value.toString() : null;
} catch (Exception e) {
// 如果找不到对应的方法,尝试直接匹配字段名
try {
java.lang.reflect.Field field = contract.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
Object value = field.get(contract);
return value != null ? value.toString() : null;
} catch (Exception ex) {
return null;
}
}
}
// 第三步:提交任务
private R<String> submitTask(String requestId, OpenApiClient openApiClient, String accessToken) throws ApiException {
SignTaskClient signTaskClient = new SignTaskClient(openApiClient);
......@@ -612,14 +661,14 @@ public class FascUtil {
// 获取附件
public boolean getFileByRequestId(TEmployeeContractPre contract, TFascPushLogService tFascPushLogService
, TAttaInfoMapper tAttaInfoMapper , OSSUtil ossUtil) throws ApiException {
, TAttaInfoMapper tAttaInfoMapper, OSSUtil ossUtil) throws ApiException {
OpenApiClient openApiClient = new OpenApiClient(fascConfig.getAppId(), fascConfig.getAppSecret(), fascConfig.getAppUrl());
String accessToken = this.getFascToken(openApiClient);
SignTaskClient signTaskClient = new SignTaskClient(openApiClient) ;
SignTaskGetFileReq signTaskGetFileReq = new SignTaskGetFileReq() ;
signTaskGetFileReq.setSignTaskId(contract.getRequestId()) ;
signTaskGetFileReq.setAccessToken(accessToken) ;
SignTaskClient signTaskClient = new SignTaskClient(openApiClient);
SignTaskGetFileReq signTaskGetFileReq = new SignTaskGetFileReq();
signTaskGetFileReq.setSignTaskId(contract.getRequestId());
signTaskGetFileReq.setAccessToken(accessToken);
// 新增推送日志
TFascPushLog pushLog = new TFascPushLog();
......@@ -632,7 +681,7 @@ public class FascUtil {
pushLog.setContractId(contract.getId());
tFascPushLogService.save(pushLog);
BaseRes<SignTaskGetFileRes> res = signTaskClient.signTaskGetFile(signTaskGetFileReq) ;
BaseRes<SignTaskGetFileRes> res = signTaskClient.signTaskGetFile(signTaskGetFileReq);
if (res != null) {
pushLog.setReturnData(JSON.toJSONString(res, features));
pushLog.setTaskStatus(res.isSuccess() ? CommonConstants.ONE_STRING : CommonConstants.TWO_STRING);
......
......@@ -498,6 +498,9 @@
WHEN a.AUDIT_STATUS =1 THEN "待审核"
WHEN a.AUDIT_STATUS =2 THEN "审核通过"
WHEN a.AUDIT_STATUS =3 THEN "审核不通过"
WHEN a.AUDIT_STATUS =4 THEN "签署中"
WHEN a.AUDIT_STATUS =5 THEN "撤销签署"
WHEN a.AUDIT_STATUS =6 THEN "签署失败"
ELSE a.AUDIT_STATUS END as "AUDIT_STATUS",
if(a.IN_USE = 0,'可用','不可用') IN_USE,
if(a.IS_FILE = 0,'有附件','无附件') FILES,
......@@ -575,6 +578,9 @@
WHEN a.AUDIT_STATUS =1 THEN "待审核"
WHEN a.AUDIT_STATUS =2 THEN "审核通过"
WHEN a.AUDIT_STATUS =3 THEN "审核不通过"
WHEN a.AUDIT_STATUS =4 THEN "签署中"
WHEN a.AUDIT_STATUS =5 THEN "撤销签署"
WHEN a.AUDIT_STATUS =6 THEN "签署失败"
ELSE a.AUDIT_STATUS END as "AUDIT_STATUS",
if(a.IN_USE = 0,'可用','不可用') IN_USE,
if(a.IS_FILE = 0,'有附件','无附件') FILES,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment