ic_excellent 2023-03-23 13:24:08 +08:00
commit ed3b04b6d5
32 changed files with 1661 additions and 343 deletions

View File

@ -586,28 +586,98 @@ $(() => {
}
}
let date = new Date()
let month = date.getMonth() + 1
let date = new Date();
let month = date.getMonth() + 1;
let year = date.getFullYear();
let n = window.prompt("请输入日期:", date.getDate().toString())
let workDate = year + "-" + fillNum(month) + "-" + fillNum(n)
n = fillNum(n)
WfForm.changeFieldValue("field607", {value: workDate})
let n = window.prompt("请输入日期:", date.getDate().toString());
let workDate = year + "-" + fillNum(month) + "-" + fillNum(n);
n = fillNum(n);
WfForm.changeFieldValue("field607", {value: workDate});
let workflowTitle = WfForm.getFieldValue("field-1");
WfForm.changeFieldValue("field-1", {value: workflowTitle.substring(0, workflowTitle.length - 2) + n})
WfForm.changeFieldValue("field609", {value: workDate})
WfForm.changeFieldValue("field608", {value: "00:00"})
WfForm.changeFieldValue("field610", {value: "23:59"})
WfForm.changeFieldValue("field30038", {value: 0})
WfForm.changeFieldValue("field611", {value: "出差"})
WfForm.changeFieldValue("field8715", {value: "2"})
$("button[ecid='_Route@vmt0lk_Comp@upn4fo_FormContent@g9f33k_MainLayout@kdmfyn_LayoutTr@ds2cqb@main_0_CellType@27chqt@main_17_10_FieldContent@r045n3_BrowserElement@2mq6lm_WeaBrowser@j1zg9h_WrappedComponent@i9q2c5_Component@iiw91q_Associative@zt8qgk_Button@ztqsd2_button@xq1ea3']").trigger("click")
WfForm.changeFieldValue("field-1", {value: workflowTitle.substring(0, workflowTitle.length - 2) + n});
WfForm.changeFieldValue("field609", {value: workDate});
WfForm.changeFieldValue("field608", {value: "00:00"});
WfForm.changeFieldValue("field610", {value: "23:59"});
WfForm.changeFieldValue("field30038", {value: 0});
WfForm.changeFieldValue("field611", {value: "出差"});
WfForm.changeFieldValue("field8715", {value: "2"});
$("button[ecid='_Route@vmt0lk_Comp@upn4fo_FormContent@g9f33k_MainLayout@kdmfyn_LayoutTr@ds2cqb@main_0_CellType@27chqt@main_17_10_FieldContent@r045n3_BrowserElement@2mq6lm_WeaBrowser@j1zg9h_WrappedComponent@i9q2c5_Component@iiw91q_Associative@zt8qgk_Button@ztqsd2_button@xq1ea3']").trigger("click");
WfForm.registerCheckEvent(WfForm.OPER_CLOSE, function (callback) {
setTimeout(() => {
window.location.href = "/spa/workflow/static4form/index.html#/main/workflow/req?iscreate=1&workflowid=746"
window.location.href = "/spa/workflow/static4form/index.html#/main/workflow/req?iscreate=1&workflowid=746";
}, 500)
});
})()
/* ******************* 提交外出流程 ******************* */
/* ******************* 明细数据统计数量添加 ******************* */
$(() => {
let config = {
// 数据来源表配置
sourceConfig: {
key: '',
table: '',
type: ''
},
// 需要修改的表配置
targetConfig: {
key: '',
table: '',
type: [{
type: '',
changeField: ''
}, {
type: '',
changeField: ''
}]
}
}
function changeTargetFieldValue() {
let sourceConfig = config.sourceConfig;
let targetConfig = config.targetConfig;
let targetDetailRowArr = WfForm.getDetailAllRowIndexStr(targetConfig.table).split(",");
let targetMap = new Map()
// 组装明细数据
targetDetailRowArr.forEach(item => {
let fieldMark = WfForm.convertFieldNameToId(targetConfig.key, targetConfig.table)
let fieldId = fieldMark + "_" + item
let fieldValue = WfForm.getFieldValue(fieldId);
targetMap.set(fieldValue, item)
})
let sourceDetailRowArr = WfForm.getDetailAllRowIndexStr(sourceConfig.table).split(",");
sourceDetailRowArr.forEach(item => {
let fieldMark = WfForm.convertFieldNameToId(sourceConfig.key, sourceConfig.table)
let fieldId = fieldMark + "_" + item
let fieldValue = WfForm.getFieldValue(fieldId);
let typeFieldMark = WfForm.convertFieldNameToId(sourceConfig.type, sourceConfig.table)
let typeFieldId = typeFieldMark + "_" + item
let typeFieldValue = WfForm.getFieldValue(typeFieldId);
targetConfig.type.forEach(typeItem => {
if (typeItem.type == typeFieldValue) {
// 需要修改对应行的字段
let targetRowIndex = targetMap.get(fieldValue);
let fieldMark = WfForm.convertFieldNameToId(typeItem.changeField, targetConfig.table)
let fieldId = fieldMark + "_" + targetRowIndex
let targetRowValue = WfForm.getFieldValue(fieldId);
let result = +targetRowValue + 1
WfForm.changeFieldValue(fieldId, {
value: result
})
}
})
})
}
WfForm.registerCheckEvent(WfForm.OPER_SUBMIT, callback => {
changeTargetFieldValue()
callback()
})
})
/* ******************* 明细数据数量统计添加 end ******************* */

View File

@ -15,4 +15,5 @@ import java.lang.annotation.*;
@Documented
public @interface BatchSqlArgs {
String value() default "item";
}

View File

@ -32,6 +32,7 @@ public class SqlHandler {
List<Object> batchSqlArgsList = new ArrayList();
String batchSqlName = "item";
private final Object batchObj = null;
@ -58,7 +59,7 @@ public class SqlHandler {
if (!batchSqlArgsList.isEmpty()) {
for (Object o1 : batchSqlArgsList) {
Map<String, Object> map = new HashMap<>(8);
map.put("item", o1);
map.put(batchSqlName, o1);
map.putAll((Map<String, Object>) o);
parse = parse(findSql, map);
List<Object> tempArgs = new ArrayList<>();
@ -142,6 +143,7 @@ public class SqlHandler {
if (batchSqlArgs != null) {
try {
this.batchSqlArgsList = (List<Object>) arg;
batchSqlName = batchSqlArgs.value();
} catch (Exception e) {
throw new BindingException("can not parse batchSqlArgs for " + parameter.getName() + ", param index is " + i);
}

View File

@ -0,0 +1,49 @@
package com.api.youhong.ai.geerde.requestlog.controller;
import aiyh.utils.ApiResult;
import aiyh.utils.Util;
import com.api.youhong.ai.geerde.requestlog.service.RequestLogAuthorityService;
import org.apache.log4j.Logger;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 15:40</p>
*
* @author youHong.ai
*/
@Path("/aiyh/geerde/request-log")
public class RequestLogAuthorityController {
private final RequestLogAuthorityService service = new RequestLogAuthorityService();
private final Logger log = Util.getLogger();
/**
* <h2></h2>
*
* @return
*/
@Path("privacy/get")
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String getPrivacyAuthority(@Context HttpServletRequest request, @Context HttpServletResponse response,
@QueryParam("workflowId") String workflowId) {
try {
User user = HrmUserVarify.getUser(request, response);
return ApiResult.success(service.getPrivacyAuthority(user, workflowId));
} catch (Exception e) {
log.info("get privacy authority error!" + Util.getErrString(e));
return ApiResult.error(e.getMessage());
}
}
}

View File

@ -0,0 +1,33 @@
package com.api.youhong.ai.geerde.requestlog.mapper;
import aiyh.utils.annotation.recordset.ParamMapper;
import aiyh.utils.annotation.recordset.Select;
import aiyh.utils.annotation.recordset.SelectOracle;
import aiyh.utils.annotation.recordset.SqlMapper;
import com.api.youhong.ai.geerde.requestlog.pojo.RequestLogAuthority;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 15:51</p>
*
* @author youHong.ai
*/
@SqlMapper
public interface RequestLogAuthorityMapper {
/**
* <h2></h2>
*
* @param userLike id
* @param workflowId ID
* @return
*/
@Select("select * from uf_request_log_authority_deg where workflow_type = #{workflowId} " +
"and concat(',',authority_members,',') like #{userLike} and enable_status = 1")
@SelectOracle("select * from uf_request_log_authority_deg where workflow_type = #{workflowId} " +
"and (',' || authority_members || ',') like #{userLike} and enable_status = 1")
RequestLogAuthority selectLogPrivacyConfig(@ParamMapper("userLike") String userLike,
@ParamMapper("workflowId") String workflowId);
}

View File

@ -0,0 +1,29 @@
package com.api.youhong.ai.geerde.requestlog.pojo;
import aiyh.utils.annotation.recordset.SqlOracleDbFieldAnn;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 15:55</p>
*
* @author youHong.ai
*/
@Getter
@Setter
@ToString
public class RequestLogAuthority {
private Integer id;
/** 流程 */
@SqlOracleDbFieldAnn("WORKFLOW_TYPE")
private String workflowType;
/** 是否启用 */
@SqlOracleDbFieldAnn("ENABLE_STATUS")
private Integer enableStatus;
/** 权限组成员 */
@SqlOracleDbFieldAnn("AUTHORITY_MEMBER")
private String authorityMember;
}

View File

@ -0,0 +1,25 @@
package com.api.youhong.ai.geerde.requestlog.service;
import aiyh.utils.Util;
import com.api.youhong.ai.geerde.requestlog.mapper.RequestLogAuthorityMapper;
import com.api.youhong.ai.geerde.requestlog.pojo.RequestLogAuthority;
import weaver.hrm.User;
import java.util.Objects;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 15:42</p>
*
* @author youHong.ai
*/
public class RequestLogAuthorityService {
private final RequestLogAuthorityMapper mapper = Util.getMapper(RequestLogAuthorityMapper.class);
public boolean getPrivacyAuthority(User user, String workflowId) {
RequestLogAuthority requestLogAuthority = mapper.selectLogPrivacyConfig("%," + user.getUID() + ",%", workflowId);
return !Objects.isNull(requestLogAuthority);
}
}

View File

@ -0,0 +1,75 @@
package com.api.youhong.ai.zhiji.pictureaddwater.controller;
import aiyh.utils.ApiResult;
import aiyh.utils.Util;
import com.api.youhong.ai.zhiji.pictureaddwater.service.PictureAddWaterService;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.apache.log4j.Logger;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.Map;
/**
* <h1></h1>
*
* <p>create: 2023/3/22 16:23</p>
*
* @author youHong.ai
*/
@Path("/aiyh/zhiji/picture-add-water/")
public class PictureAddWaterController {
private final PictureAddWaterService service = new PictureAddWaterService();
private final Logger log = Util.getLogger();
/**
*
*
* @return
*/
@Path("/queryWatermark/{workflowId}")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String queryWatermark(@PathParam("workflowId") String workflowId) {
try {
return ApiResult.success(service.getWatermarkConfig(workflowId));
} catch (Exception e) {
log.error("query add water config error!" + Util.getErrString(e));
return ApiResult.error(e.toString());
}
}
/**
*
*
* @param request
* @param response
* @param param
* @return
*/
@Path("/addWatermark")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String addWatermark(@Context HttpServletRequest request, @Context HttpServletResponse response,
@RequestBody Map<String, String> param) {
User user = HrmUserVarify.getUser(request, response);
try {
return ApiResult.success(service.addWaterMark(user, param));
} catch (Exception e) {
log.error("add water to picture error!" + Util.getErrString(e));
return ApiResult.error(e.toString());
}
}
}

View File

@ -0,0 +1,24 @@
package com.api.youhong.ai.zhiji.pictureaddwater.mapper;
import aiyh.utils.annotation.recordset.ParamMapper;
import aiyh.utils.annotation.recordset.Select;
import aiyh.utils.annotation.recordset.SqlMapper;
import com.api.youhong.ai.zhiji.pictureaddwater.vo.ConfigInfoVo;
/**
* <h1></h1>
*
* <p>create: 2023/3/22 16:28</p>
*
* @author youHong.ai
*/
@SqlMapper
public interface PictureAddWaterMapper {
@Select("select cf.workflow_type ,cf.workflow_node ,cf.enable ,wf.fieldname workflow_field from $t{tableName}" +
" cf left join workflow_field_table_view wf on wf.id = cf.workflow_field " +
" where cf.workflow_type = #{workflowId}")
ConfigInfoVo getConfigInfo(@ParamMapper("tableName") String tableName,
@ParamMapper("workflowId") String workflowId);
}

View File

@ -0,0 +1,233 @@
package com.api.youhong.ai.zhiji.pictureaddwater.service;
import aiyh.utils.ApiResult;
import aiyh.utils.Util;
import aiyh.utils.fileUtil.WatermarkPoint;
import aiyh.utils.fileUtil.WatermarkPointEnum;
import aiyh.utils.fileUtil.WritWatermark;
import aiyh.utils.mapUtil.ParaMap;
import aiyh.utils.sqlUtil.sqlResult.impl.PrepSqlResultImpl;
import aiyh.utils.zwl.common.ToolUtil;
import com.api.workflow.constant.RequestAuthenticationConstant;
import com.api.youhong.ai.zhiji.pictureaddwater.mapper.PictureAddWaterMapper;
import com.api.youhong.ai.zhiji.pictureaddwater.vo.ConfigInfoVo;
import com.engine.workflow.biz.requestForm.FileBiz;
import org.h2.util.StringUtils;
import weaver.conn.RecordSet;
import weaver.docs.docs.DocManager;
import weaver.hrm.User;
import java.awt.*;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* <h1></h1>
*
* <p>create: 2023/3/22 16:25</p>
*
* @author youHong.ai
*/
public class PictureAddWaterService {
private final PictureAddWaterMapper mapper = Util.getMapper(PictureAddWaterMapper.class);
private final ToolUtil toolUtil = new ToolUtil();
public ConfigInfoVo getWatermarkConfig(String workflowId) {
ConfigInfoVo configInfo = mapper.getConfigInfo("uf_watermark_cofig", workflowId);
return configInfo;
}
/**
*
*
* @param user user
* @param param
* @return
*/
public Object addWaterMark(User user, Map<String, String> param) {
String fileIds = param.get("fileIds");
String location = param.get("location");
String time = param.get("time");
if (StringUtils.isNullOrEmpty(time)) {
time = Util.getTime("yyyy-MM-dd HH:mm:ss");
}
String pressText = "地点:" + location + "\n" + "时间:" + time;
String watermarkColor = toolUtil.getSystemParamValue("WATERMARK_COLOR");
if (StringUtils.isNullOrEmpty(watermarkColor)) {
watermarkColor = "0,0,0";
}
// 处理文字水印的RGB颜色
String[] RGBStr = watermarkColor.replace("", ",").split(",");
int[] RGB = Arrays.stream(RGBStr).mapToInt(Integer::parseInt).toArray();
if (RGB.length < 3) {
RGB = new int[]{0, 0, 0};
}
int R = RGB[0];
int G = RGB[1];
int B = RGB[2];
if (R < 0) {
R = 0;
}
if (R > 255) {
R = 255;
}
if (G < 0) {
G = 0;
}
if (G > 255) {
G = 255;
}
if (B < 0) {
B = 0;
}
if (B > 255) {
B = 255;
}
Color color = new Color(R, G, B);
String fontName = toolUtil.getSystemParamValue("FONT_NAME");
if (StringUtils.isNullOrEmpty(fontName)) {
fontName = "Microsoft YaHei";
}
int fontSize = Util.getIntValue(toolUtil.getSystemParamValue("FONT_SIZE"), 10);
StringBuilder newIds = new StringBuilder();
int index = 0;
// 根据fileId 查询物理文件
String query = "select imagefileid from docimagefile where docid in ( " + fileIds + ")";
RecordSet rs = new RecordSet();
rs.executeQuery(query);
while (rs.next()) {
int id = rs.getInt(1);
int newId;
try {
toolUtil.writeDebuggerLog("开始添加水印,传递字体大小!");
newId = WritWatermark.addTextWatermarkById(id, pressText, color, fontName, Font.PLAIN, fontSize
, new WatermarkPoint(WatermarkPointEnum.RIGHT_BOTTOM), 0, 1, 1.3);
} catch (IOException e) {
return ApiResult.error("图片水印添加失败!");
}
if (index == 0) {
newIds.append(newId);
} else {
newIds.append(",").append(newId);
}
index++;
}
// 复制原图的权限信息等
// 复制原来的文件信息,并将现有的信息进行绑定
DocManager docManager = new DocManager();
String[] picIdStrArr = fileIds.split(",");
String[] newImgArr = newIds.toString().split(",");
int[] picIdArr = Arrays.stream(picIdStrArr).mapToInt(Integer::parseInt).toArray();
StringBuilder newDocIds = new StringBuilder();
for (int i = 0; i < picIdArr.length; i++) {
docManager.setId(picIdArr[i]);
// 复制文件
int newId = 0;
try {
newId = docManager.copyDoc();
} catch (Exception e) {
e.printStackTrace();
toolUtil.writeErrorLog("file copy fail!");
}
if (i == 0) {
newDocIds.append(newId);
} else {
newDocIds.append(",").append(newId);
}
// 替换复制出来的数据的物理文件关联关系
PrepSqlResultImpl prepSqlResult = aiyh.utils.Util.createSqlBuilder().updateSql("docimagefile"
, ParaMap.create().put("imagefileid", newImgArr[i])
, aiyh.utils.Util.createPrepWhereImpl().whereAnd("docid").whereEqual(newId));
rs.executeUpdate(prepSqlResult.getSqlStr(), prepSqlResult.getArgs());
}
// 替换原来图片的字段
String isSaveResource = toolUtil.getSystemParamValue("SAVE_RESOURCE");
String sourceField = toolUtil.getSystemParamValue("RESOURCE_FIELD");
if (StringUtils.isNullOrEmpty(isSaveResource)) {
isSaveResource = "0";
}
String fieldName = param.get("fieldName");
String tableName = param.get("tableName");
String isWrite = param.get("isWrite");
String isAppend = param.get("isAppend");
// String sourceField = param.get("sourceField");
String requestId = param.get("requestId");
String oldFileIds = param.get("oldFileIds");
if ("true".equals(isWrite)) {
if ("true".equals(isAppend)) {
// // 查询原字段是否存在图片
// String queryStr = "";
// try {
// queryStr = "select " + fieldName + " from " + tableName + " where requestid = ?";
// rs.executeQuery(queryStr, requestId);
// rs.next();
// String oldImg = Util.null2String(rs.getString(1));
// if (!StringUtils.isNullOrEmpty(oldImg)) {
newDocIds.append(",").append(oldFileIds);
// }
// }catch (Exception e){
// toolUtil.writeErrorLog("查询错误:" + queryStr);
// }
}
if ("0".equals(isSaveResource)) {
// 不保存原来的图片
String update = "update " +
tableName +
" set " +
fieldName +
" = '" +
newDocIds +
"' where " +
" requestid = ?";
rs.executeUpdate(update, requestId);
} else {
String update = "update " +
tableName +
" set " +
fieldName +
" = '" +
newDocIds +
"' , " +
sourceField +
" = '" +
fileIds +
"' where " +
" requestid = ?";
rs.executeUpdate(update, requestId);
}
}
// 查询新文件信息
String listType = Util.null2String(String.valueOf(param.get("listType")), "list");
int requestid = Util.getIntValue(Util.null2String(String.valueOf(param.get("requestid"))), -1);
int desrequestid = Util.getIntValue(Util.null2String(String.valueOf(param.get("desrequestid"))), -1);
int isprint = Util.getIntValue(Util.null2String(String.valueOf(param.get("isprint"))), 0);
int workflowid = Util.getIntValue(Util.null2String(String.valueOf(param.get("workflowid"))), 0);
String f_weaver_belongto_userid = Util.null2String(String.valueOf(param.get("f_weaver_belongto_userid")));
String f_weaver_belongto_usertype = Util.null2String(String.valueOf(param.get("f_weaver_belongto_usertype")));
String authStr = Util.null2String(String.valueOf(param.get(RequestAuthenticationConstant.AUTHORITY_STRING)));
String authSignatureStr = Util.null2String(String.valueOf(param.get(RequestAuthenticationConstant.AUTHORITY_SIGNATURESTRING)));
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("user", user);
Map<String, Object> retobj;
try {
retobj = FileBiz.getFileDatas(Util.null2String(newDocIds.toString()), listType, requestid, desrequestid,
isprint, f_weaver_belongto_userid, f_weaver_belongto_usertype, true, false, authStr, authSignatureStr, paramsMap);
} catch (Exception e) {
e.printStackTrace();
return ApiResult.error("查询附件信息失败:" + e);
}
Map<String, Object> result = new HashMap<>();
result.put("fileData", retobj);
result.put("fileIds", newDocIds.toString());
return result;
}
}

View File

@ -0,0 +1,67 @@
package com.api.youhong.ai.zhiji.pictureaddwater.vo;
/**
* @author EBU7-dev1-ayh
* @create 2021/9/14 0014 21:28
* peizhi xinxi Vo
*/
public class ConfigInfoVo {
int workflowType;
String workflowField;
String workflowNode;
int enable;
public ConfigInfoVo() {
}
public ConfigInfoVo(int workflowType, String workflowField, String workflowNode, int enable) {
this.workflowType = workflowType;
this.workflowField = workflowField;
this.workflowNode = workflowNode;
this.enable = enable;
}
public int getWorkflowType() {
return workflowType;
}
public void setWorkflowType(int workflowType) {
this.workflowType = workflowType;
}
public String getWorkflowField() {
return workflowField;
}
public void setWorkflowField(String workflowField) {
this.workflowField = workflowField;
}
public String getWorkflowNode() {
return workflowNode;
}
public void setWorkflowNode(String workflowNode) {
this.workflowNode = workflowNode;
}
public int getEnable() {
return enable;
}
public void setEnable(int enable) {
this.enable = enable;
}
@Override
public String toString() {
return "ConfigInfoVo{" +
"workflowType=" + workflowType +
", workflowField='" + workflowField + '\'' +
", workflowNode='" + workflowNode + '\'' +
", enable=" + enable +
'}';
}
}

View File

@ -0,0 +1,408 @@
package com.customization.youhong.deerge.requestlog.impl;
import aiyh.utils.Util;
import aiyh.utils.tool.cn.hutool.core.util.StrUtil;
import com.customization.youhong.deerge.requestlog.mapper.InterceptRequestLogMapper;
import com.engine.core.cfg.annotation.ServiceDynamicProxy;
import com.engine.core.cfg.annotation.ServiceMethodDynamicProxy;
import com.engine.core.impl.aop.AbstractServiceProxy;
import com.engine.workflow.entity.requestForm.AutoApproveEntity;
import com.engine.workflow.entity.requestForm.RequestOperationResultBean;
import com.engine.workflow.service.RequestFormService;
import com.engine.workflow.service.impl.RequestFormServiceImpl;
import org.apache.log4j.Logger;
import weaver.workflow.request.RequestManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 13:36</p>
*
* @author youHong.ai
*/
@ServiceDynamicProxy(target = RequestFormServiceImpl.class, desc = "拦截签字意见信息,是否需要隐私控制")
public class InterceptRequestLogImpl extends AbstractServiceProxy implements RequestFormService {
public static final String SUCCESS = "SUCCESS";
private final Logger log = Util.getLogger();
private final InterceptRequestLogMapper mapper = Util.getMapper(InterceptRequestLogMapper.class);
@Override
public Map<String, Object> judgeCreateRight(HttpServletRequest request) {
return null;
}
@Override
public String loadForm(HttpServletRequest request) {
return null;
}
@Override
public String loadPreView(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> loadDetailData(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> saveDetailPaging(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> copyCustomPageFile(String custompage) {
return null;
}
@Override
public Map<String, Object> updateReqInfo(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> getLinkageResult(HttpServletRequest request, String type) {
return null;
}
@Override
public Map<String, Object> getRightMenu(HttpServletRequest httpServletRequest, Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getStatusData(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getStatusCount(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getResourcesKey(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getModifyLog(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> requestBatchSubmit(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> judgeRejectWay(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> getRejectOption(Map<String, Object> params) {
return null;
}
@Override
@ServiceMethodDynamicProxy(desc = "保存和提交流程时,判断是否开启隐私")
public Map<String, Object> requestSubmit(HttpServletRequest request) {
Map<String, Object> result = (Map<String, Object>) executeMethod(request);
try {
log.info("调用提交流程和保存流程后的返回参数: " + result);
RequestOperationResultBean data = (RequestOperationResultBean) result.get("data");
String type = Util.null2String(data.getType());
if (SUCCESS.equals(type)) {
// 保存成功,这里对隐私的签字意见做处理
String userId = request.getParameter("userId");
String enablePrivacy = request.getParameter("enablePrivacy");
String nodeId = request.getParameter("nodeid");
String requestId = request.getParameter("requestid");
String remark = request.getParameter("remark");
if (StrUtil.isBlank(enablePrivacy)) {
return result;
}
if (!Boolean.parseBoolean(enablePrivacy)) {
return result;
}
if ("-1".equals(requestId)) {
Map<String, Object> submitParams = data.getSubmitParams();
requestId = Util.null2String(submitParams.get("requestid"));
}
// 查询logId
Integer logId = mapper.selectRequestLogId(requestId, remark, nodeId, userId);
// 插入logId隐私信息
int dataId = Util.getModeDataId("uf_privacy_log_info", 1);
Boolean flag = mapper.insertPrivacyLog(dataId, logId, userId, nodeId, requestId);
if (!flag) {
Util.deleteModeId("uf_privacy_log_info", dataId);
}
}
} catch (Exception e) {
log.error("add privacy request log error! " + Util.getErrString(e));
}
return result;
}
@Override
public Map<String, Object> forwardSubmit(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> requestWithdraw(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> remarkSubmit(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> functionManage(HttpServletRequest request, HttpServletResponse response) {
return null;
}
@Override
public Map<String, Object> triggerSubWf(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> uploadFile(HttpServletRequest request, HttpServletResponse response) {
return null;
}
@Override
public Map<String, Object> getFileFieldObj(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> createWfCode(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getWfCodeFieldValue(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> requestImport(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> requestDetailImport(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> chooseExceptionOperator(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> overTimeSetting(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> getPrintLogBase(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getPrintLogData(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> freeFlowRead(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> freeFlowSave(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> editLockOper(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> loadPrintTemplates(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> doEvalExpression(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> generatePrintLog(HttpServletRequest request) {
return null;
}
@Override
public Map<String, Object> getForwardDatas(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> doBack(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getFormTab(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getSelectNextFlowCondition(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getSelectNextFlowNodes(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getRemindData(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> judgeRequestIsValid(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> takeBack(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getCustomOperation(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> runCustomOperationAction(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> JudgeAutoApprove(AutoApproveEntity autoApproveEntity) {
return null;
}
@Override
public Map<String, Object> delApproveLog(AutoApproveEntity autoApproveEntity) {
return null;
}
@Override
public Map<String, Object> verifyRequestForView(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> doTakEnd(HttpServletRequest httpServletRequest, Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> importFieldLinkageCfg(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> importFormulaCfg(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getDetailDataKeyId(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> judgeWorkflowPenetrate(AutoApproveEntity autoApproveEntity, RequestManager requestManager) {
return null;
}
@Override
public Map<String, Object> getThPreviewUrl(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getThMouldList(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getDetailExpSet(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> saveDetailExpSet(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> exportFieldSet(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getNextNodeContent(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> delRequestVerify(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getFreeNodeBrowserItem(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> saveFreeNodeFormConfig(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> conformCheck(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getDetailByRequestId(Map<String, Object> map) {
return null;
}
}

View File

@ -0,0 +1,118 @@
package com.customization.youhong.deerge.requestlog.impl;
import aiyh.utils.Util;
import aiyh.utils.tool.cn.hutool.core.collection.CollectionUtil;
import aiyh.utils.tool.cn.hutool.core.util.StrUtil;
import com.customization.youhong.deerge.requestlog.mapper.InterceptRequestLogMapper;
import com.engine.core.cfg.annotation.ServiceDynamicProxy;
import com.engine.core.cfg.annotation.ServiceMethodDynamicProxy;
import com.engine.core.impl.aop.AbstractServiceProxy;
import com.engine.workflow.service.RequestLogService;
import com.engine.workflow.service.impl.RequestLogServiceImpl;
import org.apache.log4j.Logger;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <h1></h1>
*
* <p>create: 2023/3/22 11:23</p>
*
* @author youHong.ai
*/
@ServiceDynamicProxy(target = RequestLogServiceImpl.class, desc = "拦截签字意见信息,是否需要隐私控制")
public class RequestLogShowOrHiddenImpl extends AbstractServiceProxy implements RequestLogService {
private final Logger log = Util.getLogger();
private final InterceptRequestLogMapper mapper = Util.getMapper(InterceptRequestLogMapper.class);
@Override
public Map<String, Object> getRequestLogBaseInfo(Map<String, Object> params) {
return null;
}
@Override
@ServiceMethodDynamicProxy(desc = "控制是否显示隐私签字意见")
public Map<String, Object> getRequestLogList(HttpServletRequest request, Map<String, Object> params) {
Map<String, Object> result = (Map<String, Object>) executeMethod(request, params);
try {
String isMonitor = request.getParameter("ismonitor");
boolean isPrint = "1".equals(Util.null2String(request.getParameter("isprint")));
// 如果是流程监控,全部返回
if (!StrUtil.isBlank(isMonitor) && !isPrint) {
return result;
}
User user = HrmUserVarify.getUser(request, null);
List<Map<String, Object>> logList = (List<Map<String, Object>>) result.get("loglist");
List<String> logIds = new ArrayList<>();
for (Map<String, Object> logInfo : logList) {
String logId = Util.null2String(logInfo.get("logid"));
logIds.add(logId);
}
String workflowId = Util.null2String(params.get("workflowid"));
if (StrUtil.isBlank(workflowId)) {
log.error("can not get value from params by wworkflowid!");
return result;
}
List<String> privacyLogIds;
// 如果是打印,所有隐私都不显示
if (isPrint) {
privacyLogIds = mapper.selectPrivacyLogIdAll(Util.join(logIds, ","), "-1", Util.null2String(params.get("requestid")));
} else {
// 如果不是,不显示除自己和隐私组之外的其他人的信息
List<String> userGroup = mapper.selectPrivacyGroup(workflowId, "%," + user.getUID() + ",%");
if (CollectionUtil.isEmpty(userGroup)) {
// 不在权限组,不能查看隐私的签字意见
privacyLogIds = mapper.selectPrivacyLogIdAll(Util.join(logIds, ","), String.valueOf(user.getUID()), Util.null2String(params.get("requestid")));
} else {
privacyLogIds = mapper.selectPrivacyLogId(Util.join(logIds, ","),
Util.join(userGroup, ","), Util.null2String(params.get("requestid")));
}
}
if (CollectionUtil.isEmpty(privacyLogIds)) {
return result;
}
List<String> finalPrivacyLogIds = privacyLogIds;
List<Map<String, Object>> newLogList = logList.stream()
.filter(item -> !finalPrivacyLogIds.contains(Util.null2String(item.get("logid"))))
.collect(Collectors.toList());
result.put("loglist", newLogList);
} catch (Exception e) {
log.error("filter request log list error!" + Util.getErrString(e));
}
return result;
}
@Override
public Map<String, Object> updateUserTxStatus(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> updateRequestLogPageSize(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> addDocReadLog(Map<String, Object> params) {
return null;
}
@Override
public Map<String, Object> getLogAllReceiveUser(Map<String, Object> map) {
return null;
}
@Override
public Map<String, Object> getViewLogNode(Map<String, Object> map) {
return null;
}
}

View File

@ -0,0 +1,94 @@
package com.customization.youhong.deerge.requestlog.mapper;
import aiyh.utils.annotation.recordset.*;
import java.util.List;
/**
* <h1></h1>
*
* <p>create: 2023/3/21 14:32</p>
*
* @author youHong.ai
*/
@SqlMapper
public interface InterceptRequestLogMapper {
/**
* <h2>id</h2>
*
* @param requestId requestid
* @param remark
* @param nodeId id
* @param operator
* @return id
*/
@Select("select logid from workflow_requestlog where REQUESTID = #{requestId} and REMARK = #{remark} " +
"and NODEID = #{nodeId} and OPERATOR = #{operator}")
Integer selectRequestLogId(@ParamMapper("requestId") String requestId,
@ParamMapper("remark") String remark,
@ParamMapper("nodeId") String nodeId,
@ParamMapper("operator") String operator);
/**
* <h2></h2>
*
* @param dataId ID
* @param logId id
* @param userId id
* @param nodeId ID
* @param requestId id
* @return
*/
@Update("update uf_privacy_log_info set request_id = #{requestId}," +
"node_id = #{nodeId}, user_id = #{userId},log_id = #{logId} " +
"where id = #{dataId}")
Boolean insertPrivacyLog(
@ParamMapper("dataId") int dataId,
@ParamMapper("logId") Integer logId,
@ParamMapper("userId") String userId,
@ParamMapper("nodeId") String nodeId,
@ParamMapper("requestId") String requestId);
/**
* <h2></h2>
*
* @param logIds ids
* @param uid ID
* @param requestId id
* @return
*/
@Select("select log_id from uf_privacy_log_info where request_id = #{requestId} and user_id not in ($t{userId}) and log_id in ($t{logIds})")
List<String> selectPrivacyLogId(
@ParamMapper("logIds") String logIds,
@ParamMapper("userId") String uid,
@ParamMapper("requestId") String requestId);
/**
* <h2></h2>
*
* @param logIds ids
* @param requestId id
* @return
*/
@Select("select log_id from uf_privacy_log_info where request_id = #{requestId} and user_id <> #{userId} and log_id in ($t{logIds})")
List<String> selectPrivacyLogIdAll(@ParamMapper("logIds") String logIds,
@ParamMapper("userId") String uid,
@ParamMapper("requestId") String requestId);
/**
* <h2></h2>
*
* @param workflowId
* @param userLike
* @return
*/
@Select("select authority_members from uf_request_log_authority_deg where enable_status = 1 " +
"and workflow_type = #{workflowId} and concat(',',authority_members,',') like #{userLike}")
@SelectOracle("select authority_members from uf_request_log_authority_deg where enable_status = 1 " +
"and workflow_type = #{workflowId} and (',' || authority_members || ',') like #{userLike}")
List<String> selectPrivacyGroup(@ParamMapper("workflowId") String workflowId,
@ParamMapper("userLike") String userLike);
}

View File

@ -1,149 +1,128 @@
# ${id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u4E0D\u5BF9\u7ED3\u679C\u8F6C\u4E49\uFF0C#{id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u5E76\u5C06\u7ED3\u679C\u8FDB\u884C\u8F6C\u4E49\u4F7F\u7528?\u4EE3\u66FF\u540E\u62FC\u63A5\u5230sql\u5B57\u7B26\u4E32\u4E2D
# #sql{select xx from xxx } \u8868\u793A\u67E5\u8BE2SQL\uFF0C\u5C06\u7ED3\u679C\u7684\u7B2C\u4E00\u4E2A\u5B57\u6BB5\u5F53\u505A\u503C
# \u67E5\u8BE2\u7ED3\u679C\u914D\u7F6E
aiyh.patentWall.voMapping.dataResource=uf_zlqzsb
aiyh.patentWall.voMapping.id=${id}
aiyh.patentWall.voMapping.icon=patent.png
aiyh.patentWall.voMapping.activeIcon=patent_active.png
aiyh.patentWall.voMapping.title=#sql{select imagefilename from docimagefile where docid = #{zlzs} }
# labelName labelIndex linkUrl
aiyh.patentWall.voMapping.linkList[0].labelName=\u67E5\u770B\u6587\u6863
aiyh.patentWall.voMapping.linkList[0].labelIndex=-93792
aiyh.patentWall.voMapping.linkList[0].linkUrl=/spa/document/index.jsp?id=${zlzs}
aiyh.patentWall.voMapping.linkList[1].labelName=\u8DF3\u8F6C\u6D41\u7A0B
aiyh.patentWall.voMapping.linkList[1].labelIndex=-93793
aiyh.patentWall.voMapping.linkList[1].linkUrl=/spa/document/index.jsp?id=${zlzs}
#aiyh.patentWall.voMapping.linkUrl=/spa/document/index.jsp?id=${zlzs}
aiyh.patentWall.voMapping.docId=${zlzs}
aiyh.patentWall.voMapping.imageFileId=#sql{select imagefileid from docimagefile where docid = #{zlzs} }
# \u641C\u7D22\u4FE1\u606F\u914D\u7F6E
# type \u8868\u793A\u641C\u7D22\u6846\u7C7B\u578B\uFF0C1-\u9009\u62E9\u6846\uFF0C2-\u5355\u884C\u6587\u672C\uFF0C3-\u65E5\u671F\uFF0C4-\u5355\u4EBA\u529B\u8D44\u6E90\uFF0C5-\u591A\u4EBA\u529B\u8D44\u6E90\uFF0C6-\u6D41\u7A0B\u8DEF\u5F84\uFF0C7-\u591A\u6D41\u7A0B\u8DEF\u5F84\uFF0C8-\u65E5\u671F\u8303\u56F4
# name \u6570\u636E\u5E93\u5B57\u6BB5 \u641C\u7D22\u65F6\u9700\u8981\u8FC7\u6EE4\u90A3\u4E2A\u6570\u636E\u5E93\u5B57\u6BB5\u7684\u503C
# labelName \u524D\u7AEF\u9ED8\u8BA4\u663E\u793A\u6587\u5B57\u7684labelName
# labelIndex \u524D\u7AEF\u663E\u793A\u6587\u5B57\u7684labelIndex
# searchType \u641C\u7D22\u7C7B\u578B 1-\u7B49\u4E8E\uFF0C2-\u5927\u4E8E\uFF0C3-\u5C0F\u4E8E\uFF0C4-in\uFF0C5-\u65E5\u671F\u5927\u4E8E\uFF0C6-\u65E5\u671F\u5C0F\u4E8E\uFF0C7-\u65E5\u671F\u7B49\u4E8E,8-\u65E5\u671F\u8303\u56F4
aiyh.patentWall.search.dataResource=uf_zlqzsb
aiyh.patentWall.search.inputs[0].type=2
aiyh.patentWall.search.inputs[0].dbFieldName=zlqr
aiyh.patentWall.search.inputs[0].labelName=\u4E13\u5229\u6743\u4EBA
aiyh.patentWall.search.inputs[0].labelIndex=-95588
aiyh.patentWall.search.inputs[0].searchType=1
aiyh.patentWall.search.inputs[0].value=
aiyh.patentWall.search.inputs[1].type=2
aiyh.patentWall.search.inputs[1].dbFieldName=fmrsjr
aiyh.patentWall.search.inputs[1].labelName=\u53D1\u660E\u4EBA/\u8BBE\u8BA1\u4EBA
aiyh.patentWall.search.inputs[1].labelIndex=-95589
aiyh.patentWall.search.inputs[1].searchType=1
aiyh.patentWall.search.inputs[1].value=
aiyh.patentWall.search.inputs[2].type=2
aiyh.patentWall.search.inputs[2].dbFieldName=zlcpmc
aiyh.patentWall.search.inputs[2].labelName=\u4E13\u5229\u4EA7\u54C1\u540D\u79F0
aiyh.patentWall.search.inputs[2].labelIndex=-95590
aiyh.patentWall.search.inputs[2].searchType=1
aiyh.patentWall.search.inputs[2].value=
aiyh.patentWall.search.inputs[3].type=1
aiyh.patentWall.search.inputs[3].dbFieldName=zllx
aiyh.patentWall.search.inputs[3].labelName=\u4E13\u5229\u7C7B\u578B
aiyh.patentWall.search.inputs[3].labelIndex=-95591
aiyh.patentWall.search.inputs[3].searchType=1
aiyh.patentWall.search.inputs[3].multiple=true
aiyh.patentWall.search.inputs[3].value=
aiyh.patentWall.search.inputs[4].type=3
aiyh.patentWall.search.inputs[4].dbFieldName=zlsqrq
aiyh.patentWall.search.inputs[4].labelName=\u4E13\u5229\u7533\u8BF7\u65E5\u671F
aiyh.patentWall.search.inputs[4].labelIndex=-95592
aiyh.patentWall.search.inputs[4].searchType=1
aiyh.patentWall.search.inputs[4].value=
aiyh.patentWall.search.inputs[5].type=1
aiyh.patentWall.search.inputs[5].dbFieldName=zlzt
aiyh.patentWall.search.inputs[5].labelName=\u4E13\u5229\u72B6\u6001
aiyh.patentWall.search.inputs[5].labelIndex=-95593
aiyh.patentWall.search.inputs[5].searchType=1
aiyh.patentWall.search.inputs[5].value=
aiyh.patentWall.search.inputs[6].type=1
aiyh.patentWall.search.inputs[6].dbFieldName=sqlx
aiyh.patentWall.search.inputs[6].labelName=\u6388\u6743\u7C7B\u578B
aiyh.patentWall.search.inputs[6].labelIndex=-95594
aiyh.patentWall.search.inputs[6].searchType=1
aiyh.patentWall.search.inputs[6].value=
# copyrightWall \u8457\u4F5C\u5899
aiyh.copyrightWall.voMapping.dataResource=uf_zlqzsb
aiyh.copyrightWall.voMapping.id=${id}
aiyh.copyrightWall.voMapping.icon=patent.png
aiyh.copyrightWall.voMapping.activeIcon=patent_active.png
aiyh.copyrightWall.voMapping.title=#sql{select imagefilename from docimagefile where docid = #{zlzs} }
# labelName labelIndex linkUrl
aiyh.copyrightWall.voMapping.linkList[0].labelName=\u67E5\u770B\u6587\u6863
aiyh.copyrightWall.voMapping.linkList[0].labelIndex=-93802
aiyh.copyrightWall.voMapping.linkList[0].linkUrl=/spa/document/index.jsp?id=${zlzs}
aiyh.copyrightWall.voMapping.linkList[1].labelName=\u8DF3\u8F6C\u6D41\u7A0B
aiyh.copyrightWall.voMapping.linkList[1].labelIndex=-93803
aiyh.copyrightWall.voMapping.linkList[1].linkUrl=/spa/document/index.jsp?id=${zlzs}
#aiyh.copyrightWall.voMapping.linkUrl=/spa/document/index.jsp?id=${zlzs}
aiyh.copyrightWall.voMapping.docId=${zlzs}
aiyh.copyrightWall.voMapping.imageFileId=#sql{select imagefileid from docimagefile where docid = #{zlzs} }
aiyh.copyrightWall.search.dataResource=uf_zlqzsb
aiyh.copyrightWall.search.inputs[0].type=2
aiyh.copyrightWall.search.inputs[0].dbFieldName=zlqr
aiyh.copyrightWall.search.inputs[0].labelName=\u4E13\u5229\u6743\u4EBA
aiyh.copyrightWall.search.inputs[0].labelIndex=-95595
aiyh.copyrightWall.search.inputs[0].searchType=1
aiyh.copyrightWall.search.inputs[0].value=
aiyh.copyrightWall.search.inputs[1].type=2
aiyh.copyrightWall.search.inputs[1].dbFieldName=fmrsjr
aiyh.copyrightWall.search.inputs[1].labelName=\u53D1\u660E\u4EBA/\u8BBE\u8BA1\u4EBA
aiyh.copyrightWall.search.inputs[1].labelIndex=-95598
aiyh.copyrightWall.search.inputs[1].searchType=1
aiyh.copyrightWall.search.inputs[1].value=
aiyh.copyrightWall.search.inputs[2].type=2
aiyh.copyrightWall.search.inputs[2].dbFieldName=zlcpmc
aiyh.copyrightWall.search.inputs[2].labelName=\u4E13\u5229\u4EA7\u54C1\u540D\u79F0
aiyh.copyrightWall.search.inputs[2].labelIndex=-95597
aiyh.copyrightWall.search.inputs[2].searchType=1
aiyh.copyrightWall.search.inputs[2].value=
aiyh.copyrightWall.search.inputs[3].type=1
aiyh.copyrightWall.search.inputs[3].dbFieldName=zllx
aiyh.copyrightWall.search.inputs[3].labelName=\u4E13\u5229\u7C7B\u578B
aiyh.copyrightWall.search.inputs[3].labelIndex=-95599
aiyh.copyrightWall.search.inputs[3].searchType=1
aiyh.copyrightWall.search.inputs[3].multiple=true
aiyh.copyrightWall.search.inputs[3].value=
aiyh.copyrightWall.search.inputs[4].type=3
aiyh.copyrightWall.search.inputs[4].dbFieldName=zlsqrq
aiyh.copyrightWall.search.inputs[4].labelName=\u4E13\u5229\u7533\u8BF7\u65E5\u671F
aiyh.copyrightWall.search.inputs[4].labelIndex=-95600
aiyh.copyrightWall.search.inputs[4].searchType=1
aiyh.copyrightWall.search.inputs[4].value=
aiyh.copyrightWall.search.inputs[5].type=1
aiyh.copyrightWall.search.inputs[5].dbFieldName=zlzt
aiyh.copyrightWall.search.inputs[5].labelName=\u4E13\u5229\u72B6\u6001
aiyh.copyrightWall.search.inputs[5].labelIndex=-95601
aiyh.copyrightWall.search.inputs[5].searchType=1
aiyh.copyrightWall.search.inputs[5].value=
aiyh.copyrightWall.search.inputs[6].type=1
aiyh.copyrightWall.search.inputs[6].dbFieldName=sqlx
aiyh.copyrightWall.search.inputs[6].labelName=\u6388\u6743\u7C7B\u578B
aiyh.copyrightWall.search.inputs[6].labelIndex=-95594
aiyh.copyrightWall.search.inputs[6].searchType=1
aiyh.copyrightWall.search.inputs[6].value=
# ${id}表示读取数据库中的id不对结果转义#{id}表示读取数据库中的id并将结果进行转义使用?代替后拼接到sql字符串中
# #sql{select xx from xxx } 表示查询sql将结果的第一个字段当做值
# 查询结果配置
aiyh.patentwall.vomapping.dataresource=uf_zlqzsb
aiyh.patentwall.vomapping.id=${id}
aiyh.patentwall.vomapping.icon=patent.png
aiyh.patentwall.vomapping.activeicon=patent_active.png
aiyh.patentwall.vomapping.title=#sql{select imagefilename from docimagefile where docid = #{zlzs} }
# labelname labelindex linkurl
aiyh.patentwall.vomapping.linklist[0].labelname=查看文档
aiyh.patentwall.vomapping.linklist[0].labelindex=-93792
aiyh.patentwall.vomapping.linklist[0].linkurl=/spa/document/index.jsp?id=${zlzs}
aiyh.patentwall.vomapping.linklist[1].labelname=跳转流程
aiyh.patentwall.vomapping.linklist[1].labelindex=-93793
aiyh.patentwall.vomapping.linklist[1].linkurl=/spa/document/index.jsp?id=${zlzs}
#aiyh.patentwall.vomapping.linkurl=/spa/document/index.jsp?id=${zlzs}
aiyh.patentwall.vomapping.docid=${zlzs}
aiyh.patentwall.vomapping.imagefileid=#sql{select imagefileid from docimagefile where docid = #{zlzs} }
# 搜索信息配置
# type 表示搜索框类型1-选择框2-单行文本3-日期4-单人力资源5-多人力资源6-流程路径7-多流程路径8-日期范围
# name 数据库字段 搜索时需要过滤那个数据库字段的值
# labelname 前端默认显示文字的labelname
# labelindex 前端显示文字的labelindex
# searchtype 搜索类型 1-等于2-大于3-小于4-in5-日期大于6-日期小于7-日期等于,8-日期范围
aiyh.patentwall.search.dataresource=uf_zlqzsb
aiyh.patentwall.search.inputs[0].type=2
aiyh.patentwall.search.inputs[0].dbfieldname=zlqr
aiyh.patentwall.search.inputs[0].labelname=专利权人
aiyh.patentwall.search.inputs[0].labelindex=-95588
aiyh.patentwall.search.inputs[0].searchtype=1
aiyh.patentwall.search.inputs[0].value=
aiyh.patentwall.search.inputs[1].type=2
aiyh.patentwall.search.inputs[1].dbfieldname=fmrsjr
aiyh.patentwall.search.inputs[1].labelname=发明人/设计人
aiyh.patentwall.search.inputs[1].labelindex=-95589
aiyh.patentwall.search.inputs[1].searchtype=1
aiyh.patentwall.search.inputs[1].value=
aiyh.patentwall.search.inputs[2].type=2
aiyh.patentwall.search.inputs[2].dbfieldname=zlcpmc
aiyh.patentwall.search.inputs[2].labelname=专利产品名称
aiyh.patentwall.search.inputs[2].labelindex=-95590
aiyh.patentwall.search.inputs[2].searchtype=1
aiyh.patentwall.search.inputs[2].value=
aiyh.patentwall.search.inputs[3].type=1
aiyh.patentwall.search.inputs[3].dbfieldname=zllx
aiyh.patentwall.search.inputs[3].labelname=专利类型
aiyh.patentwall.search.inputs[3].labelindex=-95591
aiyh.patentwall.search.inputs[3].searchtype=1
aiyh.patentwall.search.inputs[3].multiple=true
aiyh.patentwall.search.inputs[3].value=
aiyh.patentwall.search.inputs[4].type=3
aiyh.patentwall.search.inputs[4].dbfieldname=zlsqrq
aiyh.patentwall.search.inputs[4].labelname=专利申请日期
aiyh.patentwall.search.inputs[4].labelindex=-95592
aiyh.patentwall.search.inputs[4].searchtype=1
aiyh.patentwall.search.inputs[4].value=
aiyh.patentwall.search.inputs[5].type=1
aiyh.patentwall.search.inputs[5].dbfieldname=zlzt
aiyh.patentwall.search.inputs[5].labelname=专利状态
aiyh.patentwall.search.inputs[5].labelindex=-95593
aiyh.patentwall.search.inputs[5].searchtype=1
aiyh.patentwall.search.inputs[5].value=
aiyh.patentwall.search.inputs[6].type=1
aiyh.patentwall.search.inputs[6].dbfieldname=sqlx
aiyh.patentwall.search.inputs[6].labelname=授权类型
aiyh.patentwall.search.inputs[6].labelindex=-95594
aiyh.patentwall.search.inputs[6].searchtype=1
aiyh.patentwall.search.inputs[6].value=
# copyrightwall 著作墙
aiyh.copyrightwall.vomapping.dataresource=uf_zlqzsb
aiyh.copyrightwall.vomapping.id=${id}
aiyh.copyrightwall.vomapping.icon=patent.png
aiyh.copyrightwall.vomapping.activeicon=patent_active.png
aiyh.copyrightwall.vomapping.title=#sql{select imagefilename from docimagefile where docid = #{zlzs} }
# labelname labelindex linkurl
aiyh.copyrightwall.vomapping.linklist[0].labelname=查看文档
aiyh.copyrightwall.vomapping.linklist[0].labelindex=-93802
aiyh.copyrightwall.vomapping.linklist[0].linkurl=/spa/document/index.jsp?id=${zlzs}
aiyh.copyrightwall.vomapping.linklist[1].labelname=跳转流程
aiyh.copyrightwall.vomapping.linklist[1].labelindex=-93803
aiyh.copyrightwall.vomapping.linklist[1].linkurl=/spa/document/index.jsp?id=${zlzs}
#aiyh.copyrightwall.vomapping.linkurl=/spa/document/index.jsp?id=${zlzs}
aiyh.copyrightwall.vomapping.docid=${zlzs}
aiyh.copyrightwall.vomapping.imagefileid=#sql{select imagefileid from docimagefile where docid = #{zlzs} }
aiyh.copyrightwall.search.dataresource=uf_zlqzsb
aiyh.copyrightwall.search.inputs[0].type=2
aiyh.copyrightwall.search.inputs[0].dbfieldname=zlqr
aiyh.copyrightwall.search.inputs[0].labelname=专利权人
aiyh.copyrightwall.search.inputs[0].labelindex=-95595
aiyh.copyrightwall.search.inputs[0].searchtype=1
aiyh.copyrightwall.search.inputs[0].value=
aiyh.copyrightwall.search.inputs[1].type=2
aiyh.copyrightwall.search.inputs[1].dbfieldname=fmrsjr
aiyh.copyrightwall.search.inputs[1].labelname=发明人/设计人
aiyh.copyrightwall.search.inputs[1].labelindex=-95598
aiyh.copyrightwall.search.inputs[1].searchtype=1
aiyh.copyrightwall.search.inputs[1].value=
aiyh.copyrightwall.search.inputs[2].type=2
aiyh.copyrightwall.search.inputs[2].dbfieldname=zlcpmc
aiyh.copyrightwall.search.inputs[2].labelname=专利产品名称
aiyh.copyrightwall.search.inputs[2].labelindex=-95597
aiyh.copyrightwall.search.inputs[2].searchtype=1
aiyh.copyrightwall.search.inputs[2].value=
aiyh.copyrightwall.search.inputs[3].type=1
aiyh.copyrightwall.search.inputs[3].dbfieldname=zllx
aiyh.copyrightwall.search.inputs[3].labelname=专利类型
aiyh.copyrightwall.search.inputs[3].labelindex=-95599
aiyh.copyrightwall.search.inputs[3].searchtype=1
aiyh.copyrightwall.search.inputs[3].multiple=true
aiyh.copyrightwall.search.inputs[3].value=
aiyh.copyrightwall.search.inputs[4].type=3
aiyh.copyrightwall.search.inputs[4].dbfieldname=zlsqrq
aiyh.copyrightwall.search.inputs[4].labelname=专利申请日期
aiyh.copyrightwall.search.inputs[4].labelindex=-95600
aiyh.copyrightwall.search.inputs[4].searchtype=1
aiyh.copyrightwall.search.inputs[4].value=
aiyh.copyrightwall.search.inputs[5].type=1
aiyh.copyrightwall.search.inputs[5].dbfieldname=zlzt
aiyh.copyrightwall.search.inputs[5].labelname=专利状态
aiyh.copyrightwall.search.inputs[5].labelindex=-95601
aiyh.copyrightwall.search.inputs[5].searchtype=1
aiyh.copyrightwall.search.inputs[5].value=
aiyh.copyrightwall.search.inputs[6].type=1
aiyh.copyrightwall.search.inputs[6].dbfieldname=sqlx
aiyh.copyrightwall.search.inputs[6].labelname=授权类型
aiyh.copyrightwall.search.inputs[6].labelindex=-95594
aiyh.copyrightwall.search.inputs[6].searchtype=1
aiyh.copyrightwall.search.inputs[6].value=

View File

@ -1,25 +1,25 @@
# ${id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u4E0D\u5BF9\u7ED3\u679C\u8F6C\u4E49\uFF0C#{id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u5E76\u5C06\u7ED3\u679C\u8FDB\u884C\u8F6C\u4E49\u4F7F\u7528?\u4EE3\u66FF\u540E\u62FC\u63A5\u5230sql\u5B57\u7B26\u4E32\u4E2D
# #sql{select xx from xxx } \u8868\u793A\u67E5\u8BE2SQL\uFF0C\u5C06\u7ED3\u679C\u7684\u7B2C\u4E00\u4E2A\u5B57\u6BB5\u5F53\u505A\u503C
# \u67E5\u8BE2\u7ED3\u679C\u914D\u7F6E
aiyh.classificationWall.voMapping.dataResource=uf_zfzy
# \u6DFB\u52A0\u8D44\u6E90\u6309\u94AE\u94FE\u63A5
aiyh.classificationWall.voMapping.addSourceUrl=http://www.baidu.com
aiyh.classificationWall.voMapping.addSourceLabelIndex=-1000
aiyh.classificationWall.voMapping.addSourceLabelName=\u6DFB\u52A0\u8D44\u6E90
# \u6570\u636EID
aiyh.classificationWall.voMapping.id=${id}
# \u56FA\u5B9A\u503C\u56FE\u7247\u540D\u79F0ecode\u56FE\u7247\u540D\u79F0
aiyh.classificationWall.voMapping.icon=patent.png
aiyh.classificationWall.voMapping.activeIcon=patent_active.png
# \u4E0B\u811A\u663E\u793A\u7684\u6807\u9898
aiyh.classificationWall.voMapping.title=${mc}
aiyh.classificationWall.voMapping.titleEn=${mc}
# labelName labelIndex linkUrl
aiyh.classificationWall.voMapping.linkList[0].labelName=\u67E5\u770B\u6587\u6863
aiyh.classificationWall.voMapping.linkList[0].labelIndex=-93792
aiyh.classificationWall.voMapping.linkList[0].linkUrl=/spa/document/index.jsp?id=${zyxq}
aiyh.classificationWall.voMapping.linkList[1].labelName=\u8DF3\u8F6C\u6D41\u7A0B
aiyh.classificationWall.voMapping.linkList[1].labelIndex=-93793
aiyh.classificationWall.voMapping.linkList[1].linkUrl=/spa/document/index.jsp?id=${id}
aiyh.classificationWall.voMapping.docId=0
aiyh.classificationWall.voMapping.imageFileId=0
# ${id}表示读取数据库中的id不对结果转义#{id}表示读取数据库中的id并将结果进行转义使用?代替后拼接到sql字符串中
# #sql{select xx from xxx } 表示查询sql将结果的第一个字段当做值
# 查询结果配置
aiyh.classificationwall.vomapping.dataresource=uf_zfzy
# 添加资源按钮链接
aiyh.classificationwall.vomapping.addsourceurl=http://www.baidu.com
aiyh.classificationwall.vomapping.addsourcelabelindex=-1000
aiyh.classificationwall.vomapping.addsourcelabelname=添加资源
# 数据id
aiyh.classificationwall.vomapping.id=${id}
# 固定值图片名称ecode图片名称
aiyh.classificationwall.vomapping.icon=patent.png
aiyh.classificationwall.vomapping.activeicon=patent_active.png
# 下脚显示的标题
aiyh.classificationwall.vomapping.title=${mc}
aiyh.classificationwall.vomapping.titleen=${mc}
# labelname labelindex linkurl
aiyh.classificationwall.vomapping.linklist[0].labelname=查看文档
aiyh.classificationwall.vomapping.linklist[0].labelindex=-93792
aiyh.classificationwall.vomapping.linklist[0].linkurl=/spa/document/index.jsp?id=${zyxq}
aiyh.classificationwall.vomapping.linklist[1].labelname=跳转流程
aiyh.classificationwall.vomapping.linklist[1].labelindex=-93793
aiyh.classificationwall.vomapping.linklist[1].linkurl=/spa/document/index.jsp?id=${id}
aiyh.classificationwall.vomapping.docid=0
aiyh.classificationwall.vomapping.imagefileid=0

View File

@ -1,13 +1,11 @@
# \u5047\u671F\u7C7B\u578B\u6620\u5C04\u5173\u7CFB
# its\u5E74\u5047\u6620\u5C04OA\u5176\u4ED6
holidaySync.its_type.1=9
# its\u8C03\u4F11\u6620\u5C04OA\u8C03\u4F11\u5047
holidaySync.its_type.2=10
# \u5047\u671F\u4F7F\u7528\u989D
holidaySync.its_oa_holiday_viw.used_amount=usedamount
holidaySync.its_oa_holiday_viw.total_amount=baseAmount
# 假期类型映射关系
# its年假映射oa其他
holidaysync.its_type.1=9
# its调休映射oa调休假
holidaysync.its_type.2=10
# 假期使用额
holidaysync.its_oa_holiday_viw.used_amount=usedamount
holidaysync.its_oa_holiday_viw.total_amount=baseamount

View File

@ -1,7 +1,6 @@
# \u6388\u6743\u7801
aiyh.client.clientId=100001
aiyh.client.clientSecret=1099af237ed347b19a992a5e46520241
# \u6620\u5C04\u89C4\u5219
aiyh.sqlMapper.ee_no=#{loginid}
aiyh.sqlMapper.org_code=ford
# 授权码
aiyh.client.clientid=100001
aiyh.client.clientsecret=1099af237ed347b19a992a5e46520241
# 映射规则
aiyh.sqlmapper.ee_no=#{loginid}
aiyh.sqlmapper.org_code=ford

View File

@ -1,25 +1,25 @@
# ${id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u4E0D\u5BF9\u7ED3\u679C\u8F6C\u4E49\uFF0C#{id}\u8868\u793A\u8BFB\u53D6\u6570\u636E\u5E93\u4E2D\u7684id\uFF0C\u5E76\u5C06\u7ED3\u679C\u8FDB\u884C\u8F6C\u4E49\u4F7F\u7528?\u4EE3\u66FF\u540E\u62FC\u63A5\u5230sql\u5B57\u7B26\u4E32\u4E2D
# #sql{select xx from xxx } \u8868\u793A\u67E5\u8BE2SQL\uFF0C\u5C06\u7ED3\u679C\u7684\u7B2C\u4E00\u4E2A\u5B57\u6BB5\u5F53\u505A\u503C
# \u67E5\u8BE2\u7ED3\u679C\u914D\u7F6E
# ${id}表示读取数据库中的id不对结果转义#{id}表示读取数据库中的id并将结果进行转义使用?代替后拼接到sql字符串中
# #sql{select xx from xxx } 表示查询sql将结果的第一个字段当做值
# 查询结果配置
aiyh.classificationWall.voMapping.dataResource=uf_zfzy
# \u6DFB\u52A0\u8D44\u6E90\u6309\u94AE\u94FE\u63A5
# 添加资源按钮链接
aiyh.classificationWall.voMapping.addSourceUrl=http://www.baidu.com
aiyh.classificationWall.voMapping.addSourceLabelIndex=-1000
aiyh.classificationWall.voMapping.addSourceLabelName=\u6DFB\u52A0\u8D44\u6E90
# \u6570\u636EID
# 数据id
aiyh.classificationWall.voMapping.id=${id}
# \u56FA\u5B9A\u503C\u56FE\u7247\u540D\u79F0ecode\u56FE\u7247\u540D\u79F0
aiyh.classificationWall.voMapping.icon=patent.png
aiyh.classificationWall.voMapping.activeIcon=patent_active.png
# \u4E0B\u811A\u663E\u793A\u7684\u6807\u9898
aiyh.classificationWall.voMapping.title=${mc}
aiyh.classificationWall.voMapping.titleEn=${mc}
# labelName labelIndex linkUrl
aiyh.classificationWall.voMapping.linkList[0].labelName=\u67E5\u770B\u6587\u6863
aiyh.classificationWall.voMapping.linkList[0].labelIndex=-93792
aiyh.classificationWall.voMapping.linkList[0].linkUrl=/spa/document/index.jsp?id=${zyxq}
aiyh.classificationWall.voMapping.linkList[1].labelName=\u8DF3\u8F6C\u6D41\u7A0B
aiyh.classificationWall.voMapping.linkList[1].labelIndex=-93793
aiyh.classificationWall.voMapping.linkList[1].linkUrl=/spa/document/index.jsp?id=${id}
aiyh.classificationWall.voMapping.docId=0
aiyh.classificationWall.voMapping.imageFileId=0
# 固定值图片名称ecode图片名称
aiyh.classificationwall.vomapping.icon=patent.png
aiyh.classificationwall.vomapping.activeicon=patent_active.png
# 下脚显示的标题
aiyh.classificationwall.vomapping.title=${mc}
aiyh.classificationwall.vomapping.titleen=${mc}
# labelname labelindex linkurl
aiyh.classificationwall.vomapping.linklist[0].labelname=查看文档
aiyh.classificationwall.vomapping.linklist[0].labelindex=-93792
aiyh.classificationwall.vomapping.linklist[0].linkurl=/spa/document/index.jsp?id=${zyxq}
aiyh.classificationwall.vomapping.linklist[1].labelname=跳转流程
aiyh.classificationwall.vomapping.linklist[1].labelindex=-93793
aiyh.classificationwall.vomapping.linklist[1].linkurl=/spa/document/index.jsp?id=${id}
aiyh.classificationwall.vomapping.docid=0
aiyh.classificationwall.vomapping.imagefileid=0

View File

@ -1,6 +1,6 @@
aiyh.htmlLabel.porsche.FaDDContractController.pushErr.labelIndex=-1
aiyh.htmlLabel.porsche.FaDDContractController.pushErr.defaultStr=\u90AE\u4EF6\u53D1\u9001\u5931\u8D25\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\uFF01
aiyh.htmlLabel.porsche.FaDDContractController.pushSuccess.labelIndex=-1
aiyh.htmlLabel.porsche.FaDDContractController.pushSuccess.defaultStr=\u7B7E\u7F72\u90AE\u4EF6\u53D1\u9001\u6210\u529F\uFF01
attachment_sort.AnnexSortAction.sortErr.labelIndex=-1
attachment_sort.AnnexSortAction.sortErr.defaultStr=\u6587\u4EF6\u6392\u5E8F\u5931\u8D25\uFF0C\u8BF7\u8054\u7CFB\u7CFB\u7EDF\u7BA1\u7406\u5458\uFF01
aiyh.htmllabel.porsche.faddcontractcontroller.pusherr.labelindex=-1
aiyh.htmllabel.porsche.faddcontractcontroller.pusherr.defaultstr=邮件发送失败,请联系管理员!
aiyh.htmllabel.porsche.faddcontractcontroller.pushsuccess.labelindex=-1
aiyh.htmllabel.porsche.faddcontractcontroller.pushsuccess.defaultstr=签署邮件发送成功!
attachment_sort.annexsortaction.sorterr.labelindex=-1
attachment_sort.annexsortaction.sorterr.defaultstr=文件排序失败,请联系系统管理员!

View File

@ -1,29 +1,29 @@
# \u8BF7\u6C42\u53C2\u6570\u4FE1\u606F
# 请求参数信息
# request params config
# #{resource_id} replace database hrmresource table's id
# #{field} or ${field} replace database hrmresource and cus_fielddata field value
# #sql{select name from xxx where id = #{resource_id}} while replace execute customer sql to value
# String: Express this value is String; Integer: Express this value is Integer; Boolean: Express this value is Boolean; Double: Express this value is Double
# #{resource_id} \u8868\u793A\u4EBA\u529B\u8D44\u6E90\u8868\u4E2D\u7684id
# #{field} \u8868\u793A\u4EBA\u529B\u8D44\u6E90\u8868\u4E2D\u6216cus_fielddata\u5373\u81EA\u5B9A\u4E49\u4EBA\u5458\u5361\u7247\u5B57\u6BB5\u7684\u503C
# #sql{select name from xx where id = #{xx}} \u8868\u662F\u81EA\u5B9A\u4E49SQL
# String: Integer: Boolean: Double: \u5206\u522B\u8868\u793A\u8FD9\u4E2A\u503C\u7C7B\u578B\u4E3Astring\u3001integer\u3001boolean\u3001double\u7C7B\u578B\u7684\u8BF7\u6C42\u53C2\u6570
fadada.realNameAuthentication.customerId=String:#{lasyname}
fadada.realNameAuthentication.verifiedWay=Integer:#sql{select id from hrmdeptment where id = #{deptId}}
fadada.realNameAuthentication.pageModify=Boolean:
fadada.realNameAuthentication.isRepeatVerified=Double:
fadada.realNameAuthentication.customerName=
fadada.realNameAuthentication.customerIdentityType=
fadada.realNameAuthentication.customerIdentityNo=
fadada.realNameAuthentication.mobile=
fadada.realNameAuthentication.identityFrontPath=
fadada.realNameAuthentication.notifyUrl=
fadada.realNameAuthentication.returnUrl=
fadada.realNameAuthentication.isSendSms=
fadada.realNameAuthentication.identityBackPath=
fadada.realNameAuthentication.resultType=
fadada.realNameAuthentication.certType=
fadada.realNameAuthentication.applyCert=
fadada.realNameAuthentication.certMode=
fadada.realNameAuthentication.miniProgram=
fadada.realNameAuthentication.mobileDevice=
# string: express this value is string; integer: express this value is integer; boolean: express this value is boolean; double: express this value is double
# #{resource_id} 表示人力资源表中的id
# #{field} 表示人力资源表中或cus_fielddata即自定义人员卡片字段的值
# #sql{select name from xx where id = #{xx}} 表是自定义sql
# string: integer: boolean: double: 分别表示这个值类型为string、integer、boolean、double类型的请求参数
fadada.realnameauthentication.customerid=string:#{lasyname}
fadada.realnameauthentication.verifiedway=integer:#sql{select id from hrmdeptment where id = #{deptid}}
fadada.realnameauthentication.pagemodify=boolean:
fadada.realnameauthentication.isrepeatverified=double:
fadada.realnameauthentication.customername=
fadada.realnameauthentication.customeridentitytype=
fadada.realnameauthentication.customeridentityno=
fadada.realnameauthentication.mobile=
fadada.realnameauthentication.identityfrontpath=
fadada.realnameauthentication.notifyurl=
fadada.realnameauthentication.returnurl=
fadada.realnameauthentication.issendsms=
fadada.realnameauthentication.identitybackpath=
fadada.realnameauthentication.resulttype=
fadada.realnameauthentication.certtype=
fadada.realnameauthentication.applycert=
fadada.realnameauthentication.certmode=
fadada.realnameauthentication.miniprogram=
fadada.realnameauthentication.mobiledevice=

View File

@ -1,47 +1,47 @@
# \u914D\u7F6E\u89C4\u5219 \u73AF\u5883.\u4E1A\u52A1\u540D\u79F0.\u83B7\u53D6token\u8D26\u53F7\u4FE1\u606F
# configuration environment.Business name.token info
# oa\u53D1\u677F\u6D41\u7A0B\u63A8\u9001
# 配置规则 环境.业务名称.获取token账号信息
# configuration environment.business name.token info
# oa发板流程推送
# product environment
pro.release.userName=oa005
pro.release.username=oa005
pro.release.password=123456
pro.release.systemCode=oa
pro.release.secretKey=5362448sd132d241e5ae27e318qws11d
pro.release.baseUrl=https://jtdcapi.jtexpress.com.cn
pro.release.systemcode=oa
pro.release.secretkey=5362448sd132d241e5ae27e318qws11d
pro.release.baseurl=https://jtdcapi.jtexpress.com.cn
pro.release.expiration=24
# uat test environment
uat.release.userName=oa003
uat.release.password=JT0725!
uat.release.systemCode=oa
uat.release.secretKey=5362448sd132d241e5ae27e318qws11d
uat.release.baseUrl=https://uat-jtdcapi.jtexpress.com.cn
uat.release.username=oa003
uat.release.password=jt0725!
uat.release.systemcode=oa
uat.release.secretkey=5362448sd132d241e5ae27e318qws11d
uat.release.baseurl=https://uat-jtdcapi.jtexpress.com.cn
uat.release.expiration=24
# jms\u5E72\u7EBF\u63A8\u9001
# jms干线推送
# product environment
pro.jms.userName=oa005
pro.jms.username=oa005
pro.jms.password=123456
pro.jms.systemCode=oa
pro.jms.secretKey=5362448sd132d241e5ae27e318qws11d
pro.jms.baseUrl=https://jtdcapi.jtexpress.com.cn
pro.jms.systemcode=oa
pro.jms.secretkey=5362448sd132d241e5ae27e318qws11d
pro.jms.baseurl=https://jtdcapi.jtexpress.com.cn
pro.jms.expiration=24
# uat test environment
uat.jms.userName=oa003
uat.jms.password=JT0725!
uat.jms.systemCode=oa
uat.jms.secretKey=5362448sd132d241e5ae27e318qws11d
uat.jms.baseUrl=https://uat-jtdcapi.jtexpress.com.cn
uat.jms.username=oa003
uat.jms.password=jt0725!
uat.jms.systemcode=oa
uat.jms.secretkey=5362448sd132d241e5ae27e318qws11d
uat.jms.baseurl=https://uat-jtdcapi.jtexpress.com.cn
uat.jms.expiration=24
# \u9ED8\u8BA4
# 默认
# product environment
pro.default.userName=oa005
pro.default.username=oa005
pro.default.password=123456
pro.default.systemCode=oa
pro.default.secretKey=5362448sd132d241e5ae27e318qws11d
pro.default.baseUrl=https://jtdcapi.jtexpress.com.cn
pro.default.systemcode=oa
pro.default.secretkey=5362448sd132d241e5ae27e318qws11d
pro.default.baseurl=https://jtdcapi.jtexpress.com.cn
pro.default.expiration=24
# uat test environment
uat.default.userName=oa003
uat.default.password=JT0725!
uat.default.systemCode=oa
uat.default.secretKey=5362448sd132d241e5ae27e318qws11d
uat.default.baseUrl=https://uat-jtdcapi.jtexpress.com.cn
uat.default.username=oa003
uat.default.password=jt0725!
uat.default.systemcode=oa
uat.default.secretkey=5362448sd132d241e5ae27e318qws11d
uat.default.baseurl=https://uat-jtdcapi.jtexpress.com.cn
uat.default.expiration=24

View File

@ -1,18 +1,18 @@
# \u4F01\u4E1A\u5FAE\u4FE1\u83B7\u53D6accessToken\u914D\u7F6E\u4FE1\u606F
# \u4F01\u4E1Acorpid
# 企业微信获取accesstoken配置信息
# 企业corpid
# corpid
wx.corpid=wwe5f751c365f187e7
# \u901A\u8BAF\u5F55\u7EF4\u62A4\u63A5\u53E3\u51ED\u8BC1
# 通讯录维护接口凭证
# wx corpsecret
wx.corpsecret=L_3ml7weLt9qnonRAPsHN8qw2fG0xJQxsUfWSKv0tsA
# \u83B7\u53D6access_token\u5730\u5740
wx.baseHost=https://qyapi.weixin.qq.com
wx.corpsecret=l_3ml7welt9qnonrapshn8qw2fg0xjqxsufwskv0tsa
# 获取access_token地址
wx.basehost=https://qyapi.weixin.qq.com
# ============================= #
# EM7 corpid
# em7 corpid
# corpid
em.corpid=em049e8906ac5811e9833ffa163ed86778
# \u901A\u8BAF\u5F55\u7EF4\u62A4\u63A5\u53E3\u51ED\u8BC1
# 通讯录维护接口凭证
# wx corpsecret
em.corpsecret=8e5f4d98-8dd0-4657-9025-fb8ace22494b
# \u83B7\u53D6access_token\u5730\u5740
em.baseHost=http://121.36.197.152:8999
# 获取access_token地址
em.basehost=http://121.36.197.152:8999

View File

@ -12,6 +12,7 @@ import youhong.ai.mymapper.command.constant.CommandConsTant;
import youhong.ai.mymapper.command.entity.SqlDefinition;
import youhong.ai.mymapper.proxy.entity.SqlAndExecuteType;
import youhong.ai.mymapper.proxy.entity.SqlDbTypeMapping;
import youhong.ai.mymapper.util.FormatSqlUtil;
import youhong.ai.mymapper.util.ParseSqlUtil;
import java.lang.annotation.Annotation;
@ -33,10 +34,10 @@ import java.util.function.Function;
public class MapperProxyExecute {
private final Logger logger = Util.getLogger();
private final List<Class<? extends Annotation>> SELECT_LIST = Arrays.asList(Select.class, SelectOracle.class);
private final List<Class<? extends Annotation>> UPDATE_LIST = Arrays.asList(Update.class, UpdateOracle.class);
private final List<Class<? extends Annotation>> DELETE_LIST = Arrays.asList(Delete.class, DeleteOracle.class);
private final List<Class<? extends Annotation>> INSERT_LIST = Arrays.asList(Insert.class, InsertOracle.class);
private final List<Class<?>> SELECT_LIST = Arrays.asList(Select.class, SelectOracle.class);
private final List<Class<?>> UPDATE_LIST = Arrays.asList(Update.class, UpdateOracle.class);
private final List<Class<?>> DELETE_LIST = Arrays.asList(Delete.class, DeleteOracle.class);
private final List<Class<?>> INSERT_LIST = Arrays.asList(Insert.class, InsertOracle.class);
private static final Map<String, SqlDbTypeMapping> INSERT_MAP = new HashMap<>();
private static final Map<String, SqlDbTypeMapping> SELECT_MAP = new HashMap<>();
@ -86,6 +87,9 @@ public class MapperProxyExecute {
sqlAndExecuteType.setArgs(parse.getArgs());
sqlAndExecuteType.setSql(parse.getSql());
sqlAndExecuteType.setRecordSet(rs);
logger.info(Util.logStr("{}.{} execute sql : \n{}\nargs:{}",
method.getDeclaringClass(), method.getName(),
FormatSqlUtil.formatSql(sqlAndExecuteType.getSql()), sqlAndExecuteType.getArgs()));
return SqlExecutor.execute(sqlAndExecuteType);
}
@ -97,19 +101,20 @@ public class MapperProxyExecute {
private SqlAndExecuteType getSqlStr(String dbType, Method method, Object[] args) {
Annotation[] annotations = method.getAnnotations();
for (Annotation annotation : annotations) {
if (SELECT_LIST.contains(annotation.getClass())) {
Class<? extends Annotation> annotationClass = annotation.annotationType();
if (SELECT_LIST.contains(annotationClass)) {
// select 处理
return selectSql(dbType, method, args);
}
if (UPDATE_LIST.contains(annotation.getClass())) {
if (UPDATE_LIST.contains(annotationClass)) {
// update 处理
return updateSql(dbType, method, args);
}
if (DELETE_LIST.contains(annotation.getClass())) {
if (DELETE_LIST.contains(annotationClass)) {
// delete 处理
return deleteSql(dbType, method, args);
}
if (INSERT_LIST.contains(annotation.getClass())) {
if (INSERT_LIST.contains(annotationClass)) {
// insert 处理
return insertSql(dbType, method, args);
}
@ -127,6 +132,7 @@ public class MapperProxyExecute {
SqlAndExecuteType sqlAndExecuteType = new SqlAndExecuteType();
sqlAndExecuteType.setSql(sql);
sqlAndExecuteType.setType(CommandConsTant.INSERT_SQL);
sqlAndExecuteType.setExecuteType(CommandConsTant.SELECT_SQL);
return sqlAndExecuteType;
}
@ -139,6 +145,7 @@ public class MapperProxyExecute {
SqlAndExecuteType sqlAndExecuteType = new SqlAndExecuteType();
sqlAndExecuteType.setSql(sql);
sqlAndExecuteType.setType(CommandConsTant.DELETE_SQL);
sqlAndExecuteType.setExecuteType(CommandConsTant.SELECT_SQL);
return sqlAndExecuteType;
}
@ -151,6 +158,7 @@ public class MapperProxyExecute {
SqlAndExecuteType sqlAndExecuteType = new SqlAndExecuteType();
sqlAndExecuteType.setSql(sql);
sqlAndExecuteType.setType(CommandConsTant.UPDATE_SQL);
sqlAndExecuteType.setExecuteType(CommandConsTant.SELECT_SQL);
return sqlAndExecuteType;
}
@ -163,6 +171,7 @@ public class MapperProxyExecute {
SqlAndExecuteType sqlAndExecuteType = new SqlAndExecuteType();
sqlAndExecuteType.setSql(sql);
sqlAndExecuteType.setType(CommandConsTant.SELECT_SQL);
sqlAndExecuteType.setExecuteType(CommandConsTant.SELECT_SQL);
return sqlAndExecuteType;
}

View File

@ -55,12 +55,13 @@ public class MyMapperProxy implements InvocationHandler {
if (!"".equals(name) && null != name) {
mapperKey += "." + name;
}
RecordSet rs = rsManager.getRs(mapperKey);
RecordSetTrans rs = rsManager.getTrans(mapperKey);
if (rs == null) {
rsManager.setRecordSet(mapperKey);
rs = rsManager.getRs(mapperKey);
rsManager.setRecordSetTrans(mapperKey);
rs = rsManager.getTrans(mapperKey);
}
return mapperProxyExecute.execute(rs, method, args);
}
/**
@ -76,10 +77,10 @@ public class MyMapperProxy implements InvocationHandler {
if (!"".equals(name) && null != name) {
mapperKey += "." + name;
}
RecordSetTrans rs = rsManager.getTrans(mapperKey);
RecordSet rs = rsManager.getRs(mapperKey);
if (rs == null) {
rsManager.setRecordSetTrans(mapperKey);
rs = rsManager.getTrans(mapperKey);
rsManager.setRecordSet(mapperKey);
rs = rsManager.getRs(mapperKey);
}
return mapperProxyExecute.execute(rs, method, args);
}

View File

@ -21,20 +21,26 @@ import java.util.List;
@ToString
public class SqlAndExecuteType {
/** slq */
private String sql;
/** sql类型 */
private String type;
private List<Object> args;
/** 执行类型 */
private String executeType;
/** 方法 */
private Method method;
/** rs */
private RecordSet recordSet;
private RecordSetTrans recordSetTrans;
/** 是否是事务 */
private boolean trans;
}

View File

@ -1,12 +1,16 @@
package youhong.ai.mymapper;
package youhong.ai.mymapper.test;
import basetest.BaseTest;
import com.alibaba.fastjson.JSON;
import com.api.youhong.ai.taibao.fcuntionlist.mapper.FunctionListMapper;
import com.api.youhong.ai.taibao.fcuntionlist.pojo.FunctionListConfigItem;
import org.junit.Test;
import youhong.ai.mymapper.MyMapper;
import youhong.ai.mymapper.command.entity.SqlDefinition;
import youhong.ai.mymapper.util.ParseSqlUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -119,4 +123,15 @@ public class ParseSqlTest extends BaseTest {
String[] strs = new String[0];
System.out.println(strs.getClass().getComponentType());
}
@Test
public void testMyMapper() {
// TestMayMapper mapper = MyMapper.getMapper(TestMayMapper.class);
// System.out.println(mapper.selectTest());
FunctionListMapper mapper = MyMapper.getMapper(FunctionListMapper.class);
List<FunctionListConfigItem> functionListConfigItems = mapper.selectFunctionListAll();
System.out.println(JSON.toJSONString(functionListConfigItems));
}
}

View File

@ -0,0 +1,20 @@
package youhong.ai.mymapper.test;
import aiyh.utils.annotation.recordset.Select;
import aiyh.utils.annotation.recordset.SqlMapper;
import java.util.Map;
/**
* <h1></h1>
*
* <p>create: 2023/3/18 19:11</p>
*
* @author youHong.ai
*/
@SqlMapper
public interface TestMayMapper {
@Select("select COMPANYNAME,LICENSE,EXPIREDATE,CVERSION from license")
Map<String, Object> selectTest();
}

View File

@ -1,12 +1,12 @@
package youhong.ai.mymapper.util;
import aiyh.utils.excention.CustomerException;
import youhong.ai.mymapper.ParseSqlTest;
import youhong.ai.mymapper.command.ISqlCommand;
import youhong.ai.mymapper.command.annotation.SqlCommand;
import youhong.ai.mymapper.command.constant.CommandConsTant;
import youhong.ai.mymapper.command.entity.CommandContentDefinition;
import youhong.ai.mymapper.command.entity.SqlCommandDefinition;
import youhong.ai.mymapper.test.ParseSqlTest;
import java.io.File;
import java.util.*;

View File

@ -2,6 +2,7 @@ package youhong.ai.mymapper.util;
import aiyh.utils.Util;
import aiyh.utils.excention.CustomerException;
import aiyh.utils.tool.cn.hutool.core.collection.CollectionUtil;
import aiyh.utils.tool.cn.hutool.core.util.StrUtil;
import youhong.ai.mymapper.command.CommandExecutor;
import youhong.ai.mymapper.command.constant.CommandConsTant;
@ -9,10 +10,7 @@ import youhong.ai.mymapper.command.entity.CommandContentDefinition;
import youhong.ai.mymapper.command.entity.SqlCommandDefinition;
import youhong.ai.mymapper.command.entity.SqlDefinition;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* <h1>sql</h1>
@ -25,9 +23,11 @@ public class ParseSqlUtil {
public final static ThreadLocal<Map<String, Object>> PARSE_PARAM_LOCALE = new ThreadLocal<>();
public final static ThreadLocal<Map<String, Object>> PARSE_TEMP_PARAM_LOCALE = new ThreadLocal<>();
public final static ThreadLocal<Map<String, Object>> PARSE_TEMP_PARAM_LOCALE = ThreadLocal.withInitial(HashMap::new);
public final static ThreadLocal<List<Object>> SQL_PARAM_LOCALE = new ThreadLocal<>();
public final static ThreadLocal<Map<String, Object>> PARAMS_ASS_LOCALE = ThreadLocal.withInitial(HashMap::new);
private final CommandExecutor commandExecutor = new CommandExecutor();
/**
@ -347,6 +347,7 @@ public class ParseSqlUtil {
if (!Objects.isNull(variable)) {
i += CommandConsTant.VARIABLE_PREPARED_STATEMENT.length() + variable.length();
Object value = getVariableValue(variable);
sqlBuilder.append("?");
ParseSqlUtil.SQL_PARAM_LOCALE.get().add(ParamValueUtil.getPreparedParam(value));
}
@ -367,10 +368,17 @@ public class ParseSqlUtil {
variable = variable.trim();
Map<String, Object> tempMap = ParseSqlUtil.PARSE_TEMP_PARAM_LOCALE.get();
Map<String, Object> paramMap = ParseSqlUtil.PARSE_PARAM_LOCALE.get();
Map<String, Object> assParam = ParseSqlUtil.PARAMS_ASS_LOCALE.get();
Object value = ParamValueUtil.getValueByKeyStr(variable, tempMap);
if (Objects.isNull(value)) {
value = ParamValueUtil.getValueByKeyStr(variable, paramMap);
}
if (Objects.isNull(value)) {
if (!CollectionUtil.isEmpty(assParam) && assParam.size() == 2) {
value = assParam.entrySet().stream().findFirst().get().getValue();
}
}
return value;
}

View File

@ -40,13 +40,16 @@ public class ResultMapperUtil {
return null;
}
if (Map.class.isAssignableFrom(returnType)) {
if (recordSet.next()) {
return getMap(recordSet, method, method.getGenericReturnType());
}
return null;
}
if (List.class.isAssignableFrom(returnType)) {
return getList(recordSet, method);
}
if (recordSet.next()) {
return getBean(recordSet, method);
return getBean(recordSet, method, method.getReturnType());
}
return null;
}
@ -92,7 +95,7 @@ public class ResultMapperUtil {
}
} else {
while (recordSet.next()) {
result.add(getBean(recordSet, method));
result.add(getBean(recordSet, method, componentType));
}
}
if (result.size() > 0) {
@ -115,7 +118,7 @@ public class ResultMapperUtil {
if (i == 0) {
keyClass = (Class<?>) types[i];
}
if (i == 2) {
if (i == 1) {
valueClass = (Class<?>) types[i];
}
}
@ -249,13 +252,15 @@ public class ResultMapperUtil {
}
return result;
}
}
// java bean 类型
while (recordSet.next()) {
Object bean = getBean(recordSet, method);
Object bean = getBean(recordSet, method, (Class<?>) actualTypeArgument);
result.add(bean);
}
return result;
}
} else {
throw new CustomerException("can not get generic type!");
}
@ -263,8 +268,7 @@ public class ResultMapperUtil {
throw new CustomerException("Return value of position type, unable to obtain method return generic type.");
}
private Object getBean(RecordSet recordSet, Method method) {
Class<?> returnType = method.getReturnType();
private Object getBean(RecordSet recordSet, Method method, Class<?> returnType) {
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo(returnType, Object.class);
@ -478,10 +482,29 @@ public class ResultMapperUtil {
throw new CustomerException("can not set result, CollectionMappings annotation only support result of list! Do you want to use @Associations!");
}
}
Map<String, Object> assParam = ParseSqlUtil.PARAMS_ASS_LOCALE.get();
if (Objects.isNull(assParam)) {
Map<String, Object> value = new HashMap<>();
value.put("var0", parseValue);
value.put("param0", parseValue);
ParseSqlUtil.PARAMS_ASS_LOCALE.set(value);
} else {
assParam.put("var0", parseValue);
assParam.put("param0", parseValue);
}
try {
Object o = myMapperProxy.invokeRs(null, innerMethod, new Object[]{parseValue}, method.getName());
result.setParse(true);
result.setValue(o);
result.setProperty(property);
} catch (Exception e) {
throw new CustomerException(e);
} finally {
if (Objects.nonNull(ParseSqlUtil.PARAMS_ASS_LOCALE.get())) {
ParseSqlUtil.PARAMS_ASS_LOCALE.remove();
}
}
}
}
}
@ -517,14 +540,37 @@ public class ResultMapperUtil {
throw new CustomerException("can not set result, CollectionMappings annotation only support result of list! Do you want to use @Associations!");
}
}
Map<String, Object> assParam = ParseSqlUtil.PARAMS_ASS_LOCALE.get();
if (Objects.isNull(assParam)) {
Map<String, Object> value = new HashMap<>();
value.put("var0", parseValue);
value.put("param0", parseValue);
ParseSqlUtil.PARAMS_ASS_LOCALE.set(value);
} else {
assParam.put("var0", parseValue);
assParam.put("param0", parseValue);
}
try {
Object o = myMapperProxy.invokeRs(null, associationMethod, new Object[]{parseValue}, method.getName());
result.setParse(true);
result.setValue(o);
result.setProperty(property);
} catch (Exception e) {
throw new CustomerException(e);
} finally {
if (Objects.nonNull(ParseSqlUtil.PARAMS_ASS_LOCALE.get())) {
ParseSqlUtil.PARAMS_ASS_LOCALE.remove();
}
}
}
private Object primitiveParseValue(Class<?> aclass, Object obj) {
if (Objects.isNull(aclass)) {
throw new CustomerException("target class type is not be null");
}
if (Number.class.isAssignableFrom(aclass)) {
return parseNumber(aclass, obj);
}
@ -534,6 +580,9 @@ public class ResultMapperUtil {
if (Character.class.isAssignableFrom(aclass) || char.class.isAssignableFrom(aclass)) {
return obj == null ? null : String.valueOf(obj).charAt(0);
}
if (Object.class.isAssignableFrom(aclass)) {
return obj;
}
throw new CustomerException("can not definition conversion rule of " + aclass);
}

View File

@ -152,4 +152,10 @@ public class TestTaiBao extends BaseTest {
return wfrequestlist;
}
@Test
public void testTableModelId() {
System.out.println(Util.getModeIdByTableName("uf_privacy_log_info"));
}
}