📄 modifydoc.java
字号:
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 + -