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

📄 docfind.java

📁 办公自动化项目
💻 JAVA
字号:
package com.t60.oa.doc.service;

import java.io.FileInputStream;
import java.io.FileOutputStream;

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

public class DocFind {
    private static Logger log = Logger.getLogger(DocFind.class);
    private String id;
    private String name;
    private String context;
    private String[] accessories;
    private Accessories[] acc;
    private Integer editid;
    private boolean edit;
    private String affixFilePath; // 上传文件路径
    private int docEditionId; //版本编号
    private FileInputStream[] fis;

    /**
     * 找出最新的历史版本,并改为旧的历史版本,创建一个新的历史版本,在新的历史版本基础上重新创建附件并上传新的附件
     */
    public void find() {
        System.out.println(id);

        Session session = HibernateUtil.currentSession();
        //查找文档表
        DoucumentFolder dou = (DoucumentFolder) HibernateUtil.currentSession()
                              .createCriteria(DoucumentFolder.class)
                              .add(Restrictions.eq("id", id)).uniqueResult();
        this.name = dou.getName();
        System.out.println("文档名称:" + dou.getName());

        //判断是否签入,如果签入则重新创建新的历史版本
        if (dou.isState() == false) {
            Criteria criEdition = session.createCriteria(DoucumentEdition.class);
//        Criteria criDocu=criEdition.createCriteria("doucumentFolder");
            criEdition.add(Restrictions.eq("newly", new Boolean(true)));
            criEdition.add(Restrictions.eq("doucumentFolder.id", this.id));
//        criDocu.add(Restrictions.eq("id",this.id));
            DoucumentEdition det = (DoucumentEdition) criEdition.uniqueResult();

            if(det.getContext()!=null&&det.getContext().trim().length()>0)
            {
                System.out.println("文档内容:" + det.getContext());
                this.context = det.getContext();
            }
            String str = ""; //附件编号
            if (det.getAccessories() != null &&
                det.getAccessories().trim().length() > 0) {
                accessories = det.getAccessories().split(",");
                acc = new Accessories[accessories.length];
                fis = new FileInputStream[accessories.length];
                for (int i = 0; i < accessories.length; i++) {
                    acc[i] = (Accessories) HibernateUtil.currentSession()
                             .createCriteria(Accessories.class)
                             .add(Restrictions.eq("id", accessories[i])).
                             uniqueResult();

                    GUID guid = new GUID();
                    try {
                        log.debug("附件编号:" + acc[i].getId());
                        fis[i] = new FileInputStream(affixFilePath +
                                acc[i].getId());
                        //创建新的附件
                        FileOutputStream fos = new FileOutputStream(
                                affixFilePath + guid);
                        fos.write(fis[i].read());
                        fos.flush();
                        fos.close();
                        str = str + guid + ",";

                        Accessories access = new Accessories();
                        System.out.println("附件编号:" + guid.toString());
                        access.setId(guid.toString());
                        access.setCreateDate(new java.sql.Timestamp(System.
                                currentTimeMillis()));
                        access.setName(acc[i].getName());
                        access.setSize(acc[i].getSize());
                        HibernateUtil.currentSession().save(access);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                        log.debug("创建新文档的附件时失败!");
                    }
                    System.out.println("附件名称:" + acc[i].getName());
                }
            }

            //修改历史版本,把最新的版本改为旧的
            det.setNewly(false);
            HibernateUtil.currentSession().update(det);

            //判断是否创建文档人。可以编辑权限
            Employee emp = (Employee) HibernateUtil.currentSession().load(
                    Employee.class, this.getEditid());
            if (dou.getOwner().equals(emp)) {
                this.setEdit(true);
            } else {
                this.setEdit(false);
            }

            //创建新的历史版本
            System.out.println("getContext:" + this.getContext());
            System.out.println("dou:" + dou.getName());
            DoucumentEdition doucument = new DoucumentEdition();
            doucument.setContext(this.getContext());
            doucument.setDoucumentFolder(dou);
            doucument.setEditDate(new java.sql.Timestamp(System.
                    currentTimeMillis()));
            doucument.setNewly(true);
            doucument.setEdite(emp);
            if (str != null && str.trim().length() > 0) {
                log.debug("附件编号:" + str.substring(0, str.length() - 1));
                doucument.setAccessories(str.substring(0, str.length() - 1));
            }
            HibernateUtil.currentSession().save(doucument);
            this.docEditionId = doucument.getId().intValue();
            log.debug("版本编号:" + this.docEditionId);

            //查找最新历史版本的附件
            Criteria cridet = session.createCriteria(DoucumentEdition.class);
            Criteria cridf = cridet.createCriteria("doucumentFolder");
            cridet.add(Restrictions.eq("newly", new Boolean(true)));
            cridf.add(Restrictions.eq("id", this.id));
            DoucumentEdition ded = (DoucumentEdition) cridet.uniqueResult();
            if (ded.getAccessories() != null &&
                ded.getAccessories().trim().length() > 0) {
                accessories = ded.getAccessories().split(",");
                acc = new Accessories[accessories.length];
                for (int i = 0; i < accessories.length; i++) {
                    acc[i] = (Accessories) HibernateUtil.currentSession()
                             .createCriteria(Accessories.class)
                             .add(Restrictions.eq("id", accessories[i])).
                             uniqueResult();
                }
            }
        } else { //如果已经签出则不创建新的历史版本
//            Criteria criEdition = session.createCriteria(DoucumentEdition.class);
////        Criteria criDocu=criEdition.createCriteria("doucumentFolder");
//            criEdition.add(Restrictions.eq("newly", new Boolean(true)));
//            criEdition.add(Restrictions.eq("doucumentFolder.id", this.id));
////        criDocu.add(Restrictions.eq("id",this.id));
//            DoucumentEdition det = (DoucumentEdition) criEdition.uniqueResult();
//
//            System.out.println("文档内容:" + det.getContext());

            Criteria cridet = session.createCriteria(DoucumentEdition.class);
            Criteria cridf = cridet.createCriteria("doucumentFolder");
            cridet.add(Restrictions.eq("newly", new Boolean(true)));
            cridf.add(Restrictions.eq("id", this.id));
            DoucumentEdition ded = (DoucumentEdition) cridet.uniqueResult();
            if(ded.getContext()!=null&&ded.getContext().trim().length()>0)
            {
                this.context = ded.getContext();
            }
            if (ded.getAccessories() != null &&
                ded.getAccessories().trim().length() > 0) {
                accessories = ded.getAccessories().split(",");
                acc = new Accessories[accessories.length];
                for (int i = 0; i < accessories.length; i++) {
                    acc[i] = (Accessories) HibernateUtil.currentSession()
                             .createCriteria(Accessories.class)
                             .add(Restrictions.eq("id", accessories[i])).
                             uniqueResult();
                }
            }

            //判断是否创建文档人。可以编辑权限
            Employee emp = (Employee) HibernateUtil.currentSession().load(
                    Employee.class, this.getEditid());
            if (dou.getOwner().equals(emp)) {
                this.setEdit(true);
            } else {
                this.setEdit(false);
            }

        }
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getContext() {
        return context;
    }

    public Accessories[] getAcc() {
        return acc;
    }

    public String[] getAccessories() {
        return accessories;
    }

    public Integer getEditid() {
        return editid;
    }

    public boolean isEdit() {
        return edit;
    }

    public String getAffixFilePath() {
        return affixFilePath;
    }

    public int getDocEditionId() {
        return docEditionId;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setContext(String context) {
        this.context = context;
    }

    public void setAcc(Accessories[] acc) {
        this.acc = acc;
    }

    public void setAccessories(String[] accessories) {
        this.accessories = accessories;
    }

    public void setEditid(Integer editid) {
        this.editid = editid;
    }

    public void setEdit(boolean edit) {
        this.edit = edit;
    }

    public void setAffixFilePath(String affixFilePath) {
        this.affixFilePath = affixFilePath;
    }

    public void setDocEditionId(int docEditionId) {
        this.docEditionId = docEditionId;
    }

}

⌨️ 快捷键说明

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