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