📄 docfind.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 + -