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

📄 adddoucumentfolder.java

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

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

import com.t60.oa.doc.struts.AddDocForm;
import com.t60.oa.po.*;
import hong.javanet.dao.HibernateUtil;
import org.apache.log4j.Logger;
import org.hibernate.*;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

public class AddDoucumentFolder {
    private static Logger log = Logger.getLogger(AddDoucumentFolder.class);
    private AddDocForm form;
    private String folderId;//文件夹ID
    public  static String id;//文件Id
    private Timestamp d = new Timestamp(System.currentTimeMillis());
    private int empId;//员工ID
    private List acclist; //取得附件集合
    private int docEditionId; //版本编号
    private String affixFilePath;// 上传文件路径
    private static SimpleDateFormat sdf =
            new SimpleDateFormat("yyyy-MM-dd");
    //添加DoucumentFolder
    /**
     * 添加DoucumentFolder,但没签入
     */
    public void save() {
        DoucumentFolder dou = new DoucumentFolder();
        String str = (String) HibernateUtil.currentSession().createCriteria(
                DoucumentFolder.class)
                     .add(Restrictions.like("id", folderId + "____"))
                     .setProjection(Projections.max("id"))
                     .uniqueResult();

        if (str == null) {
            id = "0001";
        } else {
            id = str.substring(0, str.length() - 4);
            int strid = Integer.parseInt(str.substring(str.length() - 4,
                    str.length())) + 1;
            str = String.valueOf(strid);
            for (int i = str.length(); i < 4; i++) {
                str = "0" + str;
            }
            id = id + str;
            System.out.println(id);
        }
        dou.setId(id); //文件夹ID
        dou.setName(form.getName()); //文件夹名
        dou.setCreateDate(d); //加入时间
        Employee emp = (Employee) HibernateUtil.currentSession().load(Employee.class,
                new Integer(this.empId));
        dou.setEdite(emp);
        dou.setOwner(emp);
        dou.setTypeDocument(false);
        dou.setState(true);//未签入状态
        HibernateUtil.currentSession().save(dou);//添加文档

        Floadpurview fp=new Floadpurview();
        fp.setUser(emp);
        fp.setDoucumentFile(dou);
        fp.setType(new Byte("1"));
        HibernateUtil.currentSession().save(fp);//添加权限表

        this.saveDocEdition(); //调用方法,在文档版本中插入记录

    }

    //添加DocumentEdition
    public void saveDocEdition() {

        DoucumentEdition det = new DoucumentEdition();
        det.setContext(form.getContext());
        // det.setAccessories(accall.substring(0,accall.length()-1));//插入附件,去掉最后一个","
        det.setEditDate(new java.sql.Timestamp(d.getTime()));
        DoucumentFolder dfl = (DoucumentFolder) HibernateUtil.currentSession().
                              load(DoucumentFolder.class, id);
        log.debug("文件ID" + dfl.getId());
        det.setDoucumentFolder(dfl);
        Employee emp = (Employee) HibernateUtil.currentSession().load(Employee.class,
                new Integer(this.empId));
        det.setEdite(emp);
        det.setNewly(true);
        log.debug("文件名称:" + det.getContext());
        log.debug("文件名:" + det.getDoucumentFolder().getName());
        log.debug(det.getDoucumentFolder().getId());
        log.debug(det.getEditDate());
        log.debug(det.getEdite().getEmpName());
        HibernateUtil.currentSession().save(det);

        this.setDocEditionId(det.getId().intValue()); //取得版本编号Id
    }

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

    /**
     * 取得版本附件名称
     */
    public void showAcc() {
        DoucumentEdition de = new DoucumentEdition();
        de = (DoucumentEdition) HibernateUtil.currentSession().load(
                DoucumentEdition.class, new Integer(this.docEditionId));
        String acc = de.getAccessories();
        if (acc != null) {
            String[] accs = acc.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 AddDocForm getForm() {
        return form;
    }


    public String getId() {
        return id;
    }

    public int getEmpId() {
        return empId;
    }

    public List getAcclist() {
        return acclist;
    }

    public int getDocEditionId() {
        return docEditionId;
    }

    public String getAffixFilePath() {
        return affixFilePath;
    }

    public String getFolderId() {
        return folderId;
    }


    public void setForm(AddDocForm form) {
        this.form = form;
    }

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

    public void setEmpId(int empId) {
        this.empId = empId;
    }

    public void setAcclist(List acclist) {
        this.acclist = acclist;
    }

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

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

    public void setFolderId(String folderId) {
        this.folderId = folderId;
    }

}

⌨️ 快捷键说明

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