webservice

webservice
qijirenjian 5 months ago
parent c1f36a7ebf
commit 6ebd067af3

@ -0,0 +1,19 @@
plugins {
id 'war'
}
description = ""
//version '1.0.0' // 1.0.0
dependencies {
//
}
//jar {
// archiveBaseName = 'secondev-ht-njwebserivce' //
// archiveVersion = version
// archiveClassifier = ''
// archiveExtension = 'jar'
// destinationDirectory = file('build/libs')
//}

@ -0,0 +1,64 @@
package com.weaver.seconddev.njwebservice;
import com.weaver.seconddev.njwebservice.entity.SubmitWorkflowReq;
import com.weaver.seconddev.njwebservice.entity.SubmitWorkflowRes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.regex.Pattern;
/**
* webService
*/
@Service("autoCreateWorkflowEncService")
public class AutoCreateWorkflowEncService {
private final static Logger log = LoggerFactory.getLogger(AutoCreateWorkflowEncService.class);
@Autowired
private AutoCreateWorkflowService autoCreateWorkflowService;
@Autowired
private SubmitWorkflowRes var12;
public SubmitWorkflowRes createWorkflow(SubmitWorkflowReq var1) {
String var2 = var1.getDATAS().getLoginname();
String var3 = var1.getDATAS().getPassword();
String var4 = var1.getDATAS().getWorkflowId();
String var5 = var1.getDATAS().getCreator();
String var6 = var1.getDATAS().getRequestLevel();
String var7 = var1.getDATAS().getMainTable();
String var8 = var1.getDATAS().getDetailTables();
String var9 = var1.getSYSID();
String var10 = var1.getSENDID();
String var11 = var1.getITFID();
var12.setITFID(var11);
var12.setSYSID(var9);
var12.setSENDID(var10);
String var14 = autoCreateWorkflowService.createWorkflow(var2, var3, var4, var5, var6, var7, var8);
if (isInteger(var14)) {
var12.setISTAT("S");
log.error(var5 + "创建流程id为" + var4 + "的流程成功!");
} else {
var12.setISTAT("F");
log.error(var5 + "创建流程id为" + var4 + "的流程失败:" + var14);
}
var12.setMESSAGE(var14);
return var12;
}
public static boolean isInteger(String var0) {
Pattern var1 = Pattern.compile("^\\+?[1-9][0-9]*$");
return var1.matcher(var0).matches();
}
}

@ -0,0 +1,379 @@
package com.weaver.seconddev.njwebservice;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.weaver.common.elog.util.DateUtils;
import com.weaver.common.hrm.util.HrmCommonUtil;
import com.weaver.common.hrm.util.StringUtils;
import com.weaver.seconddev.njwebservice.entity.DataOptions;
import com.weaver.seconddev.njwebservice.entity.FormDataDuty;
import com.weaver.seconddev.njwebservice.util.*;
import com.weaver.teams.domain.user.SimpleEmployee;
import com.weaver.verupgrade.hrm.company.DepartmentComInfo;
import com.weaver.verupgrade.workflow.workflow.WorkflowAllComInfo;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import static com.weaver.seconddev.njwebservice.util.SecondUtil.getFromDataByDataDetails;
/**
* webService
*/
@Service("autoCreateWorkflowService")
public class AutoCreateWorkflowService {
private final static Logger log = LoggerFactory.getLogger(AutoCreateWorkflowService.class);
@Autowired
private HrmCommonUtil hrmCommonUtil;
@Autowired
private WorkflowAllComInfo workflowAllComInfo;
@Autowired
private DocUtil docUtil;
@Autowired
private DatabaseUtils databaseUtils;
@Autowired
private DepartmentComInfo departmentComInfo;
private static final String HOST = "http://10.6.23.235:20600/papi/openapi";
public String createWorkflow(String loginName, String password, String workflowId, String creator, String requestLevel, String mainTable , String detailTables){
log.error("AutoCreateWorkflowService start");
log.error("loginName:"+loginName+"=> password:"+password+"=> workflowId:"+workflowId+"=> creator:"+creator);
//实现自定义webservice接口逻辑
String currentDate = DateUtils.getCurrentDate();
String curDateTime = DateUtils.getCurDateTime();
String workcode = creator;
//1.入参校验
String tips = SecondUtil.validationParam(loginName, password, workflowId, creator);
if (!"".equals(tips)) {
return tips;
}
//2.日志记录省略todo
//E10 workflowId转换(未测试)
WfUtil wfUtil = new WfUtil();
Map<String, String> zhWfMap = wfUtil.getZhWfMap("t6kj9c07jr", creator, workflowId);
workflowId = zhWfMap.get("workflowid");
log.error("转换后的流程ID:"+workflowId);
if(StringUtils.isEmpty(workflowId)) {
return "E10流程ID转换失败请假查e10_common.dbo.uf_zhwfid_mt配置信息";
}
String createTenantKey = zhWfMap.get("tenantKey");
if(StringUtils.isEmpty(createTenantKey)) {
return "E10获取流程对应租户失败请假查e10_common.dbo.uf_zhwfid_mt配置信息";
}
//3.根据工号获取创建人id (租户概念后续增加)
String groupId = "weaver-ebuilder-form-service";//不确定
String sql = "select ID,TENANT_KEY from eteams.employee where status = 'normal' and job_num = '"+creator+"' and tenant_key = '"+createTenantKey+"'";
Map<String,Object> recordMap = new HashMap<>();
String sourceType = "LOGIC";
log.error("createWorkflow sql1 :"+sql);
Map<String, Object> result = databaseUtils.execute(sourceType, groupId, sql);
List<Map<String,Object>> recordList = databaseUtils.getDataSourceList(result);
log.error("recordList : "+recordList);
if(CollectionUtils.isNotEmpty(recordList)){
recordMap = recordList.get(0);
}
creator = String.valueOf(recordMap.get("id"));
String tenantKey = (String)recordMap.get("tenant_key");
log.error("创建人ID:" + creator + " 租户key:" + tenantKey);
//紧急程度默认值
if ("".equals(requestLevel) || requestLevel == null) {
requestLevel = "0";
}
List<Long> detailFormId = SecondUtil.getDetailFormId(workflowId);
JSONObject param = new JSONObject();
param.put("userid", Long.valueOf(creator));
param.put("workflowId", Long.valueOf(workflowId));
param.put("requestLevel", Integer.parseInt(requestLevel));
//4.主表数据 明细表数据 自动生成流程入参构造
log.error("主表数据:"+mainTable);
//主表数据 json {"sqr":"sqr1","date":"date1","hrm:zrr":"zrr1"}
//字段名前面加 hrm:表示是人力资源字段
if(mainTable == null || mainTable.equals("")){
return "主表数据不能为空";
}
JSONObject jsonObject = JSONObject.parseObject(mainTable);
Map<String, Object> mainMap = jsonObject.toJavaObject(Map.class);
log.error("主表集合:"+mainMap);
List<FormDataDuty> formDataDutyList = new ArrayList();
// 输出 Map 的内容
for (Map.Entry<String, Object> entry : mainMap.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
FormDataDuty formDataDuty = FormDataDuty.builder().build();
Long optionId = null;
log.error("入参key:"+key+" value:"+value);
String code = "";
JSONObject doc = new JSONObject();
if (value instanceof String) {
code = String.valueOf(value);
} else if (value instanceof JSONObject) {
doc = (JSONObject) value;
}
if (!"".equals(key)) {
if(key.contains("hrm:")){
//判断人力资源字段工号是否正确 (todo)
optionId = getIdByWorkcode(code);
if(optionId == null) {
return "工号为空或不存在";
}
key = key.replace("hrm:", "");
formDataDuty.setDataKey(key);
formDataDuty.setFieldType(2);
DataOptions options = DataOptions.builder().optionId(optionId).build();
List<DataOptions> dataOptions = new ArrayList();
dataOptions.add(options);
formDataDuty.setDataOptions(dataOptions);
} else if (key.contains("com:") || key.contains("dep:")) { //e10 分部部门同一个字段
if(key.split(":").length != 3){
return "主表字段名"+key+"不符合规则...";
}
String str2 = key.split(":")[1];//关联人力资源字段
String str3 = key.split(":")[2];//当前字段
if(mainMap.get("hrm:"+str2) != null){
String hrmResource = (String) mainMap.get("hrm:"+str2);
Long id = getIdByWorkcode(hrmResource);
SimpleEmployee simpleEmployee = hrmCommonUtil.getSimpleEmployee(id);
optionId = simpleEmployee.getDepartmentId();
if (key.contains("com:")) {
optionId = Long.valueOf(departmentComInfo.getSubcompanyid1(String.valueOf(optionId)));
}
key = str3;
formDataDuty.setDataKey(key);
formDataDuty.setFieldType(2);
DataOptions options = DataOptions.builder().optionId(optionId).build();
List<DataOptions> dataOptions = new ArrayList();
dataOptions.add(options);
formDataDuty.setDataOptions(dataOptions);
}else{
return "主表字段"+key+"不包含关联字段" ;
}
}else if(key.contains("doc:")){
key = key.replace("doc:", "");
if(key.length()==0){
return "主表上传附件字段名不符合规则";
}
if(doc.getString("filename") != null && doc.getString("content") != null) {
String docName = doc.getString("filename");
String base64 = doc.getString("content");
formDataDuty.setFieldType(3);
String docId = docUtil.createdocByBase642(docName, base64, "", creator, "");
log.error("生成的附件id"+docId);
formDataDuty.setDataKey(key);
DataOptions options = DataOptions.builder().optionId(Long.parseLong(docId)).content(docName).build();
List<DataOptions> dataOptions = new ArrayList();
dataOptions.add(options);
formDataDuty.setDataOptions(dataOptions);
}else {
return "上传附件内容不符合规则...";
}
}else {
log.error("普通字段值:"+value);
formDataDuty.setFieldType(1);
formDataDuty.setDataKey(key);
formDataDuty.setContent(code);
}
}
formDataDutyList.add(formDataDuty);
}
log.error("明细表数据:"+detailTables);
///明细表数据
//[[{"wlbh":"1","wlms":"2","pjxhj3y":"3","bylj":"4","kcsl":"5","tksl":"6","jey":"7","cbzx":"8"},{"wlbh":"1","wlms":"2","pjxhj3y":"3","bylj":"4","kcsl":"5","tksl":"6","jey":"7","cbzx":"8"}],[{"aa":"1","bb":"2"}]]
JSONArray outerArray = JSON.parseArray(detailTables);
// 遍历外部 JSONArray
for (int i = 0; i < outerArray.size(); i++) {
JSONArray innerArray = outerArray.getJSONArray(i); // 获取内部的 JSONArray
//判断明细表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);
// 遍历内部 JSONArray
for (int j = 0; j < innerArray.size(); j++) {
JSONObject jsonDetail = innerArray.getJSONObject(j);
Long optionId = null;
// 遍历 JSONObject 的键值对
for (String key : jsonDetail.keySet()) {
FormDataDuty formDataDuty = FormDataDuty.builder().build();
String value = jsonDetail.getString(key);
if (!"".equals(key)) {
if(key.contains("hrm:")){
//判断人力资源字段工号是否正确 (todo)
optionId = getIdByWorkcode(value);
if(optionId == null) {
return "工号为空或不存在";
}
key = key.replace("hrm:", "");
formDataDuty.setDataKey(key);
formDataDuty.setDataIndex((long) (j + 1));
formDataDuty.setSubFormId(subFormId);
DataOptions options = DataOptions.builder().optionId(optionId).build();
List<DataOptions> dataOptions = new ArrayList();
dataOptions.add(options);
formDataDuty.setDataOptions(dataOptions);
} else if (key.contains("com:") || key.contains("dep:")) { //e10 分部部门同一个字段
if(key.split(":").length != 3){
return "明细表表字段名"+key+"不符合规则...";
}
String str2 = key.split(":")[1];//关联人力资源字段
String str3 = key.split(":")[2];//当前字段
if(mainMap.get("hrm:"+str2) != null){
String hrmResource = (String) mainMap.get("hrm:"+str2);
Long id = getIdByWorkcode(hrmResource);
SimpleEmployee simpleEmployee = hrmCommonUtil.getSimpleEmployee(id);
optionId = simpleEmployee.getDepartmentId();
if (key.contains("com:")) {
optionId = Long.valueOf(departmentComInfo.getSubcompanyid1(String.valueOf(optionId)));
}
key = str3;
formDataDuty.setDataKey(key);
formDataDuty.setDataIndex((long) (j + 1));
formDataDuty.setSubFormId(subFormId);
DataOptions options = DataOptions.builder().optionId(optionId).build();
List<DataOptions> dataOptions = new ArrayList();
dataOptions.add(options);
formDataDuty.setDataOptions(dataOptions);
}else{
return "明细字段"+key+"不包含关联字段" ;
}
}else {
log.error("明细表普通字段值:"+value);
formDataDuty.setDataKey(key);
formDataDuty.setDataIndex((long) (j + 1));
formDataDuty.setContent(value);
//目前写死 后续在找方法
formDataDuty.setSubFormId(subFormId);
}
formDataDutyList.add(formDataDuty);
}
}
}
}
log.error("formDataDutyList数据"+formDataDutyList.size()+"-"+formDataDutyList);
if(CollectionUtils.isNotEmpty(formDataDutyList)) {
JSONObject fromDataByDataDetails = getFromDataByDataDetails(formDataDutyList);
param.put("formData", fromDataByDataDetails);
}
//String formId = workflowAllComInfo.getFormId(workflowId);
//log.error("表单id"+formId);
//4.1 获取access_token ( 增加redis存储token todo)
String token = "";
// try {
// token = AccessTokenUtil.getToken();
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
try {
token = AccessTokenUtil.getAccessToken(createTenantKey);
} catch (Exception e) {
throw new RuntimeException(e);
}
log.error("access_token信息"+token);
String url = HOST + "/api/workflow/core/paService/v1/doCreateRequest?access_token=" + token;
JSONObject otherParams =new JSONObject();
otherParams.put("isnextflow",1);
param.put("otherParams",otherParams);
log.error("表单json:"+param.toJSONString());
// 远程调用创建流程。
String response = HttpUtil.post(url, param.toJSONString());
log.error("自动创建流程结果:"+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);
if(StringUtils.isNotEmpty(errcode)){
if(messageObj.get("errcode").toString().equals("0")){
log.error("requestId"+messageObj.get("requestId").toString());
return Optional.ofNullable(messageObj.get("requestId")).map(Object::toString).orElse("");
}else{
log.error("errmsg"+messageObj.get("errmsg").toString());
return messageObj.get("errmsg").toString();
}
}else{
return "调用泛微流程创建接口失败";
}
}
/**
* id
* @param workcode
* @return
*/
private Long getIdByWorkcode(String workcode) {
log.error("人员工号:"+workcode);
String groupId = "weaver-ebuilder-form-service";
String sql = "select ID from eteams.employee where status = 'normal' and job_num = '"+workcode+"'";
Map<String,Object> recordMap = new HashMap<>();
String sourceType = "LOGIC";
Map<String, Object> result = databaseUtils.execute(sourceType, groupId, sql);
List<Map<String,Object>> recordList = databaseUtils.getDataSourceList(result);
if(CollectionUtils.isNotEmpty(recordList)){
recordMap = recordList.get(0);
}
log.error("人员ID"+recordMap.get("id"));
return recordMap.get("id") == null ? null :(Long) recordMap.get("id");
}
}

@ -0,0 +1,143 @@
package com.weaver.seconddev.njwebservice;
import com.weaver.common.hrm.util.Util;
import com.weaver.common.i18n.tool.util.I18nContextUtil;
import com.weaver.seconddev.njwebservice.util.DocUtil;
import com.weaver.verupgrade.conn.CONN_TYPE;
import com.weaver.verupgrade.conn.RecordSet;
import com.weaver.verupgrade.workflow.workflow.WorkflowAllComInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("demoService")
public class DemoService {
private final static Logger log = LoggerFactory.getLogger(DemoService.class);
private static final String HOST = "http://10.6.23.235:20600/papi/openapi";
@Autowired
private DocUtil docUtil;
// @Autowired
// private DepartmentComInfo departmentComInfo;
@Autowired
private WorkflowAllComInfo workflowAllComInfo;
public String demo(String base64){
// //实现自定义webservice接口逻辑
//String tips = SecondUtil.validationParam("OAAdmin", "123456", "100003460000005676", "2022050353");
//String formId = workflowAllComInfo.getFormId("100003460000005676");
String workcodeId = "100003460000005676";
// 获取明细表表名
List<Map<String,Object>> list = new ArrayList<>();
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.workflow.getType();
String formSql = "";
String sql = "SELECT * FROM form_table WHERE \n" +
" form_id IN ( SELECT id FROM sub_form WHERE form_id IN ( SELECT form_id FROM e10_core_business.dbo.form_table WHERE table_name = 'formtable_main_3540'))";
rs.executeSql(sql,poolname);
while (rs.next()){
Map<String,Object> map = new HashMap<>();
map.put("id", Util.getLongValue(rs.getString("id")));
map.put("table_type", Util.getIntValue(rs.getString("table_type")));
map.put("form_name", Util.null2String(rs.getString("form_name")));
list.add(map);
}
// String token = "";
// try {
// token = AccessTokenUtil.getToken();
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
//
//// log.error("base64:"+base64);
////
// int base64Length = base64.length();
//
// // 计算原始文件大小
// int originalSize = (base64Length * 3) / 4;
//
// // 如果 Base64 字符串末尾有填充字符 '=',需要减去对应的字节数
// if (base64.endsWith("==")) {
// originalSize -= 2; // 每两个 '=' 表示填充了 1 个字节
// } else if (base64.endsWith("=")) {
// originalSize -= 1; // 每 1 个 '=' 表示填充了 1 个字节
// }
//
////
// JSONObject params = new JSONObject();
// params.put("userid", 100001700000063120L);
// params.put("base64", base64);
// params.put("name","测试.png");
// params.put("size",String.valueOf(originalSize));
// params.put("lastModified",System.currentTimeMillis());
////
////
////
// String url = HOST + "/api/file/v2/common/upload/base64?access_token=" + token;
// HttpRequest request = HttpRequest.post(url)
// .header(Header.CONTENT_TYPE, ContentType.MULTIPART.toString())
// .form("userid", 100001700000063120L) // 添加表单字段
// .form("base64", base64)
// .form("name", "测试.png") // 添加表单字段
// .form("size", String.valueOf(originalSize))
// .form("lastModified", System.currentTimeMillis());
//
// // 发送请求并获取响应
// HttpResponse response = request.execute();
//
// // 获取响应状态码
// int statusCode = response.getStatus();
//
// // 获取响应体
// String body = response.body();
// log.error("base64:"+base64);
// String docId = docUtil.createdocByBase642("测试.png", base64, "", "100001700000063120", "");
// RestTemplate restTemplate = new RestTemplate();
// try {
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.MULTIPART_FORM_DATA);
//
// // Create the parameters and add the file
// MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
// param.add("userid", "811711878160941057");
// param.add("name", "测试.png");
// param.add("size", String.valueOf(originalSize));
// param.add("module", "workflow");
// //param.add("access_token", token);
// param.add("base64", base64);
// // Create the request entity using the parameters and headers
// HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(param, headers);
// // Send the request
// ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
// return response.toString();
// }catch (Exception e){
// e.printStackTrace();
// }
return "";
}
}

@ -0,0 +1,44 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2025/1/6 6:08 PM
* @Description:
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DataOptions {
private Long optionId;
private Long dataKey;
private String content;
/**
*
*/
private String type;
private Boolean matchByName;
}

@ -0,0 +1,59 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author liang.cheng
* @Date 2025/1/6 6:08 PM
* @Description:
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FormDataDuty {
private Long fieldId;
private String dataKey;
/**
*
*/
private String content;
private List<DataOptions> dataOptions;
/**
* IDdataKey
*/
private Long subFormId;
/**
* ()1
*/
private Long dataIndex;
/**
* 1
*/
private int fieldType;
@Override
public String toString() {
return "FormDataDuty{" +
"fieldId=" + fieldId +
", dataKey='" + dataKey + '\'' +
", content='" + content + '\'' +
", dataOptions=" + dataOptions +
", subFormId=" + subFormId +
", dataIndex=" + dataIndex +
'}';
}
}

@ -0,0 +1,58 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2025/1/6 6:08 PM
* @Description: 退
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialDetailTablePo {
private String materialNo;
/**
*
*/
private String materialDesc;
private String departmentId;
/**
*
*/
private String averageUse;
/**
*
*/
private String sumMonth;
/**
*
*/
private String inventoryCount;
/**
* 退
*/
private String outCount;
private String money;
/**
*
*/
private String costCenter;
}

@ -0,0 +1,46 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author liang.cheng
* @Date 2025/1/6 6:08 PM
* @Description: 退
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialMainTablePo {
private String creator;
/**
*
*/
private String applicant;
private String departmentId;
/**
*
*/
private String applyDate;
private String sumMoney;
private String applyNo;
private String outApplyDate;
}

@ -0,0 +1,21 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SubmitWorkflowParam {
String loginname;
String password;
String workflowId;
String creator;
String requestLevel;
String mainTable;
String detailTables;
}

@ -0,0 +1,17 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SubmitWorkflowReq {
String SENDID = "";
String ITFID = "";
String SYSID = "";
SubmitWorkflowParam DATAS;
}

@ -0,0 +1,19 @@
package com.weaver.seconddev.njwebservice.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SubmitWorkflowRes {
String SENDID ;
String ITFID;
String SYSID;
String ISTAT;
String MESSAGE;
}

@ -0,0 +1,83 @@
package com.weaver.seconddev.njwebservice.util;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.weaver.common.i18n.tool.util.I18nContextUtil;
import com.weaver.common.i18n.tool.util.Util;
import com.weaver.verupgrade.conn.CONN_TYPE;
import com.weaver.verupgrade.conn.RecordSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* @Author liang.cheng
* @Date 2025/1/7 2:41 PM
* @Description: access_token
* @Version 1.0
*/
public class AccessTokenUtil {
private final static Logger log = LoggerFactory.getLogger(AccessTokenUtil.class);
private static String CORP_ID = "9d18deb9bbeb98f7a2402808f8bb8ce8";
//private static String APP_KEY = "179a9854c471d161db69ec9f16c6e1e";
private static String APP_KEY = "437dd08a2cd0018bf1242128cab4224c";
//private static String APP_SECRET = "9aa17e9391d8fdf4be44f78e2a26be30";
private static String APP_SECRET = "3e86b82ada2b72fdd3d7929d5623b04f";
private static String HOST = "http://10.6.23.235:20600/papi/openapi";
/**
* AccessToken
* @return
* @throws Exception
*/
public static String getToken() throws Exception {
// 获取code
String codeUrl = HOST + "/oauth2/authorize?corpid=" + CORP_ID + "&response_type=code&state=a21";
String codeResponse = HttpUtil.get(codeUrl);
System.out.println(codeResponse);
JSONObject jsonObject = JSONObject.parseObject(codeResponse);
Object errcode = jsonObject.get("errcode");
Object code = jsonObject.get("code");
log.error("本次获取code值"+code+"==> errcode"+errcode);
// 根据code 获取token。
String tokenUrl = HOST + "/oauth2/access_token";
Map<String, Object> tokanParam = new HashMap<>(4);
tokanParam.put("app_key", APP_KEY);
tokanParam.put("app_secret", APP_SECRET);
tokanParam.put("grant_type", "authorization_code");
tokanParam.put("code", code);
String tokenResponse = HttpUtil.post(tokenUrl, tokanParam);
log.error("tokenResponse" + tokenResponse);
JSONObject tokenResponseObj = JSONObject.parseObject(tokenResponse);
return Optional.ofNullable(tokenResponseObj.get("accessToken")).map(Object::toString).orElse(new String());
}
public static String getAccessToken(String tenantKey) {
String accesstoken = "";
String sql = "select accesstoken from e10_common.dbo.uf_tenant_mt where zzkey='"+tenantKey+"' and delete_type ='0'";
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.ebuilder.getType();
rs.setTenantKey(tenantKey);
rs.executeSql(sql, poolname);
if (rs.next()) {
accesstoken = Util.null2String(rs.getString("accesstoken"));
}
return accesstoken;
}
}

@ -0,0 +1,395 @@
package com.weaver.seconddev.njwebservice.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
@Component
public class CommonUtils {
private final static Logger log = LoggerFactory.getLogger(CommonUtils.class);
public static JSONObject toJSON(String data){
if(!StringUtils.isEmpty(data)){
try {
return JSONObject.parseObject(data);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return null;
}
public static Long getJSONLong(JSONObject json,String key){
if(json != null && json.containsKey(key)){
try {
return json.getLong(key);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return null;
}
public static Integer getJSONInteger(JSONObject json,String key){
if(json != null && json.containsKey(key)){
try {
return json.getInteger(key);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return -1;
}
public static String getJSONString(JSONObject json,String key){
if(json != null && json.containsKey(key)){
try {
return null2String(json.getString(key));
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return "";
}
public static JSONObject getJSONObject(JSONObject json,String key){
if(json != null && json.containsKey(key)){
try {
return json.getJSONObject(key);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return null;
}
public static JSONArray getJSONArray(JSONObject json, String key){
if(json != null && json.containsKey(key)){
try {
return json.getJSONArray(key);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return null;
}
public static JSONObject getJSONObject(JSONArray json, int idx){
if(json != null && json.size() > idx){
try {
return json.getJSONObject(idx);
}catch (Throwable t){
log.error(t.getMessage(),t);
}
}
return null;
}
public static String mapToStrData(Map<String, Object> para){
if(para != null) {
return JSONObject.toJSON(para).toString();
}
return "";
}
public static void strToLongList(List<Long> list,String strs){
strToLongList(list,strs,true);
}
public static void strToLongList(List<Long> list,String strs,boolean isDist){
if(list == null){
return;
}
if(StringUtils.isEmpty(strs)){
return;
}
String[] strList = StringUtils.split(strs, ",");
for(String str:strList){
if(StringUtils.isEmpty(str)){
continue;
}
long id = getLongValue(str);
if(id > 0l && (isDist == false || !list.contains(id))){
list.add(id);
}
}
}
public static long getLongValue(Object v){
return getLongValue(null2String(v));
}
public static long getLongValue(String v) {
return getLongValue(v, -1);
}
public static long getLongValue(String v, long def) {
try {
return Long.parseLong(v);
} catch (Exception ex) {
return def;
}
}
public static int getIntValue(Object o){
return getIntValue(null2String(o));
}
public static int getIntValue(String s){
return getIntValue(s,-1);
}
public static int getIntValue(String s, int def){
try {
return NumberUtils.toInt(s);
} catch (Exception ex) {
return def;
}
}
public static String null2String(Object s) {
return s == null ? "" : s.toString();
}
public static String null2String(Object s, String def) {
return s == null ? (def == null ? "" : def) : s.toString();
}
public static String stringReplace(String sou, String s1, String s2) {
//int idx = sou.indexOf(s1);
//if (idx < 0) {
// return sou;
//}
//return sou.substring(0, idx) + s2 + StringReplace(sou.substring(idx + s1.length()), s1, s2);
sou = null2String(sou);
s1 = null2String(s1);
s2 = null2String(s2);
try{
sou = sou.replace(s1, s2);
}catch(Exception e){
//System.out.println(e);//将未知异常打印出来,便于检查错误。
}
return sou;
}
/**
*
*
* @param s
* @return
*/
public static String toScreen(String s) {
char c[] = s.toCharArray();
char ch;
int i = 0;
StringBuffer buf = new StringBuffer();
while (i < c.length) {
ch = c[i++];
if (ch == '\r')
buf.append("");
else if (ch == '\n')
buf.append("");
else
buf.append(ch);
}
return buf.toString();
}
/**
*
*
* @param s
* @return
*/
public static String toExcel(String s) {
if (s == null) return "";
//因本方法会将字符串 &符号转换故先将欧元符号转义符转换为其Unicode码
s = s.replaceAll("&euro;", "\u20AC");
String str = toScreen(s);
str = stringReplace(str, "&ang;", "∠");
str = stringReplace(str, "&phi;", "φ");
str = stringReplace(str, "&quot;", "\"");
str = stringReplace(str, "&nbsp", "%nbsp");
//str=Util.StringReplace(str,"'","");
str = stringReplace(str, "&lt;", "<");
str = stringReplace(str, "&gt;", ">");
str = stringReplace(str, "&dt;&at;", "<br>");
str = stringReplace(str, "&", "&amp;");
str = stringReplace(str, "<br>", "&dt;&at;");
if ("&dt;&at;".equals(str)) {
str = "";
}
//在方法最后,又将欧元符号置换为转义符
str = str.replaceAll("\u20AC", "&euro;");
return str;
}
public static String delHtml(final String inputString) {
String htmlStr = toExcel(inputString); // 含html标签的字符串
String textStr = "";
java.util.regex.Pattern p_script;
java.util.regex.Matcher m_script;
java.util.regex.Pattern p_html;
java.util.regex.Matcher m_html;
try {
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
String regEx_script = "<[/s]*?script[^>]*?>[/s/S]*?<[/s]*?//[/s]*?script[/s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[/s/S]*?<//script>
p_script = java.util.regex.Pattern.compile(regEx_script, java.util.regex.Pattern.CASE_INSENSITIVE);
m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); // 过滤script标签
p_html = java.util.regex.Pattern.compile(regEx_html, java.util.regex.Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); // 过滤html标签
textStr = htmlStr;
} catch (Exception e) {
System.err.println("Html2Text: " + e.getMessage());
}
return htmlToTxt(textStr).trim();// 返回文本字符串
}
/**
* html
*
* @param input
* @return
*/
public static String htmlToTxt(String input) {
if (input == null || input.trim().equals("")) {
return "";
}
// 去掉所有html元素,
String str = input.replaceAll("<[a-zA-Z]+[1-9]?[^><]*>", "");
return str;
}
//==new=
public static int getIntValue(Object s, int def){
return getIntValue(null2String(s));
}
public static List<Long> strToLongList(String strs){
List<Long> list = new ArrayList<Long>();
strToLongList(list,strs,true);
return list;
}
public static int dateInterval(String fromdate, String todate) {
Calendar fromcalendar = getCalendar(fromdate);
Calendar tocalendar = getCalendar(todate);
if (fromcalendar == null || tocalendar == null)
return 0;
return (int) ((tocalendar.getTimeInMillis() - fromcalendar.getTimeInMillis()) / 3600 / 24 / 1000);
}
/**
* @param datetime - '2004-05-12 12:00:23' '2004-05-12'
* @return null
*/
public static Calendar getCalendar(String datetime) {
int datetimelength = datetime.length() ;
switch(datetimelength) {
case 19 :
return getCalendar(datetime , "yyyy'-'MM'-'dd' 'HH:mm:ss") ;
case 10 :
return getCalendar(datetime , "yyyy'-'MM'-'dd") ;
default :
return null ;
}
}
/**
* @param datetime -
* @param formart -
* @return null
*/
public static Calendar getCalendar(String datetime, String formart) {
SimpleDateFormat SDF = new SimpleDateFormat(formart) ;
Calendar calendar = Calendar.getInstance() ;
try {
calendar.setTime(SDF.parse(datetime)) ;
} catch (ParseException e) {
return null ;
}
return calendar ;
}
/**
* @return yyyy'-'MM'-'dd
*
* yyyy'-'MM'-'dd
*
* 2004-09-07
*/
public static String getCurrentDateString() {
String timestrformart = "yyyy'-'MM'-'dd" ;
SimpleDateFormat SDF = new SimpleDateFormat(timestrformart) ;
Calendar calendar = Calendar.getInstance() ;
return SDF.format(calendar.getTime()) ;
}
public static String getMessage(String msgMode,String key,String val){
key = null2String(key).trim();
val = null2String(val).trim();
msgMode = null2String(msgMode).trim();
if(!"".equals(msgMode) && !"".equals(key)) {
msgMode = msgMode.replaceAll(key, val);
}
return msgMode;
}
public static List<Long> tranStrToLongList(Object idListObj){
List<Long> docIds = new ArrayList<Long>();
if(idListObj != null) {
try {
JSONArray idObjs = JSONArray.parseArray(null2String(idListObj));
for (Object idObj : idObjs) {
long id = getLongValue(idObj);
if (id > 0l) {
docIds.add(id);
}
}
} catch (Exception e) {
log.error("trans error :{}", idListObj);
log.error(e.getMessage(), e);
}
}
return docIds;
}
}

@ -0,0 +1,144 @@
package com.weaver.seconddev.njwebservice.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONUtil;
import com.weaver.datasource.utils.rest.CommonRestService;
import com.weaver.ebuilder.datasource.api.entity.ExecuteSqlEntity;
import com.weaver.ebuilder.datasource.api.entity.SqlParamEntity;
import com.weaver.ebuilder.datasource.api.enums.SqlParamType;
import com.weaver.ebuilder.datasource.api.enums.SourceType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author liang.cheng
* @Date 2025/1/7 2:02 PM
* @Description:
* @Version 1.0
*/
@Slf4j
@Component
public class DataSetUtil {
@Autowired
private CommonRestService commonRestService;
public static String base64(String sql) {
return Base64.encode(sql);
}
/**
* sql:/sapi/secondev/ds/executeSql
* sourceType :LOGIC
* groupId : weaver-ebuilder-app-service group
* sql : select * from ebda_app limit 10
* @param sourceType LOGIC: ()
* @param groupId
* @param sql
* @return
*/
public Map<String, Object> executeLogicSql(SourceType sourceType, String groupId, String sql) {
//拼接参数
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("sourceType", sourceType);
valueMap.put("groupId", groupId);
valueMap.put("sql", base64(sql));
try {
return commonRestService.getForObject("/sapi/secondev/ds/executeSql", valueMap, MediaType.APPLICATION_FORM_URLENCODED, Map.class);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw e;
}
}
/**
* 1201线
* LOGIC:sqlsql,
* EXTERNAL:sqlsql,
* @param sourceType
* @param groupId id
* @param sql sql
* @param sqlParams sql
* @param transId id
* @param startTrans
* @param commit
* @param rollback
*/
public Map<String, Object> executeSqlWithTrans(SourceType sourceType, String groupId, String sql, List<SqlParamEntity> sqlParams, String transId, Boolean startTrans, Boolean commit, Boolean rollback) {
//执行sql 参数sourceType groupId sql
ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity();
executeSqlEntity.setSql(base64(sql));
executeSqlEntity.setGroupId(groupId);
executeSqlEntity.setSourceType(sourceType);
//若通过占位符方式查询外部数据库,需增加此参数
//占位符list 的顺序 要与 sql 的?占位符顺序一致
if (sqlParams != null && !sqlParams.isEmpty()) {
executeSqlEntity.setParams(sqlParams);
}
//设置事务id
if (transId != null && !transId.isEmpty()) {
executeSqlEntity.setTransactionId(transId);
}
//是否开启事务
if (startTrans != null && startTrans) {
executeSqlEntity.setStartTransaction(true);
}
//是否提交事务
if (commit != null && commit) {
executeSqlEntity.setCommitTransaction(true);
}
//是否回滚事务
if (rollback != null && rollback) {
executeSqlEntity.setRollbackTransaction(true);
}
//拼接参数
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("entity", JSONUtil.toJsonStr(executeSqlEntity));
try {
return commonRestService.postForForm("/sapi/secondev/ds/executeSqlAll", Map.class, valueMap);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw e;
}
}
public List<SqlParamEntity> getSqlParams() {
List<SqlParamEntity> sqlParams = new ArrayList<>();
SqlParamEntity sqlParam1 = new SqlParamEntity();
sqlParam1.setParamType(SqlParamType.VARCHAR);
sqlParam1.setValue("thsv5s4n2c");
sqlParams.add(sqlParam1);
SqlParamEntity sqlParam2 = new SqlParamEntity();
sqlParam2.setParamType(SqlParamType.INTEGER);
sqlParam2.setValue("0");
sqlParams.add(sqlParam2);
List<Long> ids = new ArrayList<>();
ids.add(1054407582048280585L);
ids.add(1054407345976074241L);
ids.add(1054406667262189570L);
for (Long id : ids) {
SqlParamEntity sqlParam3 = new SqlParamEntity();
sqlParam3.setParamType(SqlParamType.LONG);
sqlParam3.setValue(String.valueOf(id));
sqlParams.add(sqlParam3);
}
return sqlParams;
}
}

@ -0,0 +1,297 @@
package com.weaver.seconddev.njwebservice.util;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.weaver.ebuilder.datasource.api.entity.ExecuteSqlEntity;
import com.weaver.ebuilder.datasource.api.entity.SqlParamEntity;
import com.weaver.ebuilder.datasource.api.enums.SourceType;
import com.weaver.ebuilder.datasource.api.enums.SqlParamType;
import com.weaver.ebuilder.datasource.api.query.dto.dw.DynamicParamDto;
import com.weaver.ebuilder.datasource.api.query.dto.dw.FieldQuery;
import com.weaver.ebuilder.datasource.api.query.dto.dw.GroupQuery;
import com.weaver.ebuilder.datasource.api.query.dto.dw.TableQuery;
import com.weaver.ebuilder.datasource.api.service.DataSetService;
import com.weaver.ebuilder.datasource.api.service.impl.EbFormDataService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* DatabaseUtil SQL
*/
@Component
public class DatabaseUtils {
private final static Logger log = LoggerFactory.getLogger(DatabaseUtils.class);
@Autowired
private DataSetService dataSetService;
@Autowired
private EbFormDataService dataService;
/**
* SQL
*
* @param entity SQL
* @return Map
* @throws RuntimeException SQL
*/
public Map<String, Object> executeSql(ExecuteSqlEntity entity) {
Map<String, Object> map = dataSetService.executeSql(entity);
if ("FAIL".equals(CommonUtils.null2String(map.get("status")).toUpperCase(Locale.ROOT))) {
log.error("sql执行失败=>{}", JSONObject.toJSONString(map));
throw new RuntimeException("sql执行异常");
} else {
return map;
}
}
/**
* SQL
*
* @param entity SQL
* @param pageNo
* @param pageSize
* @return Map
* @throws RuntimeException SQL
*/
public Map<String, Object> executeSql(ExecuteSqlEntity entity, int pageNo, int pageSize) {
entity.setPageNo(pageNo);
entity.setPageSize(pageSize);
Map<String, Object> map = dataSetService.executeForQuery(entity);
if ("FAIL".equals(CommonUtils.null2String(map.get("status")).toUpperCase(Locale.ROOT))) {
log.error("sql执行失败=>{}", JSONObject.toJSONString(map));
throw new RuntimeException("sql执行异常");
} else {
return map;
}
}
/**
* SQL
*
* @param sql SQL
* @param groupId ID
* @paramDesc ID select APPLICATION_MARK,APPLICATION_name from eteams.ds_mark_service_relation
* @return SQL
*/
public ExecuteSqlEntity getExecuteSqlEntity(String sql, String groupId) {
log.error("sql=>{}", sql);
ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity();
executeSqlEntity.setSql(base64(sql));
executeSqlEntity.setGroupId(groupId);
executeSqlEntity.setSourceType(SourceType.LOGIC);
executeSqlEntity.setGroupKey("0");
return executeSqlEntity;
}
/**
* SQL Base64
*
* @param sql SQL
* @return
*/
public String base64(String sql) {
return Base64.encode(sql);
}
/**
*
*
* @param map Map
* @return Map
*/
public List<Map<String, Object>> getDataSourceList(Map<String, Object> map) {
List<Map<String, Object>> entity = new ArrayList();
if ("OK".equals(CommonUtils.null2String(map.get("status")).toUpperCase(Locale.ROOT)) && map.get("count") != null && CommonUtils.getIntValue(map.get("count")) > 0) {
entity = (List) map.get("records");
}
return keyToLowerCase((List) entity);
}
public Map<String, Object> getOneDataSource(Map<String, Object> map) {
List<Map<String, Object>> entity = getDataSourceList(map);
return (Map)(CollectionUtil.isNotEmpty(entity) ? (Map)entity.get(0) : new HashMap());
}
/**
* Map
*
* @param orgMapList Map
* @return Map
*/
public List<Map<String, Object>> keyToLowerCase(List<Map<String, Object>> orgMapList) {
List<Map<String, Object>> resultList = new ArrayList();
Iterator var2 = orgMapList.iterator();
while (var2.hasNext()) {
Map<String, Object> stringObjectMap = (Map) var2.next();
resultList.add(keyToLowerCase(stringObjectMap));
}
return resultList;
}
/**
* Map
*
* @param orgMap Map
* @return Map
*/
public Map<String, Object> keyToLowerCase(Map<String, Object> orgMap) {
Map<String, Object> resultMap = new HashMap();
if (orgMap != null && !orgMap.isEmpty()) {
Set<Map.Entry<String, Object>> entrySet = orgMap.entrySet();
Iterator var3 = entrySet.iterator();
while (var3.hasNext()) {
Map.Entry<String, Object> entry = (Map.Entry) var3.next();
String key = (String) entry.getKey();
Object value = entry.getValue();
resultMap.put(key.toLowerCase(), value);
}
return resultMap;
} else {
return resultMap;
}
}
/**
*
*
* @param sourceType sourceType
* ETEAMS :
* FORM: ebuilder
* LOGIC: ()
* EXTERNAL
* @return
*/
public List<Map<String, Object>> getDataGroups(String sourceType, Boolean flag) {
GroupQuery query = new GroupQuery();
query.setSourceType(SourceType.valueOf(sourceType));
query.setShowSqlDataset(flag);
DynamicParamDto dynamicParamDto = new DynamicParamDto();
dynamicParamDto.setUserId(10000L);
dynamicParamDto.setTenantKey("tk");
query.setDynamicParamDto(dynamicParamDto);
return dataSetService.getDataGroups(query);
}
/**
*
*
* @param sourceType
* @param groupId
* @param pageNum
* @param pageSize
* @return
*/
public Map<String, Object> getDataSets(String sourceType, String groupId, Integer pageNum, Integer pageSize) {
TableQuery tableQuery = new TableQuery();
tableQuery.setSourceType(SourceType.valueOf(sourceType));
tableQuery.setGroupId(groupId);
//非必传
//tableQuery.setName(name);
tableQuery.setPageNo(pageNum);
tableQuery.setPageSize(pageSize);
return dataSetService.getDataSetsByPage(tableQuery);
}
/**
*
* sourceType :LOGIC
* sourceId : 8494845523559165780
* groupId : weaver-crm-service
*
* @param
* @return
*/
public List<Map<String, Object>> getFields(String sourceType, String sourceId, String groupId) {
FieldQuery query = new FieldQuery();
query.setSourceType(SourceType.valueOf(sourceType));
query.setSourceId(sourceId);
query.setGroupId(groupId);
return dataSetService.getFields(query);
}
/**
* sql
* sourceType :LOGIC
* groupId : weaver-ebuilder-app-service
* sql : select * from ebda_app limit 10
*
* @param
* @return
*/
public Map<String, Object> execute(String sourceType, String groupId, String sql) {
//执行sql 参数sourceType groupId sql
ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity();
executeSqlEntity.setSql(base64(sql));
executeSqlEntity.setGroupId(groupId);
executeSqlEntity.setSourceType(SourceType.valueOf(sourceType));
return dataSetService.executeSql(executeSqlEntity);
}
public String getMysqlPagedSql(String sql,int pageNo, int pageSize) {
if(pageNo<=0){
pageNo = 1;
}
if(pageSize<=0){
pageSize = 20;
}
int start = (pageNo-1)*pageSize;
int end = pageNo*pageSize;
return new StringBuffer().append(sql).append(
" LIMIT "+start+","+(end-start)).toString();
}
public Map<String, Object> executeForQuery(String sourceType, String groupId, String sql,List<SqlParamEntity> sqlparam) {
//执行sql 参数sourceType groupId sql sqlparam
ExecuteSqlEntity executeSqlEntity = new ExecuteSqlEntity();
executeSqlEntity.setSql(base64(sql));
executeSqlEntity.setGroupId(groupId);
executeSqlEntity.setSourceType(SourceType.valueOf(sourceType));
executeSqlEntity.setParams(sqlparam);
return dataSetService.executeSql(executeSqlEntity);
}
/**
* sql
* @param list
* @return
*/
public List<SqlParamEntity> getSqlParamEntity(List<String> list){
List<SqlParamEntity> sqlparam = new ArrayList<SqlParamEntity>();
for (String str : list){
SqlParamEntity sqlParamEntity = new SqlParamEntity();
sqlParamEntity.setParamType(SqlParamType.VARCHAR);
sqlParamEntity.setValue(str);
sqlparam.add(sqlParamEntity);
}
return sqlparam;
}
}

@ -0,0 +1,449 @@
package com.weaver.seconddev.njwebservice.util;
import com.weaver.common.hrm.util.Util;
import com.weaver.common.i18n.tool.util.I18nContextUtil;
import com.weaver.eteams.file.client.file.FileObj;
import com.weaver.eteams.file.client.param.RemoteUploadParam;
import com.weaver.file.ud.api.FileUploadService;
import com.weaver.teams.domain.EntityType;
import com.weaver.verupgrade.conn.CONN_TYPE;
import com.weaver.verupgrade.conn.RecordSet;
import org.apache.axis.encoding.Base64;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipInputStream;
/**
* createby jianyong.tang
* createTime
* version v1
* desc
*/
@Component
public class DocUtil {
/**
* 16id
* @param filename
* @param data16
* @param seccategory
* @param createrid
* @return
*/
private final Logger log = LoggerFactory.getLogger(DocUtil.class);
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
return data;
}
public static String hexStringToString(String s) {
if (s == null || s.equals("")) {
return null;
}
s = s.replace(" ", "");
byte[] baKeyword = new byte[s.length() / 2];
for (int i = 0; i < baKeyword.length; i++) {
try {
baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
} catch (Exception e) {
e.printStackTrace();
}
}
try {
s = new String(baKeyword, StandardCharsets.UTF_8);
// new String();
} catch (Exception e1) {
e1.printStackTrace();
}
return s;
}
@Autowired
private FileUploadService fileUploadService;
public String createdocByBase642(String filename,String base64Str,String seccategory,String createrid,String tenantKey){
String docid = "";
try {
//DocAccService das = new DocAccService();
RemoteUploadParam remoteUploadParam = new RemoteUploadParam(filename, "", EntityType.document.name());
FileObj fileObj = fileUploadService.uploadLocalFileWithBase64(toSemiangle(base64Str.replace(" ","").replace("\r","")), Long.valueOf(createrid), "", remoteUploadParam);
//long imagefileid = das.getFileByBase64(toSemiangle(base64Str), filename);
long imagefileid = ObjectUtils.isEmpty(fileObj) ? -1L : fileObj.getFileid();
docid=String.valueOf(imagefileid);
// DocSaveService var22 = new DocSaveService();
// if(imagefileid>0){
// RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
// String poolname = CONN_TYPE.hrm.getType();
// rs.setTenantKey(tenantKey);
// String departmentId="-1";
// String sql="SELECT department FROM eteams.dbo.employee WHERE id = '"+createrid+"' AND delete_type = 0 AND tenant_key = '"+tenantKey+"'";
// rs.executeSql(sql, poolname);
// User user = new User();
// if(rs.next()){
// departmentId = Util.null2String(rs.getString("department"));
// }
// user.setUid(Long.valueOf(createrid));
// user.setUserDepartment(Long.valueOf(departmentId));
// user.setLanguage(7);
// user.setLogintype("1");
// user.setLoginip("127.0.0.1");
//
// log.error("seccategory:"+seccategory+"ten:"+HrmContextUtil.getCurrentTenantKey()+" imagefileid:"+imagefileid+" user:"+user.getUID());
// docid=String.valueOf(var22.accForDoc(Long.valueOf(seccategory),imagefileid,user));
// }
//拿到附件id就可以更新到流程表字段
}catch (Exception e){
log.error("e",e);
}
return docid;
}
public String toSemiangle(String src) {
char[] c = src.toCharArray();
for (int index = 0; index < c.length; index++) {
if (c[index] == 12288) {// 全角空格
c[index] = (char) 32;
} else if (c[index] > 65280 && c[index] < 65375) {// 其他全角字符
c[index] = (char) (c[index] - 65248);
}
}
return String.valueOf(c);
}
public Map<String,String> getDocInfo(String docid,String tenantKey) throws Exception {
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.document.getType();
rs.setTenantKey(tenantKey);
Map<String,String> docmap = new HashMap<>();
String uploadBuffer="";//base64字符串
String sql = " select c.file_path ,c.file_url ,b.id as imagefileid,b.size ,b.NAME from e10_core_business.dbo.document a,e10_core_business.dbo.fileobj b,e10_core_business.dbo.file_storage_info c where a.id=b.REF_ID and b.URL =c.file_url " +
"and a.ID ="+docid+" " +
"AND a.delete_type = 0 " +
"AND a.tenant_key = '"+tenantKey+"' " +
"AND b.delete_type = 0 " +
"AND b.tenant_key = '"+tenantKey+"' " +
"AND c.delete_type = 0 " +
"AND c.tenant_key = '"+tenantKey+"';";
rs.executeSql(sql, poolname);
if(rs.next()){
String imagefileid = Util.null2String(rs.getString("imagefileid"));
String filerealpath = Util.null2String(rs.getString("file_path"))+"/"+Util.null2String(rs.getString("file_url"));
String iszip ="1";
String filesize = Util.null2String(rs.getString("size"));
String imagefilename = Util.null2String(rs.getString("NAME"));//文件名
InputStream fi = getFile(filerealpath,iszip);
docmap.put("imagefileid",imagefileid);
docmap.put("filename",imagefilename);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while((count = fi.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
uploadBuffer = Base64.encode(baos.toByteArray());
docmap.put("base64str",uploadBuffer);
docmap.put("filesize",filesize);
baos.close();
//这里就可以封装 文件名和文件内容 传给第三方系统
}
return docmap;
}
public Map<String,String> getDocInfoWf(String fileid,String tenantKey) throws Exception {
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.document.getType();
rs.setTenantKey(tenantKey);
Map<String,String> docmap = new HashMap<>();
String uploadBuffer="";//base64字符串
String sql = " select c.file_path ,c.file_url ,b.id as imagefileid,b.size ,b.NAME from e10_core_business.dbo.fileobj b,e10_core_business.dbo.file_storage_info c where b.URL =c.file_url " +
"and b.ID ="+fileid+" " +
"AND b.delete_type = 0 " +
"AND b.tenant_key = '"+tenantKey+"' " +
"AND c.delete_type = 0 " +
"AND c.tenant_key = '"+tenantKey+"';";
rs.executeSql(sql, poolname);
if(rs.next()){
String imagefileid = Util.null2String(rs.getString("imagefileid"));
String filerealpath = Util.null2String(rs.getString("file_path"))+"/"+Util.null2String(rs.getString("file_url"));
String iszip ="1";
String filesize = Util.null2String(rs.getString("size"));
String imagefilename = Util.null2String(rs.getString("NAME"));//文件名
InputStream fi = getFile(filerealpath,iszip);
docmap.put("imagefileid",imagefileid);
docmap.put("filename",imagefilename);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while((count = fi.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
uploadBuffer = Base64.encode(baos.toByteArray());
docmap.put("base64str",uploadBuffer);
docmap.put("filesize",filesize);
baos.close();
//这里就可以封装 文件名和文件内容 传给第三方系统
}
return docmap;
}
/**
*
* @param filerealpath
* @param iszip
* @return
* @throws Exception
*/
private InputStream getFile(String filerealpath, String iszip)
throws Exception {
ZipInputStream zin = null;
InputStream imagefile = null;
File thefile = new File(filerealpath);
if (iszip.equals("1")) {
zin = new ZipInputStream(new FileInputStream(thefile));
if (zin.getNextEntry() != null)
imagefile = new BufferedInputStream(zin);
} else {
imagefile = new BufferedInputStream(new FileInputStream(thefile));
}
return imagefile;
}
public String getShareRyids(String wdid,String tenantKey){
StringBuffer ryids = new StringBuffer();
if("".equals(wdid)){
return "";
}
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.document.getType();
rs.setTenantKey(tenantKey);
RecordSet rs_dt = I18nContextUtil.getBean(RecordSet.class);
rs_dt.setTenantKey(tenantKey);
String typeids = "";
String flag = "";
String sql_dt = "";
String sql = "select distinct target_type from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"'";
rs.executeSql(sql, poolname);
while (rs.next()){
String type = Util.null2String(rs.getString("target_type"));
typeids = typeids + flag +type;
flag = ",";
}
poolname = CONN_TYPE.hrm.getType();
typeids = ","+typeids+",";
log.error(typeids);
flag = "";
if(typeids.indexOf(",11,")>=0){//所有人
String seclevel = "";
String seclevelmax = "";
sql = "select target_min_sec_level ,target_max_sec_level from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type=11";
rs.executeSql(sql, CONN_TYPE.document.getType());
if(rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
}
sql = "select id from eteams.dbo.employee WHERE PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax +" AND delete_type = 0 AND tenant_key = '"+tenantKey+"'";
rs.executeSql(sql, poolname);
while (rs.next()){
ryids.append(flag).append(rs.getString("id"));
flag = ",";
}
}
if(typeids.indexOf(",5,")>=0 || typeids.indexOf(",501,")>=0){//分部
String seclevel = "";
String seclevelmax = "";
String subcomid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(5,501)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
subcomid = Util.null2String(rs.getString("target_id"));
if("".equals(subcomid)){
continue;
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a,eteams.dbo.department b WHERE a.DEPARTMENT =b.id and b.subcompanyid ='"+subcomid+"' and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax +" AND a.delete_type = 0 AND a.tenant_key = '"+tenantKey+"'";
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
if(typeids.indexOf(",6,")>=0 || typeids.indexOf(",502,")>=0){//分部下级
String seclevel = "";
String seclevelmax = "";
String subcomid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(6,502)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
subcomid = Util.null2String(rs.getString("target_id"));
if("".equals(subcomid)){
continue;
}
String comids = "";
String flag1 = "";
sql_dt = "WITH allsub(id,name,parent) " +
"as ( " +
"SELECT id,name ,parent FROM eteams.dbo.department where id in("+subcomid+") and type = 'subcompany' AND virtualid = 1 and STATUS =1 AND delete_type = 0 AND tenant_key = '"+tenantKey+"' " +
" UNION ALL SELECT a.id,a.name,a.parent FROM eteams.dbo.department a,allsub b where a.parent = b.id and type = 'subcompany' AND virtualid = 1 and STATUS =1 AND delete_type = 0 AND tenant_key = '"+tenantKey+"' " +
") select id from allsub";
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
comids = comids + flag1 +rs_dt.getString("id");
flag1 = ",";
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a,eteams.dbo.department b WHERE a.DEPARTMENT =b.id and b.subcompanyid in("+comids+") and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax +" AND a.delete_type = 0 AND a.tenant_key = '"+tenantKey+"'";
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
if(typeids.indexOf(",2,")>=0||typeids.indexOf(",2002,")>=0){//部门
String seclevel = "";
String seclevelmax = "";
String deptid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(2,2002)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
deptid = Util.null2String(rs.getString("target_id"));
if("".equals(deptid)){
continue;
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a WHERE a.DEPARTMENT ='"+deptid+"' and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax +" AND delete_type = 0 AND tenant_key = '"+tenantKey+"'";
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
if(typeids.indexOf(",3,")>=0 || typeids.indexOf(",3002,")>=0){//部门含下级
String seclevel = "";
String seclevelmax = "";
String deptid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(3,3002)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
deptid = Util.null2String(rs.getString("target_id"));
if("".equals(deptid)){
continue;
}
String deptids = "";
String flag1 = "";
sql_dt = "WITH allsub(id,name,parent) " +
"as ( " +
"SELECT id,name ,parent FROM eteams.dbo.department where id in("+deptid+") and type = 'department' AND virtualid = 1 and STATUS =1 AND delete_type = 0 AND tenant_key = '"+tenantKey+"' " +
" UNION ALL SELECT a.id,a.name,a.parent FROM eteams.dbo.department a,allsub b where a.parent = b.id and type = 'department' AND virtualid = 1 and STATUS =1 AND delete_type = 0 AND tenant_key = '"+tenantKey+"' " +
") select id from allsub";
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
deptids = deptids + flag1 +rs_dt.getString("id");
flag1 = ",";
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a WHERE a.DEPARTMENT in("+deptids+") and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax +" AND delete_type = 0 AND tenant_key = '"+tenantKey+"'";
log.error(sql_dt);
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
if(typeids.indexOf(",1,")>=0){//人员
String ryid = "";
sql = "select target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(1)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
ryid = Util.null2String(rs.getString("target_id"));
if("".equals(ryid)){
continue;
}
ryids.append(flag).append(ryid);
flag = ",";
}
}
if(typeids.indexOf(",10,")>=0){//角色 人员
String seclevel = "";
String seclevelmax = "";
String roleid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(10)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
roleid = Util.null2String(rs.getString("target_id"));
if("".equals(roleid)){
continue;
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a where id in(SELECT user_id FROM eteams.dbo.auth_user_role WHERE role_id = "+roleid+" AND resource_type = 'RESOURCE' AND delete_type = 0 AND tenant_key = '"+tenantKey+"' ) and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax;
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
if(typeids.indexOf(",1411,")>=0){//群组
String seclevel = "";
String seclevelmax = "";
String groupid = "";
sql = "select target_min_sec_level ,target_max_sec_level,target_id from e10_core_business.dbo.document_ph_doc_s01 where source_id="+wdid+" and delete_type=0 and tenant_key ='"+tenantKey+"' and target_type in(1411)";
rs.executeSql(sql,CONN_TYPE.document.getType());
while (rs.next()){
seclevel = Util.null2String(rs.getString("target_min_sec_level"));
seclevelmax = Util.null2String(rs.getString("target_max_sec_level"));
groupid = Util.null2String(rs.getString("target_id"));
if("".equals(groupid)){
continue;
}
sql_dt = "SELECT a.id FROM eteams.dbo.employee a where id in(SELECT employee FROM eteams.dbo.channel_user_link where channel="+groupid+" and delete_type=0) and PERSONNEL_STATUS <6 and sec_level>="+seclevel+" and sec_level<="+seclevelmax;
rs_dt.executeSql(sql_dt,poolname);
while (rs_dt.next()){
ryids.append(flag).append(rs_dt.getString("id"));
flag = ",";
}
}
}
return ryids.toString();
}
}

@ -0,0 +1,256 @@
package com.weaver.seconddev.njwebservice.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import com.weaver.common.hrm.util.Util;
import com.weaver.common.i18n.tool.util.I18nContextUtil;
import com.weaver.seconddev.njwebservice.entity.DataOptions;
import com.weaver.seconddev.njwebservice.entity.FormDataDuty;
import com.weaver.verupgrade.conn.CONN_TYPE;
import com.weaver.verupgrade.conn.RecordSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
/**
* @Author liang.cheng
* @Date 2025/1/7 11:20 AM
* @Description:
* @Version 1.0
*/
public class SecondUtil {
private final static Logger log = LoggerFactory.getLogger(SecondUtil.class);
public static String getNacosContent(String dataId,String group,String key) {
String configSingle = "";
// 定义 Nacos 服务器地址和配置信息
String serverAddr = "10.6.23.235:20000";
// 初始化 Nacos 配置服务
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
try {
ConfigService configService = NacosFactory.createConfigService(properties);
String content = configService.getConfig(dataId, group, 5000);
log.error("Config content: " + content);
// 解析 Properties 文件
Properties prop = new Properties();
prop.load(new java.io.ByteArrayInputStream(content.getBytes()));
configSingle = prop.getProperty(key);
} catch (NacosException | java.io.IOException e) {
log.error("Failed to get config: " + e.getMessage());
}
return configSingle;
}
public static String getWorkflowConfig(String loginName) {
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.ebuilder.getType();
String pwd = "";
String sql = "select pro from uf_submitconfig where zdmc = '"+loginName+"'";
rs.executeSql(sql,poolname);
if (rs.next()){
pwd = Util.null2String(rs.getString("pro"));
}
return pwd;
}
public static String validationParam(String loginName,String password,String workflowId,String creator) {
//1.权限判断 日志返回获取nacos文件权限不足 todo
// String pwd = getNacosContent("weaver-secondev-wsaccount.properties", "DEFAULT_GROUP", loginName);
// log.error("配置文件获取值:"+pwd);
// if(pwd == null || !pwd.equals(password)){
// return "权限不足...";
// } 采用eb表单
String pwd = getWorkflowConfig(loginName);
log.info("validationParam pwd = " + pwd);
if("".equals(pwd) || !pwd.equals(password)){
return "权限不足...";
}
//2.todo e10获取ip地址 log4fj记录
log.error("调用主机ip地址日志记录");
//3.流程名 流程ID
if ("".equals(workflowId)) {
return "流程ID不能为空...";
}
//4.todo 流程id不存在时默认流程 e10不知道怎么查
//5.创建人
if("".equals(creator)) {
return "创建人不能为空...";
}
return "";
}
/**
* Id
* @param workflowId
* @return
*/
public static List<Long> getDetailFormId(String workflowId) {
log.error("getDetailFormId start : " + workflowId);
List<Long> formIdList = new ArrayList();
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.workflow.getType();
String sql = "select form_id from form_table where form_id in (select id from sub_form where form_id in (select relatekey from e10_core_business.dbo.wfp_relateform where workflowid = '"+workflowId+"'))";
rs.executeSql(sql,poolname);
while (rs.next()){
formIdList.add(Util.getLongValue(rs.getString("form_id")));
}
log.error("formIdList : " + formIdList);
return formIdList;
}
/**
*
* @return
*/
public static JSONObject getFromDataByDataDetails(List<FormDataDuty> formDataDutyList) {
JSONObject formData = new JSONObject();
formData.put("module","workflow");
JSONArray dataDetails = new JSONArray();
formData.put("dataDetails", dataDetails);
// JSONObject inputDataKey = new JSONObject();
// inputDataKey.put("dataKey", "sqdh");
// inputDataKey.put("content", "12345");
// dataDetails.add(inputDataKey);
//
// //申请人
// JSONObject sqr = new JSONObject();
// dataDetails.add(sqr);
// JSONArray dataOptions = new JSONArray();
// sqr.put("dataKey","sqr");
// sqr.put("dataOptions",dataOptions);
//
// JSONObject option = new JSONObject();
// option.put("optionId",100001700000063120L);
// dataOptions.add(option);
//
//
// //申请部门
//
// JSONObject sqbm = new JSONObject();
// dataDetails.add(sqbm);
// JSONArray dataOptions_sqbm = new JSONArray();
// sqbm.put("dataKey","sqbm");
// sqbm.put("dataOptions",dataOptions_sqbm);
//
// JSONObject option_sqbm = new JSONObject();
// option_sqbm.put("optionId",100001590000004676L);
// dataOptions_sqbm.add(option_sqbm);
//
// JSONObject aa1 = new JSONObject();
// dataDetails.add(aa1);
// aa1.put("dataKey","wlbh");
// aa1.put("dataIndex",1L);
// aa1.put("content","1");
// aa1.put("subFormId","100003690000001814");
//
// JSONObject cc1 = new JSONObject();
// dataDetails.add(cc1);
// JSONArray ccOption = new JSONArray();
// cc1.put("dataKey","cs");
// cc1.put("dataIndex",1L);
// cc1.put("subFormId","100003690000001814");
// cc1.put("dataOptions",ccOption);
// JSONObject option_cc = new JSONObject();
// option_cc.put("optionId",100001700000063120L);
// ccOption.add(option_cc);
//
// JSONObject bb1 = new JSONObject();
// dataDetails.add(bb1);
// bb1.put("dataKey","jey");
// bb1.put("dataIndex",1L);
// bb1.put("content","55.42");
// bb1.put("subFormId","100003690000001814");
//
formDataDutyList.forEach(formDataDuty -> {
if (formDataDuty.getSubFormId() != null) {
//明细表
if (formDataDuty.getDataOptions() == null) {
//普通字段
JSONObject inputDataKey = new JSONObject();
inputDataKey.put("dataKey", formDataDuty.getDataKey());
inputDataKey.put("dataIndex", formDataDuty.getDataIndex());
inputDataKey.put("content", formDataDuty.getContent());
inputDataKey.put("subFormId", formDataDuty.getSubFormId());
dataDetails.add(inputDataKey);
}else {
JSONObject details = new JSONObject();
dataDetails.add(details);
JSONArray dataOptions = new JSONArray();
details.put("dataKey", formDataDuty.getDataKey());
details.put("dataIndex", formDataDuty.getDataIndex());
details.put("subFormId", formDataDuty.getSubFormId());
details.put("dataOptions", dataOptions);
List<DataOptions> dataOptions1 = formDataDuty.getDataOptions();
dataOptions1.forEach(e -> {
JSONObject option = new JSONObject();
option.put("optionId", e.getOptionId());
dataOptions.add(option);
});
}
}else {
//主表
if (formDataDuty.getDataOptions() == null) {
//普通字段
JSONObject inputDataKey = new JSONObject();
inputDataKey.put("dataKey", formDataDuty.getDataKey());
inputDataKey.put("content", formDataDuty.getContent());
dataDetails.add(inputDataKey);
}else {
//浏览按钮字段
// 浏览按钮
JSONObject details = new JSONObject();
dataDetails.add(details);
JSONArray dataOptions = new JSONArray();
details.put("dataKey", formDataDuty.getDataKey());
details.put("dataOptions", dataOptions);
List<DataOptions> dataOptions1 = formDataDuty.getDataOptions();
dataOptions1.forEach(e -> {
JSONObject option = new JSONObject();
option.put("optionId", e.getOptionId());
//fieldType 3为附件
if (formDataDuty.getFieldType() == 3) {
option.put("content", e.getContent());
}
dataOptions.add(option);
});
}
}
});
return formData;
}
}

@ -0,0 +1,158 @@
package com.weaver.seconddev.njwebservice.util;
import com.weaver.common.hrm.util.Util;
import com.weaver.common.i18n.tool.util.I18nContextUtil;
import com.weaver.verupgrade.conn.CONN_TYPE;
import com.weaver.verupgrade.conn.RecordSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
/**
* ClassName WfUtil
* Author
* Date 2025/1/2 8:56
* Description WfUtil
* Version 1.0
*/
public class WfUtil {
private final Logger log = LoggerFactory.getLogger(WfUtil.class);
/**
*
* @param jtzhTenantKey TenantKey
* @param workcode
* @param wfid id
* @return
*/
public Map<String,String> getZhWfMap(String jtzhTenantKey,String workcode,String wfid){
log.error("getZhWfMap start : " + wfid );
String currentWfid = wfid;//触发过来的wfid
String validWfif = "";//有效wfid
if(currentWfid.length()<=8){
currentWfid = getStrNum(currentWfid,8);
}
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.ebuilder.getType();
rs.setTenantKey(jtzhTenantKey);
//从集团租户 根据传入的wfid获取有效的wfid
validWfif = getValidWfid(jtzhTenantKey,currentWfid);
log.error("getZhWfMap validWfif : " + validWfif );
if("".equals(validWfif)){//如果为空就是其他租户的新流程
validWfif = currentWfid;
}
//根据传入的wfid和获取到的当前有效的wfid 从配置表获取对应租户和对应wfid
String sszh = "";//所属租户
String jtwfid = "";//集团wfid
String gdwfid = "";//光电wfid
String hhwfid = "";//华海wfid
String workflowid = "";
String sql = "select sszh,jtwfid,gdwfid,hhwfid from e10_common.dbo.uf_zhwfid_mt where (cfwfid like '%"+currentWfid+"' or cfwfid like '%"+validWfif+"') and delete_type ='0'";
rs.executeSql(sql,poolname);
if(rs.next()){
sszh = Util.null2String(rs.getString("sszh"));
jtwfid = Util.null2String(rs.getString("jtwfid"));
gdwfid = Util.null2String(rs.getString("gdwfid"));
hhwfid = Util.null2String(rs.getString("hhwfid"));
}
log.error("getZhWfMap sszh : " + sszh );
String tenantKey = "";
if("3".equals(sszh)){//全租户 判断创建人是哪个租户的 取对应租户的 wfid;
String zhbs = getZhbs(workcode,jtzhTenantKey);
sszh = getZhbsInfo(zhbs,jtzhTenantKey);
}
if("0".equals(sszh)){//集团
workflowid =jtwfid;
tenantKey = getZhTenantKey(sszh,jtzhTenantKey);
}else if("1".equals(sszh)){//光电
workflowid =gdwfid;
tenantKey = getZhTenantKey(sszh,jtzhTenantKey);
}else if("2".equals(sszh)){//华海租户
workflowid = hhwfid;
tenantKey = getZhTenantKey(sszh,jtzhTenantKey);
}
log.error("getZhWfMap workflowid : " + workflowid );
if("".equals(workflowid)){
workflowid = validWfif;
tenantKey = jtzhTenantKey;
}
validWfif = getValidWfid(tenantKey,workflowid);
Map<String,String> map = new HashMap<>();
map.put("workflowid",validWfif);
map.put("tenantKey",tenantKey);
log.error("map : " + map );
return map;
}
public String getZhbs(String workcode,String jtzhTenantKey){
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.hrm.getType();
rs.setTenantKey(jtzhTenantKey);
String field3 = "";
String sql = "select isnull(field3,'') as field3 from eteams.dbo.employee a,eteams.dbo.hrmemployeedefined b where a.formdata =b.FORM_DATA_ID and a.job_num = '"+workcode+"' AND a.delete_type = 0 AND a.tenant_key = '"+jtzhTenantKey+"' AND b.delete_type = 0 AND b.tenant_key = '"+jtzhTenantKey+"'";
rs.executeSql(sql,poolname);
if(rs.next()){
field3 = Util.null2String(rs.getString("field3"));
}
if("".equals(field3)||"mgl".equals(field3)){
field3="HTJT";
}
return field3;
}
public String getZhbsInfo(String zhbs,String jtzhTenantKey){
String sszh = "";
Map<String,String> map = new HashMap<>();
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.ebuilder.getType();
rs.setTenantKey(jtzhTenantKey);
String sql = "select zzkey,sszh from e10_common.dbo.uf_tenant_mt where zhbs='"+zhbs+"' and delete_type ='0'";
rs.executeSql(sql,poolname);
if(rs.next()){
sszh = Util.null2String(rs.getString("sszh"));
}
return sszh;
}
public String getZhTenantKey(String sszh,String jtzhTenantKey){
String zzkey = "";
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
String poolname = CONN_TYPE.ebuilder.getType();
rs.setTenantKey(jtzhTenantKey);
String sql = "select zzkey from e10_common.dbo.uf_tenant_mt where sszh='"+sszh+"' and delete_type ='0'";
rs.executeSql(sql,poolname);
if(rs.next()){
zzkey = Util.null2String(rs.getString("zzkey"));
}
return zzkey;
}
public String getValidWfid(String tenantKey,String wfid){
String workflowid = "";
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
rs.setTenantKey(tenantKey);
String sql = "SELECT CASE WHEN status = 1 THEN id ELSE activewfid END AS workflowid FROM e10_core_business.dbo.wfp_base WHERE id like '%"+wfid+"' AND delete_type = 0 AND tenant_key = '"+tenantKey+"'";
// log.error("oaflowid:"+sql);
rs.executeSql(sql,CONN_TYPE.workflow.getType());
if(rs.next()){
workflowid = Util.null2String(rs.getString("workflowid"));
}
return workflowid;
}
public String getStrNum(String num,int len){
String buff = num;
int max = len - buff.length();
for(int index = 0; index < max;index++){
buff = "0" + buff;
}
return buff;
}
}
Loading…
Cancel
Save