GZMachinesWeb/.svn/pristine/1b/1b995fee5ebbcbd53d9b3076407...

515 lines
14 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.bonus.newInput.service;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bonus.core.DateTimeHelper;
import com.bonus.ma.beans.MachineBean;
import com.bonus.ma.beans.MachineTypeBean;
import com.bonus.ma.dao.MachineDao;
import com.bonus.ma.dao.MachineTypeDao;
import com.bonus.ma.service.MachineVersionService;
import com.bonus.newInput.beans.InputDetailsBean;
import com.bonus.newInput.beans.NewInputBean;
import com.bonus.newInput.beans.NewInputCheckBean;
import com.bonus.newInput.dao.InputDetailsDao;
import com.bonus.newInput.dao.NewInputCheckDao;
import com.bonus.newInput.dao.NewInputDao;
import com.bonus.sys.BaseServiceImp;
import com.bonus.sys.StringHelper;
import com.bonus.sys.UserShiroHelper;
import com.bonus.wf.beans.TaskRecordBean;
import com.bonus.wf.dao.TaskRecordDao;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
@Service("inputDetails")
public class InputDetailsServiceImp extends BaseServiceImp<InputDetailsBean> implements InputDetailsService {
@Autowired
private InputDetailsDao dao;
@Autowired
private NewInputDao nDao;
@Autowired
private TaskRecordDao trDao;
@Autowired
private NewInputCheckDao ncDao;
@Autowired
private MachineDao mDao;
@Autowired
private MachineTypeDao mtDao;
@Autowired
private MachineVersionService mvService;
/***
* 添加新购明细 1.机具表 2.新购明细表 3.明细和机具关系表
*/
@Override
public int insertBean(InputDetailsBean o) {
o.setCheckStatus("1");
boolean isExist = devIsExist(o);
if (isExist) {
dao.insertBean(o);
updateStasus(o);
addMachineDetails(o);
return 1;
} else {
return 0;
}
}
/**
* 判断是否已存在
*/
private boolean devIsExist(InputDetailsBean o){
List<InputDetailsBean> list = dao.find(o);
if (list != null && list.size() > 0) {
return false;
}else{
return true;
}
}
/**
* 插入机具信息表 判断是否计数
*/
private void addMachineDetails(InputDetailsBean o) {
String nums = o.getArrivalNum();
int num = Integer.parseInt(nums);
String typeId = o.getMaModelId();
MachineBean bean = new MachineBean();
bean.setType(typeId);
bean.setBatchStatus("1");//待通知人员
bean.setVerderId(o.getMaVenderId());
bean.setBuyTime(DateTimeHelper.getNowTime());
boolean tf = isCount(o);
if (!tf) {
for (int i = 0; i < num; i++) {
String deviceType = "";
deviceType = mvService.getDeviceType(typeId);
bean.setDeviceType(deviceType);
mDao.insert(bean);
o.setMaId(bean.getId());
dao.insertMaNewInput(o);
}
} else {
return;
}
}
/**
* 查询机具是否计数
*
* @param o
* @return
*/
public boolean isCount(InputDetailsBean o) {
MachineTypeBean bean = new MachineTypeBean();
bean.setMaModelId(o.getMaModelId());
MachineTypeBean mtBean = mtDao.findByModelId(bean);
if ("1".equals(mtBean.getIsCount())) {
return true;
}
return false;
}
/**
* 指定人员
*/
@Override
public int updatePerson(InputDetailsBean o) {
dao.update(o);
boolean tf = isAppoint(o);
if (!tf) {
o.setCheckStatus("2");
dao.updateCheckStatusById(o);
}
// 修改机具状态
List<InputDetailsBean> list = dao.find(o);
for (InputDetailsBean bean : list) {
MachineBean mBean = new MachineBean();
mBean.setId(bean.getId());
mBean.setBatchStatus("2");//待检验
mDao.update(mBean);
}
return 1;
}
/**
* 是否指定
*
* @param o
* @return
*/
private boolean isAppoint(InputDetailsBean o) {
InputDetailsBean bean = dao.findPersonInfo(o);
if (StringHelper.isEmpty(bean.getChecker()) || StringHelper.isEmpty(bean.getCustomerRep())) {
return true;
}
return false;
}
/***
* 修改新购任务状态
*
* @param o
*/
public void updateStasus(InputDetailsBean o) {
NewInputBean bean = new NewInputBean();
bean.setTaskId(o.getTaskId());
bean.setTaskStatus("2");
nDao.updateStatus(bean);
}
/**
* 1.修改状态 2.建立检验任务 3.判断该验收任务是否结束()
*/
@Override
public int isSure(InputDetailsBean o) {
o.setCheckStatus("3");
dao.isSure(o);
buildCheckTask(o);
return 1;
}
/**
* 1.判断当前新购任务下是否已有检验任务 2.没有则去建立检验任务并添加明细,有只添加明细
*
* @param o
*/
public void buildCheckTask(InputDetailsBean o) {
TaskRecordBean bean = new TaskRecordBean();
bean.setTaskId(o.getTaskId());
bean.setDefinitionId("14");
List<TaskRecordBean> list = trDao.findTaskInfo(bean);
if (list != null && list.size() > 0) {
o.setTaskId(list.get(0).getTaskId());
addCheckDetails(o);
} else {
NewInputBean nBean = new NewInputBean();
nBean.setId(o.getTaskId());
NewInputBean niBean = nDao.findTaskById(nBean);
o.setTaskId(niBean.getTaskId());
addCheckTask(o);
}
}
/**
* 创建检验任务
*
* @param o
*/
public void addCheckTask(InputDetailsBean o) {
String userId = UserShiroHelper.getRealCurrentUser().getId() + "";
TaskRecordBean bean = new TaskRecordBean();
bean.setOperationTime(DateTimeHelper.getNowTime());
bean.setOperationUserId(userId);
bean.setDefinitionId("14");
bean.setProcessId("7");
bean.setIsFinish("0");
bean.setTaskId(o.getTaskId());
trDao.insert(bean);
o.setTaskId(bean.getId());
addCheckDetails(o);
}
/**
* 添加检验明细
*
* @param o
*/
public void addCheckDetails(InputDetailsBean o) {
NewInputCheckBean bean = new NewInputCheckBean();
bean.setTaskId(o.getTaskId());
bean.setCheckNum(o.getCheckNum());
bean.setCheckTime(DateTimeHelper.getNowTime());
bean.setMaModelId(o.getMaModelId());
ncDao.insert(bean);
}
@Override
public void updateCheckStatus(InputDetailsBean idBean) {
dao.updateCheckStatus(idBean);
}
/**
* 上传机具图片
*/
@Override
public Object uploadMachines(HttpServletRequest request, InputDetailsBean o) {
String fileName = "";
// 文件上传采用cos组件上传可更换为commons-fileupload上传文件上传后保存在upload文件夹
// 获取文件上传路径
String saveDirectory = request.getSession().getServletContext().getRealPath("/machinesImg");
File file = new File(saveDirectory);
if (!file.exists()) {
file.mkdirs();
}
// 打印上传路径信息
System.out.println("文件保存路径=" + saveDirectory);
// 每个文件最大50m
int maxPostSize = 200 * 1024 * 1024;
// 采用cos缺省的命名策略重名后加1,2,3...如果不加dfp重名将覆盖
// DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy();
// response的编码为"UTF-8",同时采用缺省的文件名冲突解决策略,实现上传,如果不加dfp重名将覆盖
// MultipartRequest multi = new MultipartRequest(request, saveDirectory,
// maxPostSize,"UTF-8",dfp);
MultipartRequest multi = null;
DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy();
// long tiem =(new java.util.Date()).getTime();
try {
multi = new MultipartRequest(request, saveDirectory, maxPostSize, "UTF-8", dfp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 输出反馈信息
Enumeration<?> files = multi.getFileNames();
while (files.hasMoreElements()) {
String name = (String) files.nextElement();
File f = multi.getFile(name);
System.err.println("f=" + f);
if (f != null) {
String maTypeId = multi.getParameter("maTypeId");
String taskId = multi.getParameter("taskId");
String newName = DateTimeHelper.getNowTimeFomart();
fileName = multi.getFilesystemName(name);
int begin = fileName.indexOf(".");
int last = fileName.length();
String suffix = fileName.substring(begin, last);
// 更换文件名称
if (!fileName.equals(newName)) {// 新的文件名和以前文件名不同时,才有必要进行重命名
File oldfile = new File(saveDirectory + "/" + fileName);
File newfile = new File(saveDirectory + "/" + newName + suffix);
if (!oldfile.exists()) {
logger.error("需要重命名的文件不存在");
}
if (newfile.exists()) {// 若在该目录下已经有一个文件和新文件名相同,则不允许重命名
logger.error(newName + "已经存在!");
} else {
oldfile.renameTo(newfile);
o.setMaModelId(maTypeId);
o.setTaskId(taskId);
o.setPicUrl(newName + suffix);
dao.updatePhotoUrl(o);
MachineBean bean = new MachineBean();
bean.setType(maTypeId);
bean.setPicUrl(newName + suffix);
mDao.insertMachinesUrl(bean);
}
} else {
logger.error("新文件名和旧文件名相同...");
}
}
return null;
}
return null;
}
/**
* 上传验收图片
*/
@Override
public InputDetailsBean uploadAccept(HttpServletRequest request, InputDetailsBean o) {
String fileName = "";
// 文件上传采用cos组件上传可更换为commons-fileupload上传文件上传后保存在upload文件夹
// 获取文件上传路径
String saveDirectory = request.getSession().getServletContext().getRealPath("/acceptImg");
File file = new File(saveDirectory);
if (!file.exists()) {
file.mkdirs();
}
// 打印上传路径信息
System.out.println("文件保存路径=" + saveDirectory);
// 每个文件最大50m
int maxPostSize = 200 * 1024 * 1024;
// 采用cos缺省的命名策略重名后加1,2,3...如果不加dfp重名将覆盖
// DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy();
// response的编码为"UTF-8",同时采用缺省的文件名冲突解决策略,实现上传,如果不加dfp重名将覆盖
// MultipartRequest multi = new MultipartRequest(request, saveDirectory,
// maxPostSize,"UTF-8",dfp);
MultipartRequest multi = null;
DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy();
// long tiem =(new java.util.Date()).getTime();
try {
multi = new MultipartRequest(request, saveDirectory, maxPostSize, "UTF-8", dfp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 输出反馈信息
Enumeration<?> files = multi.getFileNames();
while (files.hasMoreElements()) {
String name = (String) files.nextElement();
File f = multi.getFile(name);
System.err.println("f=" + f);
if (f != null) {
String batchId = multi.getParameter("maTypeId");
String taskId = multi.getParameter("taskId");
String newName = DateTimeHelper.getNowTimeFomart();
fileName = multi.getFilesystemName(name);
int begin = fileName.indexOf(".");
int last = fileName.length();
String suffix = fileName.substring(begin, last);
// 更换文件名称
if (!fileName.equals(newName)) {// 新的文件名和以前文件名不同时,才有必要进行重命名
File oldfile = new File(saveDirectory + "/" + fileName);
File newfile = new File(saveDirectory + "/" + newName + suffix);
if (!oldfile.exists()) {
logger.error("需要重命名的文件不存在");
}
if (newfile.exists()) {// 若在该目录下已经有一个文件和新文件名相同,则不允许重命名
logger.error(newName + "已经存在!");
} else {
oldfile.renameTo(newfile);
o.setMaModelId(batchId);
o.setTaskId(taskId);
o.setCheckUrl(newName + suffix);
dao.updateCheckUrl(o);
//上传完图片建立新购二维码打印任务
}
} else {
logger.error("新文件名和旧文件名相同...");
}
}
return o;
}
return o;
}
/**
* 新购检验
*/
@Override
public int check(InputDetailsBean o) {
dao.updateCheckNum(o);
o.setCheckStatus("3");
o.setCheckTime(DateTimeHelper.getNowTime());
dao.isSure(o);
boolean tf = isChecked(o);
if (tf) {
NewInputBean bean = new NewInputBean();
bean.setTaskStatus("3");
bean.setTaskId(o.getTaskId());
nDao.updateStatus(bean);
}
// 修改机具状态
List<InputDetailsBean> list = dao.find(o);
for (InputDetailsBean bean : list) {
MachineBean mBean = new MachineBean();
mBean.setId(bean.getId());
mBean.setBatchStatus("3");
mDao.update(mBean);
}
return 1;
}
/***
* 判断是否全部检验完成
* @param o
* @return
*/
public boolean isChecked(InputDetailsBean o) {
List<InputDetailsBean> list = dao.findByTaskId(o);
for (InputDetailsBean idBean : list) {
if ("3".equals(idBean.getCheckStatus())) {
continue;
}else {
return false;
}
}
return true;
}
/**
* 上传验收照片
*/
@Override
public void checkUpload(InputDetailsBean bean) {
bean.setCheckStatus("4");
dao.isSure(bean);
boolean tf = isUpload(bean);
if (tf) {
NewInputBean nBean = new NewInputBean();
nBean.setTaskStatus("4");
nBean.setTaskId(bean.getTaskId());
nDao.updateStatus(nBean);
}
}
/***
* 判断是否全部上传验收图片
* @param o
* @return
*/
public boolean isUpload(InputDetailsBean o) {
List<InputDetailsBean> list = dao.findByTaskId(o);
for (InputDetailsBean idBean : list) {
if ("4".equals(idBean.getCheckStatus())) {
continue;
}else {
return false;
}
}
return true;
}
@Override
public String findPicUrl(InputDetailsBean bean) {
return dao.findPicUrl(bean);
}
@Override
public int updateInvoiceUrl(InputDetailsBean bean) {
// TODO Auto-generated method stub
return dao.updateInvoiceUrl(bean);
}
@Override
public List<InputDetailsBean> findInvoiceUrl(InputDetailsBean o) {
// TODO Auto-generated method stub
return dao.findInvoiceUrl(o);
}
@Override
public List<InputDetailsBean> findManchinesUrl(InputDetailsBean o) {
// TODO Auto-generated method stub
return dao.findManchinesUrl(o);
}
@Override
public List<InputDetailsBean> findcheckUrl(InputDetailsBean o) {
// TODO Auto-generated method stub
return dao.findcheckUrl(o);
}
@Override
public int updatePhotoUrl(InputDetailsBean o) {
// TODO Auto-generated method stub
return dao.updatePhotoUrl(o);
}
@Override
public int updateCheckUrl(InputDetailsBean o) {
// TODO Auto-generated method stub
return dao.updateCheckUrl(o);
}
}