From 76337c80a6c0c7488320d228b1e217a89c80b1fa Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 28 Feb 2023 10:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=98=E8=82=83=E9=87=91=E8=9E=8D=E6=8E=A7?= =?UTF-8?q?=E8=82=A1-=E5=90=8C=E6=AD=A5=E8=AF=81=E7=85=A7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=87=B3=E4=BA=BA=E5=91=98=E5=8D=A1=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gsjrkg/action/SyncCertificateAction.java | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java diff --git a/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java b/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java new file mode 100644 index 0000000..42ba2de --- /dev/null +++ b/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java @@ -0,0 +1,135 @@ +package weaver.interfaces.gsjrkg.action; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.MainTableInfo; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; + +/** + * @Description: 同步证书到人员卡片个人信息 + * @author:dxfeng + * @createTime: 2023/02/20 + * @version: 1.0 + */ +public class SyncCertificateAction implements Action { + /** + * 建模表表名 + */ + private String modeTableName; + + /** + * 参数名称:建模表字段名:人员表字段名 + */ + private String params; + + private String resourceFieldGroup; + + @Override + public String execute(RequestInfo requestInfo) { + if (StringUtils.isBlank(params)) { + requestInfo.getRequestManager().setMessagecontent("自定义接口参数值配置错误"); + return Action.FAILURE_AND_CONTINUE; + } + if (StringUtils.isBlank(resourceFieldGroup)) { + // -1:基本信息,1:个人信息,3:工作信息 + resourceFieldGroup = "1"; + } + Map fieldMap = new HashMap<>(); + String[] fieldsArray = params.split(";"); + for (String fields : fieldsArray) { + String[] field = fields.split(":"); + if (field.length == 2) { + fieldMap.put(field[0], field[1]); + } + } + if (fieldMap.size() != fieldsArray.length) { + requestInfo.getRequestManager().setMessagecontent("自定义接口参数值格式错误,请检查"); + return Action.FAILURE_AND_CONTINUE; + } + Set modeFields = fieldMap.keySet(); + Map> modeMap = new HashMap<>(); + + RecordSet rs = new RecordSet(); + String resourceId = ""; + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] property = mainTableInfo.getProperty(); + for (Property item : property) { + String name = item.getName(); + String value = Util.null2String(item.getValue()); + if (StringUtils.isNotBlank(name) && StringUtils.isNotBlank(value)) { + if ("xm".equals(name)) { + resourceId = value; + } + } + } + // 查询当前人员的所有数据 + StringBuilder sqlBuilder = new StringBuilder("select ").append(StringUtils.join(modeFields, ",")).append(" from ").append(modeTableName).append(" where xm = ").append(resourceId).append(" order by id"); + rs.executeQuery(sqlBuilder.toString()); + while (rs.next()) { + appendIds(modeFields, rs, modeMap); + } + // 判断有无数据,没有的话插入数据 + sqlBuilder = new StringBuilder("SELECT id FROM CUS_FIELDDATA where scope ='HrmCustomFieldByInfoType' and scopeid = '").append(resourceFieldGroup).append("' and id =? "); + rs.executeQuery(sqlBuilder.toString(), resourceId); + if (!rs.next()) { + // 插入人员信息数据 + rs.executeUpdate("insert into cus_fielddata (scope,scopeid,id) values ('HrmCustomFieldByInfoType','" + resourceFieldGroup + "',?)", resourceId); + } + // 组装更新SQL语句 + sqlBuilder = new StringBuilder("update cus_fielddata set "); + for (Map.Entry entry : fieldMap.entrySet()) { + Set valueSet = modeMap.get(entry.getKey()); + String values = CollectionUtils.isEmpty(valueSet) ? "" : StringUtils.join(valueSet, ","); + sqlBuilder.append(" ").append(entry.getValue()).append(" = '").append(values).append("',"); + } + sqlBuilder.deleteCharAt(sqlBuilder.length() - 1); + sqlBuilder.append(" where scope ='HrmCustomFieldByInfoType' and scopeid = ").append(resourceFieldGroup).append(" and id = ").append(resourceId); + rs.executeUpdate(sqlBuilder.toString()); + + return Action.SUCCESS; + } + + + private void appendIds(Set modeFields, RecordSet rs, Map> modeMap) { + for (String modeField : modeFields) { + String ids = rs.getString(modeField); + if (StringUtils.isBlank(ids)) { + return; + } + if (CollectionUtils.isEmpty(modeMap.get(modeField))) { + modeMap.put(modeField, new HashSet<>()); + } + modeMap.get(modeField).addAll(Arrays.asList(ids.split(","))); + } + } + + public String getParams() { + return params; + } + + public void setParams(String params) { + this.params = params; + } + + public String getModeTableName() { + return modeTableName; + } + + public void setModeTableName(String modeTableName) { + this.modeTableName = modeTableName; + } + + public String getResourceFieldGroup() { + return resourceFieldGroup; + } + + public void setResourceFieldGroup(String resourceFieldGroup) { + this.resourceFieldGroup = resourceFieldGroup; + } +}