package weaver.interfaces.hzzx.action; import com.alibaba.fastjson.JSON; import com.engine.hzzx.conn.DataUtil; import org.apache.commons.lang.StringUtils; import weaver.conn.RecordSet; import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.*; import java.util.*; /** * @author:dxfeng * @createTime: 2025/03/27 * @version: 1.0 */ public class TrainingManageEndAction implements Action { RecordSet rs = new RecordSet(); @Override public String execute(RequestInfo requestInfo) { try { String trainingEffectFlowId = TrainingManageCreateFlowAction.FLOW_ID; String trainingEffectTableName = DataUtil.getTableNameById(trainingEffectFlowId); String requestId = requestInfo.getRequestid(); int creatorId = requestInfo.getRequestManager().getCreater(); MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); Property[] properties = mainTableInfo.getProperty(); Map mainDataMap = new HashMap<>(); for (Property property : properties) { mainDataMap.put(property.getName(), property.getValue()); } List> detailDataList = new ArrayList<>(); DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); DetailTable detailTable = detailTableInfo.getDetailTable(0); 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); } // String pxfhgdyq = mainDataMap.get("pxfhgdyq"); String pxxgpgfs = mainDataMap.get("pxxgpgfs"); String pxmc = mainDataMap.get("pxmc"); rs.writeLog("pxfhgdyq==" + pxfhgdyq + ",pxxgpgfs==" + pxxgpgfs); if (!"0".equals(pxfhgdyq) || StringUtils.isBlank(pxxgpgfs)) { return SUCCESS; } //查询培训基本信息 Map trainInfoMap = new HashMap<>(); rs.executeQuery("select * from uf_pxsssq where id = ? ", pxmc); if (rs.next()) { trainInfoMap.put("pxmc", rs.getString("pxmc")); trainInfoMap.put("xzk", rs.getString("xzk")); trainInfoMap.put("pxsj", rs.getString("pxsj")); trainInfoMap.put("jssjyc", rs.getString("jssjyc")); trainInfoMap.put("pxdd", rs.getString("pxdd")); trainInfoMap.put("szbm", rs.getString("szbm")); trainInfoMap.put("pxdx", rs.getString("pxdx")); trainInfoMap.put("pxrs", rs.getString("pxrs")); trainInfoMap.put("xs", rs.getString("xs")); trainInfoMap.put("jf", rs.getString("jf")); } switch (pxxgpgfs) { case "0": // 培训效果评估表 assessment(String.valueOf(creatorId), requestId, trainingEffectTableName, mainDataMap, trainInfoMap); break; case "1": case "2": //考试、考核 exam(String.valueOf(creatorId), mainDataMap, trainInfoMap, pxxgpgfs); default: break; } Map trainerMap = new HashMap<>(); trainerMap.put("pxmc", pxmc); trainerMap.put("pxqssj", mainDataMap.get("sjpxjhkssj")); trainerMap.put("pxjssj", mainDataMap.get("sjpxjhjssj")); trainerMap.put("pxzt", trainInfoMap.get("xzk")); trainerMap.put("pxzzdw", mainDataMap.get("pxzzbm")); // 写入培训授课信息 for (Map detailData : detailDataList) { String pxsnb = detailData.get("pxsnb"); rs.writeLog("pxsnb==" + pxsnb); if (StringUtils.isNotBlank(pxsnb)) { insertTrainer(pxsnb, String.valueOf(creatorId), pxmc, new HashMap<>(trainerMap)); } } return SUCCESS; } catch (Exception e) { rs.writeLog(e); requestInfo.getRequestManager().setMessagecontent(e.getMessage()); return FAILURE_AND_CONTINUE; } } /** * 培训效果评估表 * * @param mainDataMap */ private void assessment(String creatorId, String requestId, String trainingEffectTableName, Map mainDataMap, Map trainInfoMap) throws Exception { // 查询流程归档的人 rs.executeQuery("select a.xm from " + trainingEffectTableName + " a inner join workflow_requestbase b on a.requestid =b.requestid and b.currentnodetype =3 where a.lc= ? ", requestId); List userIdList = new ArrayList<>(); while (rs.next()) { userIdList.add(rs.getString("xm")); } rs.writeLog("userIdList==" + JSON.toJSONString(userIdList)); String insertTableName = "uf_pxxx"; ResourceComInfo resourceComInfo = new ResourceComInfo(); Map trainEmployeesMap = new HashMap<>(); trainEmployeesMap.put("pxmc", mainDataMap.get("pxmc")); trainEmployeesMap.put("pxqssj", mainDataMap.get("sjpxjhkssj")); trainEmployeesMap.put("pxjssj", mainDataMap.get("sjpxjhjssj")); trainEmployeesMap.put("pxzt", trainInfoMap.get("xzk")); trainEmployeesMap.put("pxxs", trainInfoMap.get("xs")); trainEmployeesMap.put("pxjf", trainInfoMap.get("jf")); trainEmployeesMap.put("pxzzdw", mainDataMap.get("pxzzbm")); int formModeId = DataUtil.getModeIdByTableName(insertTableName); trainEmployeesMap.put("formmodeid", String.valueOf(formModeId)); DataUtil.buildModeInsertFields(trainEmployeesMap, creatorId); for (String userId : userIdList) { Map insertMap = new HashMap<>(trainEmployeesMap); insertMap.put("xm", userId); insertMap.put("gh", resourceComInfo.getWorkcode(userId)); // 插入数据 String uuid = UUID.randomUUID().toString(); insertMap.put("modeuuid", uuid); rs.writeLog("insertMap==" + JSON.toJSONString(insertMap)); DataUtil.insertData(insertMap, insertTableName); DataUtil.refreshRight(uuid, insertTableName, formModeId, creatorId); // 更新个人签到台账 rs.executeUpdate("update uf_grqdtz set pxxgpgbsftj = 0 where xm = ? and pxmc = ? ", userId, mainDataMap.get("pxmc")); } } private void exam(String creatorId, Map mainDataMap, Map trainInfoMap, String type) throws Exception { String drlzy = mainDataMap.get("drlzy"); List userIdList = new ArrayList<>(); if (StringUtils.isNotBlank(drlzy)) { String[] userIds = drlzy.split(","); userIdList.addAll(Arrays.asList(userIds)); } rs.writeLog("userIdList==" + JSON.toJSONString(userIdList)); String sql = "update uf_grqdtz set kssftg = 0 where xm = ? and pxmc = ? "; if ("2".equals(type)) { sql = "update uf_grqdtz set khsftg = 0 where xm = ? and pxmc = ? "; } String insertTableName = "uf_pxxx"; ResourceComInfo resourceComInfo = new ResourceComInfo(); Map trainEmployeesMap = new HashMap<>(); trainEmployeesMap.put("pxmc", mainDataMap.get("pxmc")); trainEmployeesMap.put("pxqssj", mainDataMap.get("sjpxjhkssj")); trainEmployeesMap.put("pxjssj", mainDataMap.get("sjpxjhjssj")); trainEmployeesMap.put("pxzt", trainInfoMap.get("xzk")); trainEmployeesMap.put("pxxs", trainInfoMap.get("xs")); trainEmployeesMap.put("pxjf", trainInfoMap.get("jf")); trainEmployeesMap.put("pxzzdw", mainDataMap.get("pxzzbm")); int formModeId = DataUtil.getModeIdByTableName(insertTableName); trainEmployeesMap.put("formmodeid", String.valueOf(formModeId)); DataUtil.buildModeInsertFields(trainEmployeesMap, creatorId); for (String userId : userIdList) { Map insertMap = new HashMap<>(trainEmployeesMap); insertMap.put("xm", userId); insertMap.put("gh", resourceComInfo.getWorkcode(userId)); // 插入数据 String uuid = UUID.randomUUID().toString(); insertMap.put("modeuuid", uuid); rs.writeLog("insertMap==" + JSON.toJSONString(insertMap)); DataUtil.insertData(insertMap, insertTableName); DataUtil.refreshRight(uuid, insertTableName, formModeId, creatorId); // 更新个人签到台账 rs.executeUpdate(sql, userId, mainDataMap.get("pxmc")); } } /** * 插入培训授课信息 * * @param trainer * @param creatorId * @param pxmc * @param trainerMap * @throws Exception */ private void insertTrainer(String trainer, String creatorId, String pxmc, Map trainerMap) throws Exception { ResourceComInfo resourceComInfo = new ResourceComInfo(); String workCode = resourceComInfo.getWorkcode(trainer); trainerMap.put("gh", workCode); trainerMap.put("xm", trainer); // 查询导师数据 rs.executeQuery("select * from uf_pxsssq_dt1 where sklsnb = ? and mainid = ?", trainer, pxmc); if (rs.next()) { String jf = rs.getString("jf"); String xs = rs.getString("xs"); trainerMap.put("pxskxs", xs); trainerMap.put("pxskjf", jf); } String insertTableName = "uf_pxskxx"; int formModeId = DataUtil.getModeIdByTableName(insertTableName); trainerMap.put("formmodeid", String.valueOf(formModeId)); DataUtil.buildModeInsertFields(trainerMap, creatorId); // 插入数据 String uuid = UUID.randomUUID().toString(); trainerMap.put("modeuuid", uuid); rs.writeLog("trainerMap==" + JSON.toJSONString(trainerMap)); DataUtil.insertData(trainerMap, insertTableName); DataUtil.refreshRight(uuid, insertTableName, formModeId, creatorId); } }