From ca50943d00275ccf4b1fd03d87a90a69d5b7dbb8 Mon Sep 17 00:00:00 2001 From: jskim Date: Wed, 14 Dec 2022 16:58:24 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=BD=EB=B6=81=EB=8C=80=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EB=8B=A8=EC=9C=84=20=EC=B7=A8=ED=95=A9=20=20?= =?UTF-8?q?-=20=EC=97=B0=EA=B3=84=EB=93=B1=EB=A1=9D=EC=8B=9C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=20=EB=8B=A8=EC=9C=84=EB=A1=9C=20=EC=B7=A8?= =?UTF-8?q?=ED=95=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../totsys/doc/HttpSubDocUserRegist.java | 347 +++++++++ .../beans/totsys/report/ReportUserUpdate.java | 187 +++++ .../co/kihyun/beans/user/HttpUserDocList.java | 189 +++++ .../web/report_dept/iframe/newTreeUser.jsp | 365 +++++++++ .../report_dept/iframe/new_section_list4.html | 52 ++ .../common/web/report_dept/new_user_list2.jsp | 521 +++++++++++++ .../mydocbox/tempbox/report_regist.jsp | 2 +- .../mydocbox/regbox/sub_doc_user_regist.jsp | 728 ++++++++++++++++++ 8 files changed, 2390 insertions(+), 1 deletion(-) create mode 100644 src/kr/co/kihyun/beans/totsys/doc/HttpSubDocUserRegist.java create mode 100644 src/kr/co/kihyun/beans/totsys/report/ReportUserUpdate.java create mode 100644 src/kr/co/kihyun/beans/user/HttpUserDocList.java create mode 100644 webapps/totsys/common/web/report_dept/iframe/newTreeUser.jsp create mode 100644 webapps/totsys/common/web/report_dept/iframe/new_section_list4.html create mode 100644 webapps/totsys/common/web/report_dept/new_user_list2.jsp create mode 100644 webapps/totsys/totper/mydocbox/regbox/sub_doc_user_regist.jsp diff --git a/src/kr/co/kihyun/beans/totsys/doc/HttpSubDocUserRegist.java b/src/kr/co/kihyun/beans/totsys/doc/HttpSubDocUserRegist.java new file mode 100644 index 0000000..0100cab --- /dev/null +++ b/src/kr/co/kihyun/beans/totsys/doc/HttpSubDocUserRegist.java @@ -0,0 +1,347 @@ +/************************************************************************************************* + * 프로그램명 : HttpDocRegist.java 프로그램설명 : 집계문서 등록자 작성자 : 강원중 작성일 : 2004.06.07 변경일 : 2003.11.30 + **************************************************************************************************/ + +package kr.co.kihyun.beans.totsys.doc; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLDecoder; +//import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Iterator; +//import java.util.List; +//import java.util.Map.Entry; +import java.util.Set; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import kr.co.kihyun.beans.entity.AcceptanceLimitStrategy; +import kr.co.kihyun.beans.entity.AccessAuth; +//import kr.co.kihyun.beans.entity.Board; +import kr.co.kihyun.beans.entity.Category; +import kr.co.kihyun.beans.entity.ExecutionCode; +import kr.co.kihyun.beans.entity.MDept; +import kr.co.kihyun.beans.entity.MUser; +import kr.co.kihyun.beans.entity.TotDoc; +import kr.co.kihyun.beans.entity.TotDocAppendType; +import kr.co.kihyun.beans.entity.TotDocProcess; +import kr.co.kihyun.beans.entity.TotDocType; +import kr.co.kihyun.beans.entity.TotItem; +import kr.co.kihyun.beans.entity.TotReport; +import kr.co.kihyun.beans.entity.TotReportProcess; +import kr.co.kihyun.beans.entity.TotTable; +import kr.co.kihyun.beans.entity.util.MPersistenceManager; +import kr.co.kihyun.beans.entity.util.PMF; +import kr.co.kihyun.beans.totsys.report.ReportUpdate; +import kr.co.kihyun.beans.totsys.report.ReportUserUpdate; +import kr.co.kihyun.beans.user.GroupView; +import kr.co.kihyun.beans.user.HttpSSOLogin; +import kr.co.kihyun.io.FileUtil; +import kr.co.kihyun.lang.Encoder; +import kr.co.kihyun.lang.MInteger; +import kr.co.kihyun.lang.MLong; +import kr.co.kihyun.lang.MString; +import kr.co.kihyun.moumi.MoumiConfig; +import kr.co.kihyun.text.html.ServletUtil; +import kr.co.kihyun.text.html.TagFilter; +import org.datanucleus.ObjectManager; +import org.datanucleus.jdo.JDOPersistenceManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +@WebServlet("/servlet/kr.co.kihyun.beans.totsys.doc.HttpSubDocUserRegist") +public class HttpSubDocUserRegist extends HttpServlet { + + /** + * + */ + private static final long serialVersionUID = 1L; + private static final Logger LOG = LoggerFactory.getLogger(HttpSubDocUserRegist.class); + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + res.setContentType("text/html;charset=UTF-8"); + if (req.getMethod().equals("HEAD")) + return; + PrintWriter out = res.getWriter(); + + /*********** User HttpLogin check ***********/ + if (!HttpSSOLogin.isLogin(req)) { + String connURL = "location='/totsys/login/login.jsp';"; + out.println(ServletUtil.getJavaScript(connURL)); + return; + } + + /********** session내의 userId **********/ + String usID = HttpSSOLogin.getLoginID(req); + String dpID = HttpSSOLogin.getDeptID(req); + + /********** parameter value **********/ + String docName = Encoder.toJava(req.getParameter("docName")); + String stDate = Encoder.toJava(req.getParameter("stDate")); + String stTime = Encoder.toJava(req.getParameter("stTime")); + String edDate = Encoder.toJava(req.getParameter("edDate")); + String edTime = Encoder.toJava(req.getParameter("edTime")); + int execNum = MInteger.parseInt(req.getParameter("execNum")); + String execDate = MString.checkNull(req.getParameter("execDate")); + String acceptanceLimitStrategy = Encoder.toJava(req.getParameter("acceptanceLimitStrategy")); + String prss = Encoder.toJava(req.getParameter("prss")); + Long submitLimit = MLong.parseLong(req.getParameter("submitLimit"), Long.MAX_VALUE); + String title = Encoder.toJava(req.getParameter("title")); + String contents = Encoder.toJava(req.getParameter("notify")); + //String svrFilenames = URLDecoder.decode(MString.checkNull(req.getParameter("svrFilenames")), "UTF-8"); + + String svrFilenames=Encoder.toJava(MString.checkNull(req.getParameter("svrFilenames"))); + svrFilenames = URLDecoder.decode(svrFilenames, "UTF-8"); + + + String deptIDs = Encoder.toJava(req.getParameter("deptIDs")); + int accAuth = MInteger.parseInt(req.getParameter("accAuth"), 0);// 집계문서 접근권한 + // String docForm = Encoder.toJava(req.getParameter("docForm")); + String docForm = Encoder.toJava(TagFilter.convertSingle(req.getParameter("copyForm"))); + + Long reportID = new Long(MInteger.parseInt(req.getParameter("reportID"))); + + stDate += " " + stTime + ":00:00"; + edDate += " " + edTime + ":00:00"; + + Date startDate, endDate; + startDate = endDate = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + startDate = sdf.parse(stDate); + endDate = sdf.parse(edDate); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + String userIDs = Encoder.toJava(req.getParameter("userIDs")); + String deptTypes = Encoder.toJava(req.getParameter("deptTypes")); + + String handyName = Encoder.toJava(MString.checkNull(req.getParameter("handyName"))); + int totRange = MInteger.parseInt(MString.checkNull(req.getParameter("totRange")), 1); + + String[] deptIDList = deptIDs.split(","); + String[] typeList = deptTypes.split(","); + + MDept userDept = null; + MUser mUser = null; + TotDoc repDoc = null; + TotReport totReport = null; + PersistenceManager pm = new MPersistenceManager(PMF.get().getPersistenceManager()); + Transaction tx = pm.currentTransaction(); + ObjectManager om = ((JDOPersistenceManager) tx.getPersistenceManager()).getObjectManager(); // jeus 6 proplem + try { + tx.begin(); + userDept = pm.getObjectById(MDept.class, dpID); + mUser = pm.getObjectById(MUser.class, usID); + totReport = pm.getObjectById(TotReport.class, reportID); + repDoc = totReport.getTotDoc(); + + int all = typeList.length; + StringBuilder dts = new StringBuilder(); + StringBuilder uss = new StringBuilder(); + + for (int a = 0; a < all; a++) { + if (typeList[a].equals("user")) { + if (uss.toString().length() == 0) { + uss.append(deptIDList[a]); + } else { + if (!uss.toString().contains(deptIDList[a])) { + uss.append(","); + uss.append(deptIDList[a]); + } + } + } else if (typeList[a].equals("group")) { + if (new GroupView().getUserUserDeptUserID(deptIDList[a]).length() != 0) { + if (uss.toString().length() == 0) { + uss.append(new GroupView().getUserUserDeptUserID(deptIDList[a])); + } else { + if (!uss.toString().contains(new GroupView().getUserUserDeptUserID(deptIDList[a]))) { + uss.append(","); + uss.append(new GroupView().getUserUserDeptUserID(deptIDList[a])); + } + } + } + + if (new GroupView().getUserDeptDeptID(deptIDList[a]).length() != 0) { + if (dts.toString().length() == 0) { + dts.append(new GroupView().getUserDeptDeptID(deptIDList[a])); + } else { + if (!dts.toString().contains(new GroupView().getUserDeptDeptID(deptIDList[a]))) { + dts.append(","); + dts.append(new GroupView().getUserDeptDeptID(deptIDList[a])); + } + } + } + } else { + if (dts.toString().length() == 0) { + dts.append(deptIDList[a]); + } else { + if (!dts.toString().contains(deptIDList[a])) { + dts.append(","); + dts.append(deptIDList[a]); + } + } + } + } + + deptIDs = dts.toString(); + userIDs = uss.toString(); + if (docForm == null) { + out.println(ServletUtil.alert(TotDocType.FORM_DOC + MoumiConfig.getMessageBundle().getString("moumi.message.popup.notTableReConfirm"))); + out.println(ServletUtil.redirect("/totsys/totper/mydocbox/regbox/sub_doc_regist.jsp?reportID=" + + reportID)); + } else { + } + + SimpleDateFormat execDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + ExecutionCode execCode = null; + if (execNum > 0 && !MString.isNull(execDate)) + execCode = new ExecutionCode(mUser.getUpperDept(pm).getName(), execNum, execDateFormat.parse(execDate)); + TotDoc newDoc = docRegist(pm, docName, execCode, handyName, mUser, startDate, endDate, + AccessAuth.asAccessAuth(accAuth), TotDoc.TotRange.asTotRange(totRange), repDoc, userDept, + acceptanceLimitStrategy, submitLimit, prss, repDoc.getAppendType()); + + + + title=docName; + + kr.co.kihyun.beans.entity.Board mBoard = new kr.co.kihyun.beans.entity.Board(title); + mBoard.setUser(mUser); + //mBoard.setContents(repDoc.getBoard().getContents()); + mBoard.setContents(contents); + mBoard.setTotDoc(newDoc); + mBoard.setCategory(pm.getObjectById(Category.class, Category.ID_TOT_DOC_COMMENT)); + LOG.debug("ID: {}, GROUP_ID: {}, REP_LEVEL: {}, STEP: {}, TITLE: {}, WRITE_DATE: {}", + new Object[] {mBoard.getId(), mBoard.getCategory(), mBoard.getRepLevel(), mBoard.getStep(), + mBoard.getTitle(), mBoard.getWriteDate()}); + + FileUtil.putInFiles(svrFilenames, mBoard); + + +// 연계등록시 자료를 수정(요구사항) 하지만 아래 내용때문에 상위기관에서 입력요령을 그대로 받아와서 셋아기때문에 그것을 지우고 위에 파일을 새로 넣음 +// for (Entry> entry : repDoc.getAttachments().entrySet()) +// mBoard.addAttachment(entry.getKey(), entry.getValue()); + + pm.makePersistent(mBoard); + FileUtil.getBoardAttachmentsFileNames(mBoard.getId(), req,true); + // succNum += new TableUpdate().insert(newDoc, repDoc); + LOG.debug("repDoc: {}", repDoc); + LOG.debug("rep tables: {}", repDoc.getTotTables()); + LOG.debug("rep items: {}", repDoc.getTotItems()); + LOG.debug("rep reports: {}", repDoc.getTotReports()); + TotTable masterTable = repDoc.getTotTables().iterator().next(); + TotTable totTable = new TotTable(newDoc); + totTable.setName(masterTable.getName()); + totTable.setNote(masterTable.getNote()); + totTable.setTypes(masterTable.getTypes()); + totTable.setType(masterTable.getType()); + pm.makePersistent(totTable); + + // succNum += tableRegist(newDocID, repDocID, docForm); + + for(Iterator itemIter = repDoc.getTotItems().iterator(); itemIter.hasNext(); ) { + TotItem sourceItem = itemIter.next(); + TotItem targetItem = new TotItem(newDoc); + + targetItem.setNum(sourceItem.getNum()); + targetItem.setTableNum(sourceItem.getTableNum()); + targetItem.setName(sourceItem.getName()); + targetItem.setDescription(sourceItem.getDescription()); + targetItem.setInputSize(sourceItem.getInputSize()); + targetItem.setExpr(sourceItem.getExpr()); + targetItem.setType(sourceItem.getType()); + targetItem.setColNum(sourceItem.getColNum()); + targetItem.setRowNum(sourceItem.getRowNum()); + + pm.makePersistent(targetItem); + } + + // 보고기관 입력 + // succNum += reportRegist(newDocID, newTableNum, deptIDs); + String[] stringDeptIDArray = userIDs.split(","); + + //v2 23.정수형 오버플로우 (배열인덱스)_CWE-190 : Update by YOUNGJUN,CHO + if (stringDeptIDArray.length > 0) { + String[] longDeptIDArray = new String[stringDeptIDArray.length]; + System.arraycopy(stringDeptIDArray, 0, longDeptIDArray, 0, stringDeptIDArray.length); + new ReportUserUpdate().deptUserInsert(pm, newDoc, totTable, longDeptIDArray); + + // 보고기관 업(집계된 문서의 상위 보고 기관) + totReport.setSlaveTotDoc(newDoc); + totReport.setUser(mUser); + totReport.setProcess(TotReportProcess.TEMP); + //20110803 LJH + totReport.setDept(mUser.getUpperDept(pm)); + totReport.setRepTotDoc(repDoc); + + pm.makePersistent(totReport); + + Set slaveReportList = newDoc.getTotReports(); + for (TotReport slaveReport : slaveReportList) + slaveReport.setRepTotDoc(repDoc); + pm.makePersistentAll(slaveReportList); + + LOG.debug("commit"); + om.postCommit(); // jeus 6 problem + tx.commit(); + out.println(ServletUtil.alert(MoumiConfig.getMessageBundle().getString("moumi.message.popup.newSubdoc"))); + // out.println(ServletUtil.redirect("/totsys/totper/mydocbox/prssbox/doc_list.jsp?docType=PRSS")); + out.println(ServletUtil.redirect("/totsys/repoper/mydocbox/tempbox/report_list.jsp?reportType=TEMP")); + } + //================================================ + + } catch (Exception e) { + out.println(ServletUtil.alert(MoumiConfig.getMessageBundle().getString("moumi.message.popup.notRegistReConfirm"))); + //v2. 9.크로스사이트 스크립트 (PrintWrier) : Update by KWON,HAN +// out.println(ServletUtil.redirect("/totsys/totper/mydocbox/regbox/sub_doc_regist.jsp?reportID=" + reportID)); + + // 수정 : 외부 입력값 필터링 + String callbackFunc = "/totsys/totper/mydocbox/regbox/sub_doc_regist.jsp?reportID=" + reportID; + String filtered_callbackFunc = callbackFunc.replaceAll("<","").replaceAll(">",""); + LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpSubDocRegist.doPost() filtered_callbackFunc={}, Not Test", filtered_callbackFunc); + out.println(ServletUtil.redirect(filtered_callbackFunc)); + //============================================================ + + e.printStackTrace(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } + } + + private TotDoc docRegist(PersistenceManager pm, String docName, ExecutionCode execCode, String handyName, + MUser mUser, Date stDate, Date edDate, AccessAuth accAuth, TotDoc.TotRange totRange, TotDoc repDoc, + MDept mDept, String acceptanceLimitStrategy, Long submitLimit, String prss, TotDocAppendType appendType) { + TotDoc newDoc = new TotDoc(docName, mDept, repDoc.getForm()); + newDoc.setUser(mUser); + newDoc.setExecutionCode(execCode); + newDoc.setHandyName(handyName); + newDoc.setStartDate(stDate); + newDoc.setEndDate(edDate); + newDoc.setAccessAuth(accAuth); + newDoc.setTotRange(totRange); + newDoc.setMasterTotDoc(repDoc); + newDoc.setDept(mUser.getUpperDept(pm)); + newDoc.setAppendType(appendType); + AcceptanceLimitStrategy acptLimitStrategy = AcceptanceLimitStrategy.create(acceptanceLimitStrategy, submitLimit); + acptLimitStrategy.setProcess(TotDocProcess.valueOf(prss)); + newDoc.setAcceptanceLimitStrategy(acptLimitStrategy); + pm.makePersistent(newDoc); + + return newDoc; + } +} diff --git a/src/kr/co/kihyun/beans/totsys/report/ReportUserUpdate.java b/src/kr/co/kihyun/beans/totsys/report/ReportUserUpdate.java new file mode 100644 index 0000000..bd05e29 --- /dev/null +++ b/src/kr/co/kihyun/beans/totsys/report/ReportUserUpdate.java @@ -0,0 +1,187 @@ +package kr.co.kihyun.beans.totsys.report; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import javax.jdo.PersistenceManager; + +import kr.co.kihyun.beans.entity.AssignType; +import kr.co.kihyun.beans.entity.MDept; +import kr.co.kihyun.beans.entity.MUser; +import kr.co.kihyun.beans.entity.MoumiEntity; +import kr.co.kihyun.beans.entity.TotDoc; +import kr.co.kihyun.beans.entity.TotReport; +import kr.co.kihyun.beans.entity.TotReportType; +import kr.co.kihyun.beans.entity.TotTable; +import kr.co.kihyun.beans.entity.util.QueryImpl; +import kr.co.kihyun.db.CommonDBManager; +import kr.co.kihyun.db.DBManager; +import kr.co.kihyun.lang.MString; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ReportUserUpdate extends DBManager { + private static final Logger LOG = LoggerFactory.getLogger(ReportUserUpdate.class); + + private ResultSet rs = null; + + public int deptUserUpdate(PersistenceManager pm, TotDoc totDoc, String[] insertDeptList) + throws Exception { + int succNum = 0; + succNum = allReportsDelTypeTrueConvert(pm, totDoc); + succNum = deptUserInsert(pm, totDoc, totDoc.getTotTables().iterator().next(), insertDeptList); + return succNum; + } + + // FIXME: remove me + public int deptUserInsert(PersistenceManager pm, TotDoc totDoc, TotTable totTable, String[] deptIDList) + throws Exception { + int succNum = 0; + + TotReport totReport = null; + List totReportDepts = null; + QueryImpl q = null; + try { + q = new QueryImpl(pm, TotReport.class); + q.setFilter("totDoc == tot_doc && assignType == AssignType.ASSIGN_TO_DEPT"); + //q.setFilter("assignType == AssignType.ASSIGN_TO_DEPT"); + q.declareImports("import kr.co.kihyun.beans.entity.*"); + q.declareParameters("TotDoc tot_doc"); + //v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 + totReportDepts = (List) q.execute(totDoc); + //=============== + int currReportDeptCount = totReportDepts.size(); + + Long id = null; + boolean isDeptAlreadyExist = false; + + LOG.debug("totReportDepts.size() - {}", totReportDepts.size()); + LOG.debug("deptIDList.length : {}", deptIDList.length); + LOG.debug("deptIDList : {}", deptIDList); + if (deptIDList != null) { + LOG.debug("deptIDList is not null"); + for (int i = 0; i < deptIDList.length; i++) { + LOG.debug("deptIDList[{}]: {}", i, deptIDList[i]); + if (deptIDList.length == 1 && MString.isNull(deptIDList[0])) + break; + + for (int j = 0; j < currReportDeptCount; j++) { + LOG.debug("deptIDList[" + i + "] - {} totReportDepts.get(" + j + ") - {}", deptIDList[i], totReportDepts.get(j).getDept(pm).getId()); + if (deptIDList[i].equals(totReportDepts.get(j).getDept(pm).getId())) { + isDeptAlreadyExist = true; + break; + } else { + isDeptAlreadyExist = false; + break; + } + } + + if (isDeptAlreadyExist) { + id = getID(totDoc.getId(), deptIDList[i], null); + totReport = pm.getObjectById(TotReport.class, id); + totReport.setDeleted("N"); + totReport.setType(TotReportType.REPORT); + totReport.setAssignType(AssignType.ASSIGN_TO_DEPT); + } else { + MUser user = pm.getObjectById(MUser.class, deptIDList[i]); + MDept dept = user.getUpperDept(pm); + totReport = new TotReport(totDoc, dept); + totReport.setId(getDocID_Sequence()); + totReport.setTableNum(totTable.getNum()); + totReport.setAssignType(AssignType.ASSIGN_TO_DEPT); + totReport.setUser(user); + } + pm.makePersistent(totReport); + succNum = 1; + } + } + return succNum; + } catch (Exception ex) { + LOG.debug("totReport :{}", totReport); + LOG.error( + "failed to regist report. del_type {}, recog {}, prss {}, id {}, appro {}, table_num {}, doc_id {}, type {}", + new Object[] { totReport.isDeleted(), totReport.getRecog(), totReport.getProcess(), + totReport.getId(), totReport.getAppro(), totReport.getTableNum(), totReport.getTotDoc(), + totReport.getType() }); + throw ex; + } + } + + private int allReportsDelTypeTrueConvert(PersistenceManager pm, TotDoc totDoc) { + try { + Set reports = totDoc.getTotReports(); + for (TotReport report : reports) + report.setDeleted("Y"); + // pm.makePersistentAll(reports.toArray()); + return 1; + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + + public Long getID(Long docID, String deptID, String userID) { + StringBuilder sql = new StringBuilder(120); + + Long id = null; + ArrayList paramList = new ArrayList(); + + try { + if (userID == null) { + sql.append("select id from ").append(MoumiEntity.getTableName(TotReport.class)) + .append(" where doc_id=? and dept_id=?"); + paramList.add(docID); + paramList.add(deptID); + } else { + sql.append("select id from ").append(MoumiEntity.getTableName(TotReport.class)) + .append(" where doc_id=? and dept_id=? and user_id=?"); + paramList.add(docID); + paramList.add(deptID); + paramList.add(userID); + } + + rs = execQuery(sql.toString(), paramList.toArray()); + if (rs.next()) { + id = rs.getLong(1); + } + return id; + } catch (SQLException sqlEx) { + LOG.error("\nSQLState - {}\nMySQL Error Code - {}\nmessage - {}\nsql - {}", + new Object[] { sqlEx.getSQLState(), sqlEx.getErrorCode(), sqlEx.getMessage(), sql }); + throw new RuntimeException(sqlEx); + } catch (Exception ex) { + throw new RuntimeException(ex); + } finally { + close(rs); + execClose(); + } + } + + private long getDocID_Sequence(){ + CommonDBManager cdb = new CommonDBManager(); + ResultSet rs = null; + long seqId = 0L; + try{ + rs = cdb.execQuery("SELECT SQ_MOUMI.NEXTVAL AS SEQ_MOUMI FROM DUAL"); + if(rs.next()){ + seqId = rs.getLong("SEQ_MOUMI"); + } + }catch(Exception e){ + e.printStackTrace(); + }finally{ + if(null != rs) + try { + rs.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + cdb.execClose(); + return seqId; + } + + } +} diff --git a/src/kr/co/kihyun/beans/user/HttpUserDocList.java b/src/kr/co/kihyun/beans/user/HttpUserDocList.java new file mode 100644 index 0000000..4619beb --- /dev/null +++ b/src/kr/co/kihyun/beans/user/HttpUserDocList.java @@ -0,0 +1,189 @@ +/*********************************************************************************** + * @@ Program Name : HttpUserShareList.java + * @@ Description : 사용자공유 목록 + * @@ Author : KWON,HAN + * @@ Create Date : 2014.08.25 + * @@ History : + ***********************************************************************************/ + +package kr.co.kihyun.beans.user; + +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import kr.co.kihyun.lang.Encoder; +import kr.co.kihyun.moumi.MoumiConfig; +import kr.co.kihyun.lang.MString; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +@WebServlet("/servlet/kr.co.kihyun.beans.user.HttpUserDocList") +public class HttpUserDocList extends HttpServlet { + + /** + * + */ + private static final long serialVersionUID = 1L; + private static final Logger LOG = LoggerFactory.getLogger(HttpUserDocList.class); + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException, NumberFormatException { + doPost(req, res); + return; + } + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException, NumberFormatException { + res.setContentType("text/html;charset=UTF-8"); + PrintWriter out = res.getWriter(); + + String idList = Encoder.toJava(req.getParameter("idList")); + String typeList = Encoder.toJava(req.getParameter("typeList")); + String nameList = Encoder.toJava(req.getParameter("nameList")); + String deptNameList = Encoder.toJava(req.getParameter("deptNameList")); + + if (!MString.isNull(idList)) { + //v2. 9.크로스사이트 스크립트 (PrintWrier) : Update by KWON,HAN +// out.println(getRightCheckList(idList, typeList, nameList, deptNameList)); + + // 수정 : 외부 입력값 필터링 + String filtered_idList = idList.replaceAll("<","").replaceAll(">","").replaceAll("&",""); + String filtered_typeList = typeList.replaceAll("<","").replaceAll(">","").replaceAll("&",""); + String filtered_nameList = nameList.replaceAll("<","").replaceAll(">","").replaceAll("&",""); + String filtered_deptNameList = deptNameList.replaceAll("<","").replaceAll(">","").replaceAll("&",""); + //LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpUserShareList.doPost() filtered_idList={}, Test Ok", filtered_idList); + //LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpUserShareList.doPost() filtered_typeList={}, Test Ok", filtered_typeList); + //LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpUserShareList.doPost() filtered_nameList={}, Test Ok", filtered_nameList); + //LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpUserShareList.doPost() filtered_deptNameList={}, Test Ok", filtered_deptNameList); + out.println(getRightCheckList(filtered_idList, filtered_typeList, filtered_nameList, filtered_deptNameList)); + //======================================== + } + } + + + private String getRightCheckList(String idList, String typeList, String nameList, String deptNameList) { + StringBuilder strbuf = new StringBuilder(8192); + + int count = 0; + String[] arrayId = idList.split(","); + String[] arrayType = typeList.split(","); + String[] arrayName = nameList.split(","); + String[] arrayDeptName = nameList.split(","); + + count = arrayId.length; + +// System.out.println("HttpUserShareList.getRightCheckList() ============"); +// for (int i = 0; i < arrayId.length; i++) { +// System.out.println("부서명 ="+arrayDeptName[i]+"/ 사용자명="+arrayName[i]+"(사용자ID="+arrayId[i]+")"); +// } +// System.out.println("=================================================="); + + strbuf.append("\n"); + /******************** HTML 생성 ********************/ + strbuf.append("\n"); + strbuf.append(" \n"); + strbuf.append("\n"); + strbuf.append(" \n"); + strbuf.append("
\n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append("
").append(MoumiConfig.getMessageBundle().getString("moumi.message.tot_report.submit")).append(MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.request")).append(MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.devision")).append("(").append(count).append(")
").append(MoumiConfig.getMessageBundle().getString("moumi.message.button_small.selectAll")).append(" | ").append(MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.all")).append(MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.cancel")).append("
\n"); + for (int i = 0; i < count; i++) { + strbuf.append(" "); + strbuf.append(""); + strbuf.append(i+1); + strbuf.append("."); + strbuf.append("  "); + strbuf.append(arrayDeptName[i]); //부서명 / 사용자명(사용자ID) + strbuf.append(" / "); + strbuf.append(arrayName[i]); + strbuf.append("("); + strbuf.append(arrayId[i]); + strbuf.append(")"); + strbuf.append("
\n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + strbuf.append(" \n"); + } + strbuf.append("
\n"); + strbuf.append("
\n"); + strbuf.append(" \n"); + strbuf.append("\n"); + + return strbuf.toString(); + } + +} diff --git a/webapps/totsys/common/web/report_dept/iframe/newTreeUser.jsp b/webapps/totsys/common/web/report_dept/iframe/newTreeUser.jsp new file mode 100644 index 0000000..feaab07 --- /dev/null +++ b/webapps/totsys/common/web/report_dept/iframe/newTreeUser.jsp @@ -0,0 +1,365 @@ +<%@ +page contentType="text/html; charset=UTF-8" + import="kr.co.kihyun.beans.user.HttpSSOLogin" + import="kr.co.kihyun.moumi.Moumi" + import="kr.co.kihyun.lang.MString" + import="kr.co.kihyun.lang.MLong" + import="kr.co.kihyun.beans.user.Dept" + import="kr.co.kihyun.beans.user.PartList" + %> + +<% + String rootId = request.getParameter("rootID"); + String userYN = "Y"; +%> + + + + + + 트리메뉴 + + + + + + + + + + + + + + + +
+ + + + + diff --git a/webapps/totsys/common/web/report_dept/iframe/new_section_list4.html b/webapps/totsys/common/web/report_dept/iframe/new_section_list4.html new file mode 100644 index 0000000..f246906 --- /dev/null +++ b/webapps/totsys/common/web/report_dept/iframe/new_section_list4.html @@ -0,0 +1,52 @@ + + + + + 섹션목록 + + + + + + + + + +
+ + 전체 + +
+ + + diff --git a/webapps/totsys/common/web/report_dept/new_user_list2.jsp b/webapps/totsys/common/web/report_dept/new_user_list2.jsp new file mode 100644 index 0000000..d583a42 --- /dev/null +++ b/webapps/totsys/common/web/report_dept/new_user_list2.jsp @@ -0,0 +1,521 @@ + + +<%@ page contentType="text/html; charset=UTF-8" + import="java.net.URLDecoder" + import="kr.co.kihyun.lang.MString" + import="kr.co.kihyun.lang.MInteger" + import="kr.co.kihyun.lang.Encoder" + import="kr.co.kihyun.beans.user.User" + import="kr.co.kihyun.moumi.Moumi"%> +<%@ include file="/totsys/common/inc/sec/secure.inc.jsp"%> +<% + String deptIDs = clearXSS(Encoder.toJava(MString.checkNull(request.getParameter("deptIDs"))), ""); + String deptTypes = clearXSS(Encoder.toJava(MString.checkNull(request.getParameter("deptTypes"))), ""); + //String deptNames = clearXSS(Encoder.toJava(MString.checkNull(request.getParameter("deptNames"))), ""); + String deptNames = clearXSS(URLDecoder.decode(MString.checkNull(request.getParameter("deptNames")), "UTF-8"),""); + String formName = clearXSS(Encoder.toJava(MString.checkNull(request.getParameter("formName"))), ""); + + int totCount = 0; + + String[] deptIDsList = deptIDs.split(","); + if(deptIDs == null || deptIDs == "") { + totCount = 0; + } else { + totCount = deptIDsList.length; + } + + //2014.11.07 : Add by KWON,HAN + int deptCount = MInteger.parseInt(request.getParameter("deptCount"), 0); + if(deptCount > 0) { + totCount = deptCount; + } + //++++++++++++++++++++++++++++ + +%> + + + + + 제출부서 선택 + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+
<%=Moumi.getMessageBundle().getString("moumi.message.button_large.submitDept")%>
+
+ +
+
+ 말머리 + <%=Moumi.getMessageBundle().getString("moumi.message.tot_doc.deptMap")%> +
+
+
말머리제출기관(부서)
+
+
+ + +
+
+
+ + +
+
+
+ + 추가 +
+
+ + 삭제 +
+
+
+ + +
+
+ + + + + + + + + +
검 색   찾기 다음 이전
+ +
+
+ 확인 + 취소 +
+
+ + diff --git a/webapps/totsys/repoper/mydocbox/tempbox/report_regist.jsp b/webapps/totsys/repoper/mydocbox/tempbox/report_regist.jsp index 0245ed4..8a84ad1 100644 --- a/webapps/totsys/repoper/mydocbox/tempbox/report_regist.jsp +++ b/webapps/totsys/repoper/mydocbox/tempbox/report_regist.jsp @@ -809,7 +809,7 @@
-
+ diff --git a/webapps/totsys/totper/mydocbox/regbox/sub_doc_user_regist.jsp b/webapps/totsys/totper/mydocbox/regbox/sub_doc_user_regist.jsp new file mode 100644 index 0000000..7a794e0 --- /dev/null +++ b/webapps/totsys/totper/mydocbox/regbox/sub_doc_user_regist.jsp @@ -0,0 +1,728 @@ + +<% /** + * **********************************************************@@ Program Name + * sub_doc_user_regist.jsp Description : 접수자료/연계등록 + * Author : jskim + * Date : 2022.12.14 + * History : 경북대학교 연계등록시 사용자단위 취합 + * @@*********************************************************** + */ +%> + +<%@ page contentType="text/html; charset=UTF-8" + import="java.util.Calendar" + import="java.net.URLEncoder" + import="java.util.Date" + import="java.text.SimpleDateFormat" + import="kr.co.kihyun.beans.user.HttpSSOLogin" + import="kr.co.kihyun.lang.Encoder" + import="kr.co.kihyun.lang.MString" + import="kr.co.kihyun.lang.MInteger" + import="kr.co.kihyun.lang.MLong" + import="kr.co.kihyun.moumi.MoumiConfig" + import="kr.co.kihyun.moumi.doc.MDoc" + import="kr.co.kihyun.lang.StringConverter" + import="kr.co.kihyun.text.html.TagFilter" + import="javax.jdo.PersistenceManager" + import="javax.jdo.Transaction" + import="kr.co.kihyun.beans.entity.util.*" + import="kr.co.kihyun.beans.entity.*" + import="kr.co.kihyun.beans.entity.TotDocType" + %> +<%@ page import="java.util.Map.Entry"%> +<%@ page import="java.util.List"%> + +<%@ include file="/totsys/common/inc/sec/secure.inc.jsp" %> + +<% PersistenceManager pm = new MPersistenceManager(PMF.get().getPersistenceManager()); + Transaction tx = pm.currentTransaction(); + try { + /** + * ******** session내의 userId ********* + */ + String usID = HttpSSOLogin.getLoginID(request); + String deptID = HttpSSOLogin.getDeptID(request); + + /** + * ********** Parameter values *********** + */ + Long reportID = MLong.parseLong(request.getParameter("reportID"), null); + String totType = clearXSS(request.getParameter("totType"), ""); + Long downDocID = MLong.parseLong(request.getParameter("downDocID"), null); + String boxName = MString.checkNull(request.getParameter("boxName")); + if (MString.isNull(totType) || totType.equals("")) { + totType = "1step"; + } + String tmpMagam = MString.checkNull(request.getParameter("tmpMagam")); + String strPage = clearXSS(request.getParameter("strPage"),""); + String findOption = clearXSS(request.getParameter("findOption"),null); + String findWord = clearXSS(Encoder.toJava(request.getParameter("findWord")),null); + + TotReport totReport = pm.getObjectById(TotReport.class, reportID); + + String usrFilenames = ""; + String svrFilenames = ""; + int fileCount = 0; + + tx.begin(); + + /** + * **** Doc list data get ***** + */ + TotDoc totDoc = totReport.getTotDoc(); + String docName = totDoc.getName(); + String docForm = totDoc.getForm(); + String regID = totDoc.getUser(pm).getId(); + Date startDate = totDoc.getStartDate(); + Date endDate = totDoc.getEndDate(); + AccessAuth accAuth = totDoc.getAccessAuth(); + TotDoc.TotRange totRange = totDoc.getTotRange(); + + Board board = totDoc.getBoard(); + for (Entry> entry : board.getAttachments().entrySet()) { + usrFilenames += entry.getKey() + ";"; + svrFilenames += entry.getKey() + ";"; + } + + fileCount = board.getAttachments().size(); + + tx.rollback(); + + /** + * ******** 시작, 종료 년, 월, 일 ********* + */ + String stDate = startDate == null ? "" : new SimpleDateFormat("yyyy-MM-dd").format(startDate); + String stTime = startDate == null ? "" : new SimpleDateFormat("HH").format(startDate); + String edDate = new SimpleDateFormat("yyyy-MM-dd").format(endDate); + String edTime = new SimpleDateFormat("HH").format(endDate); +%> + + + + + + <%=MoumiConfig.getTitle()%> + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+ + + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%--파일취합일경우 붙여넣기 영역 표시안함 --%> + + + + + +
+ + + + +
+ + + <%= MoumiConfig.getMessageBundle().getString(<%= MoumiConfig.getMessageBundle().getString("moumi.message.button.boardList")%>" /> + +
+
+ + + + + + + + + + +
글머리 + <%= MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.doc")%><%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.registrition")%> +   
+
+
+ + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.doc")%><%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.name")%> + + + + <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.executionCode")%> + + <%= HttpSSOLogin.getDeptName(request)%>_ + + (<%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.day")%>  + + + ) +
+ <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.dataInputDevision")%> + + + + + + <%=MoumiConfig.getMessageBundle().getString("> + + + + "> + + <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.input")%><%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.trick")%> + + + <%=MoumiConfig.getMessageBundle().getString(" /> + +
+ <%=MoumiConfig.getMessageBundle().getString("moumi.message.doc")%><%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.type.share")%> + + + + + +
+ <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.endMethod")%> + + + + + + + +   + + + <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.day")%>  + + + +   + + + <%=MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.time")%> + + + + + + + + + + + +
+
+
"> +
+ + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + + + + +
+ + <%= MoumiConfig.getMessageBundle().getString("/> + + + <%=MoumiConfig.getMessageBundle().getString(" /> + +
+
+
+
+ + <%@ include file="/totsys/common/inc/buttom/buttom.jsp"%> + + + + +<% + } catch (Exception ex) { + ex.printStackTrace(); + out.println(kr.co.kihyun.text.html.ServletUtil.getJavaScript("location='/servlet/kr.co.kihyun.beans.user.HttpSSOLogin?mode=logout';")); + } finally { + /** + * ******** session내의 doc info reset ********* + */ + MDoc.initSession(session); + if (tx.isActive()) { + tx.rollback(); + } + pm.close(); + } +%>