GZMachinesWeb/.svn/pristine/fe/fecf7b38e0f848eb5248d8845ed...

330 lines
11 KiB
Plaintext

package com.bonus.ma.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.bonus.core.BackstageApplication;
import com.bonus.core.DateTimeHelper;
import com.bonus.core.StringHelper;
import com.bonus.core.qrcode.QRCodeUtil;
import com.bonus.ma.beans.QRCodeBean;
import com.bonus.ma.service.QRCodeService;
import com.bonus.newInput.beans.InputDetailsBean;
import com.bonus.newInput.service.InputDetailsService;
import com.bonus.sys.AjaxRes;
import com.bonus.sys.BaseController;
import com.bonus.sys.GlobalConst;
import com.bonus.sys.Page;
import com.bonus.sys.UserShiroHelper;
import com.bonus.sys.beans.UserBean;
@Controller
@RequestMapping("/backstage/qrcode/")
public class QRCodeController extends BaseController<QRCodeBean> {
@Autowired
private QRCodeService service;
@Autowired
private InputDetailsService idService;
@RequestMapping("list")
public String index(Model model) {
return "/ma/qrcodelist";
}
@RequestMapping(value = "findByPage", method = RequestMethod.POST)
@ResponseBody
public AjaxRes findByPage(Page<QRCodeBean> page, QRCodeBean o) {
AjaxRes ar = getAjaxRes();
try {
UserBean user = UserShiroHelper.getRealCurrentUser();
String companyId = user.getCompanyId();
o.setOrgId(companyId);
Page<QRCodeBean> result = service.findByPage(o, page);
Map<String, Object> p = new HashMap<String, Object>();
p.put("list", result);
ar.setSucceed(p);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
// 二维码打印
@RequestMapping(value = "insert", method = RequestMethod.POST)
@ResponseBody
public AjaxRes insert(QRCodeBean o, HttpServletRequest request) {
String maModel = o.getMaModel();
String venderName = o.getVenderName();
String remark = o.getRemark();
String taskId = o.getTaskId();
String flag = request.getParameter("flag");// 区别新购和盘点二维码打印
AjaxRes ar = getAjaxRes();
try {
String genMonth = DateTimeHelper.getNowMonth();
o.setGenMonth(genMonth);
List<QRCodeBean> list = service.find(o);
QRCodeBean bean = new QRCodeBean();
int num = 0;
if (list != null && list.size() > 0) {
bean = list.get(0);
num = Integer.parseInt(bean.getCode().split("-")[1]);
}
for (int i = 1; i <= Float.parseFloat(o.getNums()); i++) {
genMonth = genMonth.replace("-", "");
String code = genMonth + "-" + String.format("%5d", num + i).replace(" ", "0");
produceQRCode(taskId,code, request, maModel, venderName, remark);
}
if ("1".equals(flag)) {
InputDetailsBean idBean = new InputDetailsBean();
idBean.setCheckStatus("6");
idBean.setTaskId(o.getTaskId());
idBean.setMaModelId(o.getMaModel());
idService.updateCheckStatus(idBean);
}
ar.setSucceedMsg(GlobalConst.GEN_SUCCEED);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.GEN_FAIL);
}
return ar;
}
@RequestMapping(value = "rfidinsert", method = RequestMethod.POST)
@ResponseBody
public String rfidinsert(QRCodeBean o, HttpServletRequest request) {
String res = "1";
String maModel = o.getMaModel();
String venderName = o.getVenderName();
String remark = o.getRemark();
String flag = request.getParameter("flag");
try {
String genMonth = DateTimeHelper.getNowMonth();
o.setGenMonth(genMonth);
List<QRCodeBean> list = service.find(o);
QRCodeBean bean = new QRCodeBean();
int num = 0;
if (list != null && list.size() > 0) {
bean = list.get(0);
num = Integer.parseInt(bean.getCode().split("-")[1]);
}
for (int i = 1; i <= Float.parseFloat(o.getNums()); i++) {
genMonth = genMonth.replace("-", "");
String code = genMonth + "-" + String.format("%5d", num + i).replace(" ", "0");
produceQRCode("",code, request, maModel, venderName, remark);
}
} catch (Exception e) {
logger.error(e.toString(), e);
}
return res;
}
// 缺失二维码生成
@RequestMapping(value = "produceQRCode", method = RequestMethod.GET)
@ResponseBody
public AjaxRes produceQRCode(HttpServletRequest request) {
AjaxRes ar = getAjaxRes();
try {
initList(request);
ar.setSucceedMsg(GlobalConst.GEN_SUCCEED);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.GEN_FAIL);
}
return ar;
}
public List<String> initList(HttpServletRequest request) {
List<String> list = new ArrayList<String>();
list.add("201808-00979");
for (String code : list) {
try {
produceQRCode2(code, request);
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
public void produceQRCode2(String code, HttpServletRequest request) throws Exception {
String url = "http://140.210.216.134:1935/gz_imw/backstage/machine/qrCodePage?qrcode=" + code;
//String url = "http://192.168.0.14:3980/GZMachinesWeb/backstage/machine/qrCodePage?qrcode=" + code;
//112.31.212.128:1935/gz_imw
// // 二维码的图片格式
String format = "jpg";
// // 生成二维码
String realPath = request.getSession().getServletContext().getRealPath("/images");
File files = new File(realPath);
if (!files.exists()) {
files.mkdirs();
}
QRCodeUtil.generateQRImage(url, realPath, code + ".jpg", format);
}
public void produceQRCode(String taskId,String code, HttpServletRequest request, String maModel,
String venderName, String remark) throws Exception {
String url = BackstageApplication.getUrl() + "backstage/machine/qrCodePage?qrcode=" + code;
// // 二维码的图片格式
String format = "jpg";
// // 生成二维码
String realPath = request.getSession().getServletContext().getRealPath("/images");
File files = new File(realPath);
if (!files.exists()) {
files.mkdirs();
}
QRCodeUtil.generateQRImage(url, realPath, code + ".jpg", format);
String qrUrl = code + ".jpg";
QRCodeBean bean = new QRCodeBean();
bean.setTaskId(taskId);
bean.setCode(code);
bean.setQrUrl(qrUrl);
bean.setMaModel(maModel);
bean.setVenderName(venderName);
bean.setRemark(remark);
String genDate = DateTimeHelper.getNowDate();
bean.setGenMonth(genDate);
bean.setMaModelId(maModel);
UserBean user = UserShiroHelper.getRealCurrentUser();
String companyId = user.getCompanyId();
bean.setOrgId(companyId);
service.insert(bean);
}
@RequestMapping(value = "downloadPhoto", method = RequestMethod.GET)
@ResponseBody
public void downloadPhoto(HttpServletRequest request, HttpServletResponse response, QRCodeBean o) {
String flag = request.getParameter("flag");
List<QRCodeBean> alist = new ArrayList<QRCodeBean>();
if ("1".equals(flag)) {
alist = service.findQRCodeByTaskType(o);
InputDetailsBean idBean = new InputDetailsBean();
idBean.setCheckStatus("7");
idBean.setTaskId(o.getTaskId());
idBean.setMaModelId(o.getMaModel());
idService.updateCheckStatus(idBean);
} else {
String chks = request.getParameter("chks");
if (StringUtils.isNotBlank(chks)) {
String[] chk = chks.split(",");
List<String> list = new ArrayList<String>();
for (String s : chk) {
try {
list.add(s);
} catch (Exception e) {
}
}
o.setChks(list);
}
alist = service.findQRCode(o);
}
download(request, response, alist, o, flag);
}
private void download(HttpServletRequest request, HttpServletResponse response, List<QRCodeBean> list,
QRCodeBean bean, String flag) {
try {
if(list.size() > 0){
}
String startTime = bean.getStartTime();
String endTime = bean.getEndTime();
String keyWord = bean.getKeyWord();
String downloadFilename = startTime;
if (startTime != null && !startTime.equals(endTime)) {
downloadFilename = startTime + "~" + endTime;
}
if (StringHelper.isNotEmpty(keyWord)) {
keyWord = "包含" + keyWord;
} else {
keyWord = "";
}
downloadFilename += keyWord + "二维码图片.zip";// 文件的名称
if ("1".equals(flag)) {
downloadFilename = list.get(0).getType0() + "-" + list.get(0).getModel() + "二维码图片.zip";// 文件的名称
}
downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 转换中文否则可能会产生乱码
response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
for (int i = 0; i < list.size(); i++) {
String fileName = list.get(i).getCode();
String realPath = request.getSession().getServletContext().getRealPath("/images");
String path = realPath + "/" + fileName + ".jpg";
logger.warn("path:" + path);
// 判断照片是否存在
File imageFile = new File(path);
if (!imageFile.exists()) {
continue;
}
zos.setLevel(0);
String typeName = list.get(i).getType0();
String modelName = list.get(i).getModel();
zos.putNextEntry(new ZipEntry("[" + typeName + "-" + modelName + "]" + fileName + ".jpg"));
InputStream fis = new FileInputStream(imageFile);
byte[] buffer = new byte[1024];
int r = 0;
while ((r = fis.read(buffer)) != -1) {
zos.write(buffer, 0, r);
}
fis.close();
}
zos.flush();
zos.close();
} catch (Exception e) {
logger.warn("download qcore image error:", e);
}
}
public String toMonth(String str) {
String year = str.substring(0, 4);
String month = str.substring(4, 6);
return year + "-" + month;
}
@RequestMapping(value = "findQrcodeByTaskId", method = RequestMethod.POST)
@ResponseBody
public String findQrcodeByTaskId(QRCodeBean o) {
String results = "";
try {
List<QRCodeBean> list = service.findQrcodeByTaskId(o);
for (QRCodeBean bean : list) {
results += bean.getMaModel() + ",";
results += bean.getCode() + ";";
}
if (StringHelper.isNotEmpty(results)) {
results = results.substring(0, results.length() - 1);
}
} catch (Exception e) {
logger.error(e.toString(), e);
}
return results;
}
}