From 74d0fc9a1c7b10f3ce891672c6634c29eed8884c Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 1 Apr 2024 09:49:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E8=81=8C=E6=B5=81=E7=A8=8B=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BA=BA=E5=91=98=E7=85=A7=E7=89=87=E3=80=81=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nbjh/action/UpdateResourceAction.java | 417 ++++++++++++++++++ 1 file changed, 417 insertions(+) create mode 100644 src/weaver/interfaces/nbjh/action/UpdateResourceAction.java diff --git a/src/weaver/interfaces/nbjh/action/UpdateResourceAction.java b/src/weaver/interfaces/nbjh/action/UpdateResourceAction.java new file mode 100644 index 0000000..c138f98 --- /dev/null +++ b/src/weaver/interfaces/nbjh/action/UpdateResourceAction.java @@ -0,0 +1,417 @@ +package weaver.interfaces.nbjh.action; + + +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.*; + +import java.util.*; + +public class UpdateResourceAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + User user = requestInfo.getRequestManager().getUser(); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + // 流程主表数据 + Map mainData = new HashMap<>(); + for (Property property : properties) { + mainData.put(property.getName(), property.getValue()); + } + // 获取身份证号 + String sfzh = mainData.get("sfzh"); + if (StringUtils.isBlank(sfzh)) { + requestInfo.getRequestManager().setMessagecontent("身份证号为空,无法匹配到员工信息"); + return FAILURE_AND_CONTINUE; + } + RecordSet rs = new RecordSet(); + + // 根据身份证号获取获取员工ID + String resourceId = ""; + rs.executeQuery("select id from hrmresource where certificatenum = ?", sfzh); + if (rs.next()) { + resourceId = rs.getString("id"); + } + if (StringUtils.isBlank(resourceId)) { + requestInfo.getRequestManager().setMessagecontent("当前身份证号未匹配到员工信息,请确认信息填写是否正确"); + return FAILURE_AND_CONTINUE; + } + + BaseBean baseBean = new BaseBean(); + baseBean.writeLog("UpdateResourceAction,开始更新主表照片字段,人员ID===" + resourceId); + // 更新主表照片字段 + String zp1 = mainData.get("zp1"); + baseBean.writeLog("zp1====" + zp1); + String imageFileId = null; + if (StringUtils.isNotBlank(zp1)) { + String docId = zp1.split(",")[0]; + baseBean.writeLog("docId====" + docId); + rs.executeQuery("select imagefileid from docimagefile where docid = ? ", docId); + if (rs.next()) { + imageFileId = rs.getString("imagefileid"); + } + } + baseBean.writeLog("imageFileId====" + imageFileId); + if (StringUtils.isNotBlank(imageFileId)) { + rs.executeUpdate("update hrmresource set resourceimageid = ? where id = ? ", imageFileId, resourceId); + } else { + // 更新照片为null + rs.executeUpdate("update hrmresource set resourceimageid = null where id = ? ", resourceId); + } + baseBean.writeLog("UpdateResourceAction,更新主表照片字段结束"); + String resourceimageid; + rs.executeQuery("select resourceimageid from hrmresource where id = ? ", resourceId); + if (rs.next()) { + resourceimageid = rs.getString("resourceimageid"); + baseBean.writeLog("resourceimageid====" + resourceimageid); + } else { + baseBean.writeLog("resourceimageid,未查询到数据"); + } + + + DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); + // 学习履历 + List> eduDetailDataList = getDetailDataList(detailTableInfo, 0); + // 工作履历 + List> workDetailDataList = getDetailDataList(detailTableInfo, 1); + // 家庭主要成员 + List> familyDetailDataList = getDetailDataList(detailTableInfo, 2); + + // 插入明细表数据,插入前先删除原有数据 + String formModeId = getModeIdByTableName("uf_xxll"); + if (StringUtils.isNotBlank(formModeId)) { + rs.executeUpdate("delete from uf_xxll where xm = ? ", resourceId); + for (Map detailMap : eduDetailDataList) { + Map dataMap = new HashMap<>(); + String uuid = UUID.randomUUID().toString(); + dataMap.put("modeuuid", uuid); + dataMap.put("formmodeid", formModeId); + buildModeInsertFields(dataMap, user.getUID()); + + dataMap.put("xm", resourceId); + dataMap.put("xx", detailMap.get("xx")); + dataMap.put("zy", detailMap.get("zy")); + dataMap.put("ksrq", detailMap.get("ksrq")); + dataMap.put("jsrq", detailMap.get("jsrq")); + dataMap.put("bz", detailMap.get("bz")); + insertDetailData(dataMap, "uf_xxll"); + + refreshRight(uuid, "uf_xxll", formModeId, user.getUID()); + } + } + formModeId = getModeIdByTableName("uf_gzll"); + if (StringUtils.isNotBlank(formModeId)) { + rs.executeUpdate("delete from uf_gzll where xm = ? ", resourceId); + for (Map detailMap : workDetailDataList) { + Map dataMap = new HashMap<>(); + String uuid = UUID.randomUUID().toString(); + dataMap.put("modeuuid", uuid); + dataMap.put("formmodeid", formModeId); + buildModeInsertFields(dataMap, user.getUID()); + + dataMap.put("xm", resourceId); + dataMap.put("gzdw", detailMap.get("gzdw")); + dataMap.put("ksrq", detailMap.get("ksrq")); + dataMap.put("jsrq", detailMap.get("jsrq")); + dataMap.put("zw", detailMap.get("zw")); + dataMap.put("lzyy", detailMap.get("lzyy")); + dataMap.put("zmr", detailMap.get("zmr")); + insertDetailData(dataMap, "uf_gzll"); + + refreshRight(uuid, "uf_gzll", formModeId, user.getUID()); + + } + } + + formModeId = getModeIdByTableName("uf_jtzycy"); + if (StringUtils.isNotBlank(formModeId)) { + rs.executeUpdate("delete from uf_jtzycy where ygxm = ? ", resourceId); + for (Map detailMap : familyDetailDataList) { + Map dataMap = new HashMap<>(); + String uuid = UUID.randomUUID().toString(); + dataMap.put("modeuuid", uuid); + dataMap.put("formmodeid", formModeId); + buildModeInsertFields(dataMap, user.getUID()); + + dataMap.put("ygxm", resourceId); + dataMap.put("xm", detailMap.get("xm")); + dataMap.put("nl", detailMap.get("nl")); + dataMap.put("ybrgx", detailMap.get("ybrgx")); + dataMap.put("zy", detailMap.get("zy")); + dataMap.put("zz", detailMap.get("zz")); + insertDetailData(dataMap, "uf_jtzycy"); + + refreshRight(uuid, "uf_jtzycy", formModeId, user.getUID()); + + } + } + + + return SUCCESS; + } + + + /** + * 构建人员主表数据集合 + * + * @param mainData + * @return + */ + private Map buildResourceMap(Map mainData) { + + Map resourceMap = new HashMap<>(); + // 申请职位 + resourceMap.put("jobtitle", mainData.get("sqzw")); + // 姓名 + resourceMap.put("lastname", mainData.get("xm")); + // 性别 + resourceMap.put("sex", mainData.get("xb")); + // 出生日期 + resourceMap.put("birthday", mainData.get("csrq")); + // 身份证号 + resourceMap.put("certificatenum", mainData.get("sfzh")); + // 民族 + resourceMap.put("folk", mainData.get("mz")); + // 籍贯 + resourceMap.put("nativeplace", mainData.get("jg")); + // 联系电话 + resourceMap.put("mobile", mainData.get("lxdh")); + // 政治面貌 + resourceMap.put("policy", mainData.get("zzmm")); + // 参加工作时间 + resourceMap.put("workstartdate", mainData.get("cjgzsj")); + // 部门 + String bm = mainData.get("bm"); + resourceMap.put("departmentid", bm); + // 分部 + String subcompanyid1 = new DepartmentComInfo().getSubcompanyid1(bm); + resourceMap.put("subcompanyid1", subcompanyid1); + + // 入职日期 + resourceMap.put("companystartdate", mainData.get("rzrq")); + // 照片 + resourceMap.put("resourceimageid", mainData.get("zp")); + // 学历 + resourceMap.put("educationlevel", mainData.get("xl")); + // 婚姻状况 + resourceMap.put("maritalstatus", mainData.get("hyzk")); + // 办公地点 + resourceMap.put("workroom", mainData.get("bgdd")); + // 状态 + resourceMap.put("status", mainData.get("zt")); + // 试用期结束日期 + resourceMap.put("probationenddate", mainData.get("syqjsrq")); + return resourceMap; + } + + private Map> buildCustomMap(Map mainData, String status) { + Map> dataMap = new HashMap<>(); + // 1 + Map custom1Map = new HashMap<>(); + // 3 + Map custom3Map = new HashMap<>(); + // 毕业院校 + custom1Map.put("field7", mainData.get("byyx")); + // 专业 + custom1Map.put("field8", mainData.get("zy")); + // 户口类型 + custom1Map.put("field9", mainData.get("hklx")); + // 职称 + custom1Map.put("field10", mainData.get("zc")); + // 特长 + custom1Map.put("field11", mainData.get("tc")); + // 出生地 + custom1Map.put("field17", mainData.get("csd")); + // 现户口所在地 + custom1Map.put("field13", mainData.get("xhkszd")); + // 现联系地址 + custom1Map.put("field15", mainData.get("xlxdz")); + // 试用期限 + custom3Map.put("field20", mainData.get("syqx")); + // 血型 + custom1Map.put("field22", mainData.get("xx")); + // 准驾车险 + custom1Map.put("field23", mainData.get("zjcx")); + // 紧急联系人电话 + custom1Map.put("field16", mainData.get("jjlxrdh")); + // 身高 + custom1Map.put("field14", mainData.get("sg")); + + if ("0".equals(status)) { + // 试用职等档次 + custom3Map.put("field21", mainData.get("syzddc")); + } else if ("1".equals(status)) { + // 正式职等档次 + custom3Map.put("field21", mainData.get("zszddc")); + } + dataMap.put("1", custom1Map); + dataMap.put("3", custom3Map); + return dataMap; + + } + + /** + * 获取指定下标的明细表数据集合 + * + * @param detailTableInfo + * @param detailIndex + * @return + */ + private List> getDetailDataList(DetailTableInfo detailTableInfo, int detailIndex) { + List> detailDataList = new ArrayList<>(); + DetailTable detailTable = detailTableInfo.getDetailTable(detailIndex); + Row[] rows = detailTable.getRow(); + for (Row row : rows) { + Map detailDataMap = new HashMap<>(); + Cell[] cells = row.getCell(); + for (Cell cell : cells) { + detailDataMap.put(cell.getName(), cell.getValue()); + } + detailDataList.add(detailDataMap); + } + return detailDataList; + } + + /** + * 更新数据 + * + * @param dataMap + */ + public static void updateHrmDataById(Map dataMap, String id) { + List fieldList = new ArrayList<>(); + List dataList = new ArrayList<>(); + + dataMap.forEach((key, value) -> { + fieldList.add(key + " = ? "); + if (StringUtils.isBlank(value)) { + dataList.add(null); + } else { + dataList.add(value); + } + }); + dataList.add(id); + String updateSql = "update hrmresource set " + StringUtils.join(fieldList, ",") + " where id = ? "; + RecordSet rs = new RecordSet(); + rs.executeUpdate(updateSql, dataList); + if (StringUtils.isNotBlank(rs.getExceptionMsg())) { + throw new RuntimeException(rs.getExceptionMsg()); + } + } + + /** + * 更新人员自定义字段信息 + * + * @param dataMap + * @param id + * @param scopeId + */ + public static void updateCusDataById(Map dataMap, String id, String scopeId) { + List fieldList = new ArrayList<>(); + List dataList = new ArrayList<>(); + + dataMap.forEach((key, value) -> { + fieldList.add(key + " = ? "); + // 兼容SqlServer数据库Text字段类型不为null + if (StringUtils.isBlank(value) && !"field21".equals(key)) { + dataList.add(null); + } else { + dataList.add(value); + } + }); + dataList.add(id); + dataList.add(scopeId); + String updateSql = "update cus_fielddata set " + StringUtils.join(fieldList, ",") + " where id = ? and scope ='HrmCustomFieldByInfoType' and scopeid = ? "; + RecordSet rs = new RecordSet(); + rs.executeUpdate(updateSql, dataList); + if (StringUtils.isNotBlank(rs.getExceptionMsg())) { + throw new RuntimeException(rs.getExceptionMsg()); + } + } + + /** + * 插入明细表数据 + * + * @param dataMap + * @param tableName + */ + public static void insertDetailData(Map dataMap, String tableName) { + List fieldList = new ArrayList<>(); + List dataList = new ArrayList<>(); + List paramList = new ArrayList<>(); + + dataMap.forEach((key, value) -> { + if (StringUtils.isNotBlank(value)) { + fieldList.add(key); + dataList.add(value); + paramList.add("?"); + } + }); + String insertSql = " insert into " + tableName + "(" + StringUtils.join(fieldList, ",") + ") values (" + StringUtils.join(paramList, ",") + ")"; + RecordSet rs = new RecordSet(); + rs.executeUpdate(insertSql, dataList); + if (StringUtils.isNotBlank(rs.getExceptionMsg())) { + throw new RuntimeException(rs.getExceptionMsg()); + } + } + + + /** + * 建模表数据权限重构 + * + * @param uuid + * @param modeTable + * @param formModeId + */ + private String refreshRight(String uuid, String modeTable, String formModeId, int creator) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from " + modeTable + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(creator, Integer.parseInt(formModeId), bid); + return String.valueOf(bid); + } + return ""; + } + + /** + * 构建建模表基本数据 + * + * @param mainDataMap 参数集合 + */ + private void buildModeInsertFields(Map mainDataMap, int userId) { + String dateTime = DateUtil.getFullDate(); + String[] dateSplit = dateTime.split(" "); + mainDataMap.put("modedatacreater", String.valueOf(userId)); + mainDataMap.put("modedatacreatedate", dateSplit[0]); + mainDataMap.put("modedatacreatetime", dateSplit[1]); + mainDataMap.put("modedatacreatertype", "0"); + } + + /** + * 根据建模表名,获取建模ID + * + * @param modeTable + * @return + */ + private String getModeIdByTableName(String modeTable) { + String formModeId = "-1"; + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? ) order by id", modeTable); + if (rs.next()) { + formModeId = rs.getString("id"); + } + return formModeId; + } +}