package com.norteksoft.bs.signature.service;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.norteksoft.bs.signature.dao.SignatureDao;
import com.norteksoft.bs.signature.entity.Signature;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.PropUtils;
@Service
@Transactional
public class SignatureManager {
private Signature signature;
@Autowired
private SignatureDao signatureDao;
public Signature getSignatureById(Long id) {
return signatureDao.getSignatureById(id);
}
@Transactional(readOnly = false)
public void save(Signature signature) {
signatureDao.save(signature);
}
/**
* 删除签章图片
* @param signaturePicture
* @return
*/
public void deleteSignatureInfoPicture(Long id){
signatureDao.delete(id);
}
/**
* @throws Exception
* @throws FileNotFoundException
* 保存上传
*/
@Transactional(readOnly = false)
public void saveUploadPicture(Long signatureId) throws Exception {
String time = UUID.randomUUID().toString();
HttpServletRequest request=ServletActionContext.getRequest();
//把request强转,因为struts从新封装了request(Filedata是它的参数不能改变)
MultiPartRequestWrapper wrapper=(MultiPartRequestWrapper)request;
File filePath=wrapper.getFiles("Filedata")[0];
String fileName=request.getParameter("Filename");
String fileType = fileName.substring(fileName.lastIndexOf("."),fileName.length());
String uploadPath = PropUtils.getProp("application.properties","upload.file.path");
if(StringUtils.isEmpty(uploadPath)){
uploadPath = PropUtils.getProp("applicationContent.properties","upload.file.path");
}
String path=uploadPath+"/"+"Signature";
File file =new File(path);
if(!file.exists())file.mkdirs();
FileUtils.copyFile(filePath, new File(path+"/"+time+fileType));
signature = signatureDao.getSignatureById(signatureId);
String oldPath=signature.getPictureSrc();
if(oldPath!=null){
File old =new File(path+oldPath);
if(old.exists())old.delete();
}
signature.setPictureSrc("/"+time+fileType);
save(signature);
}
/**
* 获得所有签章信息
* @param meetingInformation
*/
public void getAllSignaturePicture(Page<Signature> page){
signatureDao.getAllSignaturePicture(page);
}
/**
* 验证创建用户是否重复
*/
public Boolean isExistUser(Long userId, Long signatureId){
List<Signature> signatures = signatureDao.getAllSignatureNoCurrentId(signatureId);
for(Signature signature : signatures){
if(userId.equals(signature.getUserId())){
return true;
}
}
return false;
}
/**
*删除签章
* @param signatureDeleteIds
*/
@Transactional(readOnly=false)
public void deleteSignatureByIds(String signatureDeleteIds){
String[] id = signatureDeleteIds.split(",");
List<String> signatureIds = new ArrayList<String>();
for(int i=0; i<=id.length-1; i++){
signatureIds.add(id[i]);
}
for(String sig:signatureIds){
signatureDao.delete(Long.valueOf(sig));
}
}
public Long getSignIdByUserName(String userName) {
if(signatureDao.getSignByUserName(userName)!=null){
return signatureDao.getSignByUserName(userName).getId();
}
return null;
}
}