⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modifydoc.java

📁 办公自动化项目
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.t60.oa.doc.service;

import java.io.*;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;

import com.t60.oa.doc.struts.ModifyDocForm;
import com.t60.oa.po.*;
import hong.javanet.dao.HibernateUtil;
import org.apache.log4j.Logger;
import org.bsf.tools.guid.GUID;
import org.hibernate.*;
import org.hibernate.criterion.Restrictions;

public class ModifyDoc {
    public static Logger log = Logger.getLogger(ModifyDoc.class);
    private ModifyDocForm form;
    private int docEditionId; //版本编号
    private String affixFilePath; // 上传文件路径
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    private Timestamp d = new Timestamp(System.currentTimeMillis());
    private int empId;
    private List acclist; //取得附件集合
    private Accessories[] acc;
    private String docId;
    private DoucumentEdition docEdition;
    private String[] accessories;
    private FileInputStream[] fis;
    String str = ""; //附件编号
    /**
     * 保存修改文档和历史版本
     */
    public void save() {
        Session session = HibernateUtil.currentSession();

        //取得文档
              DoucumentFolder dou = (DoucumentFolder) HibernateUtil.currentSession().
                             load(DoucumentFolder.class, this.form.getDocId());
        //取得历史版本
        DoucumentEdition doucu = (DoucumentEdition) session.createCriteria(
                DoucumentEdition.class).add(Restrictions.eq(
                        "id", new Integer(this.getDocEditionId())))
                                 .uniqueResult();
            //doucu.setNewly(false);
            //doucu.set
            doucu.setDoucumentFolder(dou);
            doucu.setContext(form.getContext());
            doucu.setEditDate(new java.sql.Timestamp(System.
                   currentTimeMillis()));
            HibernateUtil.currentSession().update(doucu); //修改原来的一条为旧版本
//
//            DoucumentEdition doucuNew = new DoucumentEdition();
//            doucuNew.setContext(this.form.getContext());
//            doucuNew.setEditDate(new java.sql.Timestamp(System.
//                    currentTimeMillis()));
//            doucuNew.setNewly(true);
//            Employee emp = (Employee) HibernateUtil.currentSession().load(
//                    Employee.class,
//                    new Integer(this.getEmpId()));
//            doucuNew.setEdite(emp);
//            doucuNew.setDoucumentFolder(dou);
//
//            //调用方法生成新的附件
//            this.modifyDocEditionOfAcc(doucu);
//
//            if (this.str != null && !this.str.equals("")) {
//                doucuNew.setAccessories(this.str.substring(0,
//                        this.str.length() - 1)); //设置版本附件编号
//                this.findDocEditionAcc(doucuNew); //调用取得附件集合的饿方法
//            } else {
//                doucuNew.setAccessories("");
//            }
//            log.debug("新版本的附件ID为:--》" + this.str);
//            HibernateUtil.currentSession().save(doucuNew); //添加一条为新版本

            // this.findDocEditionById();//回显用,这里要取得最新版本

    }
    /**
     * 保存并签入
     */
    public void savefor() {
        Session session = HibernateUtil.currentSession();
        Query query = session.createQuery(
                "update DoucumentFolder set state=?,name=?,editeId=? where id=?");
        query.setBoolean(0, false);
        query.setString(1, this.form.getName());
        query.setInteger(2, this.getEmpId());
        query.setString(3, this.form.getDocId());
        query.setCacheable(true);
        query.executeUpdate();

//        //取得文档
//        DoucumentFolder dou = (DoucumentFolder) HibernateUtil.currentSession().
//                              load(DoucumentFolder.class, this.form.getId());
//        //取得历史版本
//        DoucumentEdition doucu = (DoucumentEdition) session.createCriteria(
//                DoucumentEdition.class).add(Restrictions.eq(
//                        "doucumentFolder.id", this.form.getId()))
//                                 .add(Restrictions.eq("newly", new Boolean(true)))
//                                 .uniqueResult();
//        doucu.setContext(this.form.getContext());
//        doucu.setEditDate(new java.sql.Timestamp(System.currentTimeMillis()));
//        Employee emp = (Employee) HibernateUtil.currentSession().load(Employee.class,
//                new Integer(this.getEmpId()));
//        doucu.setEdite(emp);
//        doucu.setDoucumentFolder(dou);
//        doucu.setNewly(true);
//        HibernateUtil.currentSession().update(doucu);
    }

    /**
     * 取得版本附件名称
     */
    public void showAcc() {
        DoucumentEdition de = new DoucumentEdition();
        de = (DoucumentEdition) HibernateUtil.currentSession().load(
                DoucumentEdition.class, new Integer(this.docEditionId));

        this.docEdition = de; //回显用
        Hibernate.initialize(docEdition.getDoucumentFolder().getName());
        Hibernate.initialize(docEdition.getContext());
        this.findDocEditionAcc(de); //调用取得附件集合的饿方法
    }

    /**
     * 取得附件集合
     */
    public void findDocEditionAcc(DoucumentEdition docEdition) {
        String str = null;
        if (docEdition.getAccessories() != null &&
            docEdition.getAccessories().trim().length() > 0) {
            str = docEdition.getAccessories();
        }
        if (str != null) {
            String[] accs = str.split(","); //根据','来取截取字符串用正则表达式,取得附件编号
            Criteria criAcc = HibernateUtil.currentSession().createCriteria(
                    Accessories.class);
            criAcc.add(Restrictions.in("id", accs));
            this.acclist = criAcc.list(); //取得附件集合
        }

    }

    /**
     * 删除文档版本附件
     * 做3件事:1:删除文档版本表中附件的编号,2,删除附件表中的附件,3,删除磁盘中的附件
     */
    public void delAcc() {
        DoucumentEdition de = (DoucumentEdition) HibernateUtil.currentSession().
                              load(DoucumentEdition.class,
                                   new Integer(this.docEditionId));
        String accsForm[] = form.getAcc(); //从表单取得要删除的附件编号
        //  de.setAccessories();
        String acc = de.getAccessories();
        String accss[] = acc.split(","); //从文档版本表中取得附件编号数组
        HashMap accMap = new HashMap();
        for (int i = 0; i < accss.length; i++) {
            accMap.put(accss[i], accss[i]); //把文档编号放进 map里面
        }
        log.debug("accMapS:-->" + accMap.size());
        for (int i = 0; i < accsForm.length; i++) {
            accMap.remove(accsForm[i]);
        }
        log.debug("accMapE:-->" + accMap.size());
        String accok = "";
        Iterator iter = accMap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry item = (Map.Entry) iter.next();
            accok = accok + item.getValue() + ",";
            log.debug("附件编号:--》" + item.getValue());
            log.debug("accok-->" + accok);
        }
        log.debug("文档版本附件编号:" + accok);
        if (accok == null || accok.equals("")) {
            de.setAccessories("");
        } else {
            de.setAccessories(accok.substring(0, accok.length() - 1)); //给表字段赋值,去掉最后一个”,“
        }
        HibernateUtil.currentSession().update(de); //修改文档版本附件Id

        //删除附件表数据
        String hqlAcc = "delete Accessories where id in (:accId)";
        Query query = HibernateUtil.currentSession().createQuery(hqlAcc);
        query.setParameterList("accId", accsForm);
        query.executeUpdate();
        //删除物理磁盘附件
        if (accsForm.length > 0) {
            for (int i = 0; i < accsForm.length; i++) {
                File file = new File(this.affixFilePath + accsForm[i]);
                file.delete();
                log.debug("删除物理磁盘文件成功!--->文件路径" + this.affixFilePath +
                          accsForm[i]);
            }
        }
    }

    /**
     * 查找文档最新版本
     */
    public void findDocEditionById() {
        Session session = HibernateUtil.currentSession();
        //DoucumentEdition douEdition=session.
        String hql =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -