@ -30,8 +30,9 @@ public class DoCreateWorkflowService {
@Autowired
private InterInfoAchieveUtil interInfoAchieveUtil ;
public String doCreateWorkflowRequest ( String creator , String tenantKey , String workflowId , String mainTable , String [ ] detailTables ) throws IOException {
public String doCreateWorkflowRequest ( String creator , String tenantKey , String workflowId , String mainTable , String detailArray ) throws IOException {
log . info ( "DoCreateWorkflowService start" ) ;
try {
List < Long > detailFormId = dataOperateUtil . getDetailFormId ( workflowId ) ;
JSONObject param = new JSONObject ( ) ;
param . put ( "userid" , Long . valueOf ( creator ) ) ;
@ -45,7 +46,7 @@ public class DoCreateWorkflowService {
JSONObject jsonObject = JSONObject . parseObject ( mainTable ) ;
Map < String , Object > mainMap = jsonObject . toJavaObject ( Map . class ) ;
log . error ( "主表集合:" + mainMap ) ;
log . info ( "主表集合:" + mainMap ) ;
List < FormDataDuty > formDataDutyList = new ArrayList ( ) ;
// 输出 Map 的内容
for ( Map . Entry < String , Object > entry : mainMap . entrySet ( ) ) {
@ -57,35 +58,33 @@ public class DoCreateWorkflowService {
formDataDuty . setContent ( String . valueOf ( value ) ) ;
formDataDutyList . add ( formDataDuty ) ;
}
if ( detailTables = = null ) {
} else {
// log.error("处理明细数据");
if ( detailTables . length > 0 ) {
log . info ( "detailArray--" , detailArray ) ;
JSONArray detailTables = JSONArray . parseArray ( detailArray ) ;
if ( detailTables . size( ) > 0 ) {
// 遍历外部 JSONArray
for ( int i = 0 ; i < detailTables . length ; i + + ) {
JSONArray innerArray = JSONArray . parseArray ( detailTables [ i ] ) ; // 获取内部的 JSONArray
log . error ( "innerArray:" + innerArray ) ;
for ( int i = 0 ; i < detailTables . size ( ) ; i + + ) {
log . info ( "detailTables--" + detailTables . get ( i ) ) ;
JSONObject detailInfo = JSONObject . parseObject ( detailTables . get ( i ) . toString ( ) ) ; // 获取内部的 JSONArray
log . info ( "detailInfo:" + detailInfo ) ;
if ( innerArray . size ( ) > 0 ) {
//判断明细表id是否存在
if ( detailFormId . size ( ) < i + 1 ) {
log . error ( "明细表" + ( i + 1 ) + "form_id未找到或不存在" ) ;
return "明细表" + ( i + 1 ) + "form_id未找到或不存在" ;
}
Long subFormId = detailFormId . get ( i ) ;
log . error ( "明细表" + ( i + 1 ) + "form_id" + subFormId ) ;
log . info ( "index:" + detailInfo . get ( "index" ) ) ;
log . info ( "detailFormId:" + detailFormId ) ;
Long subFormId = detailFormId . get ( Integer . parseInt ( detailInfo . get ( "index" ) . toString ( ) ) - 1 ) ;
log . info ( "明细表" + ( i + 1 ) + "form_id" + subFormId ) ;
JSONArray innerArray = detailInfo . getJSONArray ( "data" ) ;
if ( innerArray . size ( ) > 0 ) {
// 遍历内部 JSONArray
for ( int j = 0 ; j < innerArray . size ( ) ; j + + ) {
com. alibaba . fastjson . JSONObject jsonDetail = innerArray . getJSONObject ( j ) ;
JSONObject jsonDetail = innerArray . getJSONObject ( j ) ;
// 遍历 JSONObject 的键值对
for ( String key : jsonDetail . keySet ( ) ) {
FormDataDuty formDataDuty = FormDataDuty . builder ( ) . build ( ) ;
String value = jsonDetail . getString ( key ) ;
if ( ! "" . equals ( key ) ) {
// log. error ("明细表普通字段值:"+value);
// log. info ("明细表普通字段值:"+value);
if ( StringUtils . isNotEmpty ( value ) ) {
formDataDuty . setDataKey ( key ) ;
formDataDuty . setDataIndex ( ( long ) ( j + 1 ) ) ;
@ -93,7 +92,7 @@ public class DoCreateWorkflowService {
//目前写死 后续在找方法
formDataDuty . setSubFormId ( subFormId ) ;
} else {
// log. error ("明细表普通字段值为空");
// log. info ("明细表普通字段值为空");
}
formDataDutyList . add ( formDataDuty ) ;
}
@ -105,44 +104,50 @@ public class DoCreateWorkflowService {
}
log . error ( "formDataDutyList数据: " + formDataDutyList . size ( ) + "-" + formDataDutyList ) ;
}
log . info ( "formDataDutyList数据: " + formDataDutyList . size ( ) + "-" + formDataDutyList ) ;
}
if ( CollectionUtils . isNotEmpty ( formDataDutyList ) ) {
JSONObject fromDataByDataDetails = dataOperateUtil . getFromDataByDataDetails ( formDataDutyList ) ;
log . info ( "formDataDutyList数据: " + fromDataByDataDetails ) ;
param . put ( "formData" , fromDataByDataDetails ) ;
}
String code = interInfoAchieveUtil. getCode ( tenantKey ) ;
String token = interInfoAchieveUtil. getToken ( code , tenantKey ) ;
String url = dataOperateUtil . null2String ( dataOperateUtil . getConfig ( "oa_address" , tenantKey ) ) + " /api/workflow/core/paService/v1/doCreateRequest?access_token=" + token ;
log . error ( "url : " + url ) ;
String code = JSONObject. parseObject ( interInfoAchieveUtil. getCode ( tenantKey ) ) . getString ( "code" ) ;
String token = JSONObject. parseObject ( interInfoAchieveUtil. getToken ( code , tenantKey ) ) . getString ( "accessToken" ) ;
String url = dataOperateUtil . null2String ( dataOperateUtil . getConfig ( "oa_address" , tenantKey ) ) + " /papi/openapi /api/workflow/core/paService/v1/doCreateRequest?access_token=" + token ;
log . info ( "url : " + url ) ;
JSONObject otherParams = new JSONObject ( ) ;
otherParams . put ( "isnextflow" , 1 ) ;
param . put ( "otherParams" , otherParams ) ;
log . error ( "表单json:" + param . toJSONString ( ) ) ;
log . info ( "表单json:" + param . toJSONString ( ) ) ;
// 远程调用创建流程。
String response = HttpUtil . post ( url , param . toJSONString ( ) ) ;
log . error ( "自动创建流程结果:" + response ) ;
log . info ( "自动创建流程结果:" + response ) ;
JSONObject responseObj = JSONObject . parseObject ( response ) ;
Object message = responseObj . get ( "message" ) ;
JSONObject messageObj = JSONObject . parseObject ( message . toString ( ) ) ;
String errcode = messageObj . get ( "errcode" ) . toString ( ) ;
log . error ( "errcode: " + errcode ) ;
log . info ( "errcode: " + errcode ) ;
if ( StringUtils . isNotEmpty ( errcode ) ) {
if ( messageObj . get ( "errcode" ) . toString ( ) . equals ( "0" ) ) {
log . error ( "requestId: " + messageObj . get ( "requestId" ) . toString ( ) ) ;
log . info ( "requestId: " + messageObj . get ( "requestId" ) . toString ( ) ) ;
return Optional . ofNullable ( messageObj . get ( "requestId" ) ) . map ( Object : : toString ) . orElse ( "" ) ;
} else {
log . error ( "errmsg: " + messageObj . get ( "errmsg" ) . toString ( ) ) ;
log . info ( "errmsg: " + messageObj . get ( "errmsg" ) . toString ( ) ) ;
return messageObj . get ( "errmsg" ) . toString ( ) ;
}
} else {
return "调用泛微流程创建接口失败" ;
}
} catch ( Exception e ) {
log . info ( "接口调用失败-" , e ) ;
return "接口调用失败--" + e ;
}
}
}