GZMachinesWeb/.svn/pristine/f1/f10d26c7c7667ed6568377def84...

612 lines
19 KiB
Plaintext
Raw Normal View History

2025-06-20 17:47:53 +08:00
package com.bonus.ma.controller;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.StringHelper;
import com.bonus.exp.POIOutputHelper;
import com.bonus.ma.beans.MaStockBean;
import com.bonus.ma.service.MaStockService;
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;
@Controller
@RequestMapping("/backstage/maStock/")
public class MaStockController extends BaseController<MaStockBean> {
@Autowired
private MaStockService service;
@RequestMapping("list")
public String index(Model model) {
return "/ma/maStock";
}
@RequestMapping("details")
public String stock(Model model) {
return "/ma/maStockDetails";
}
@RequestMapping("stockLoss")
public String stockLoss(Model model) {
return "/ma/maStockLoss";
}
@RequestMapping("stockDetails")
public String stockDetails(Model model) {
return "/ma/ma_stock_details";
}
@RequestMapping(value = "findByPage", method = RequestMethod.POST)
@ResponseBody
public AjaxRes findByPage(Page<MaStockBean> page, MaStockBean o) {
AjaxRes ar = getAjaxRes();
try {
String companyId = UserShiroHelper.getRealCurrentUser().getCompanyId();
o.setCompanyId(companyId);
List<MaStockBean> results = service.findByPage(o);
float stockNum = 0;
float leaseNum = 0;
float scrapNum = 0;
float repairNum = 0;//再修数量
float repairedNum = 0;//修饰后的数量
float lossNum = 0;
float stockNums = 0;
float stockMoney = 0;
for (MaStockBean bean : results) {
BigDecimal bd1 = new BigDecimal(stockNum);
BigDecimal bd2 = new BigDecimal(StringHelper.getFloat(bean.getStockNum()));
BigDecimal bd3 = new BigDecimal(leaseNum);
BigDecimal bd4 = new BigDecimal(StringHelper.getFloat(bean.getLeaseNum()));
BigDecimal bd5 = new BigDecimal(scrapNum);
BigDecimal bd6 = new BigDecimal(StringHelper.getFloat(bean.getScrapNum()));
BigDecimal bd7 = new BigDecimal(repairNum);
BigDecimal bd8 = new BigDecimal(StringHelper.getFloat(bean.getRepairNum()));
BigDecimal bd15 = new BigDecimal(repairedNum);
BigDecimal bd16 = new BigDecimal(StringHelper.getFloat(bean.getRepairedNum()));
BigDecimal bd9 = new BigDecimal(lossNum);
BigDecimal bd10 = new BigDecimal(StringHelper.getFloat(bean.getLossNum()));
BigDecimal bd11 = new BigDecimal(stockNums);
BigDecimal bd12 = new BigDecimal(StringHelper.getFloat(bean.getStockNums()));
BigDecimal bd13 = new BigDecimal(stockMoney);
BigDecimal bd14 = new BigDecimal(StringHelper.getFloat(bean.getStockMoney()));
stockNum = bd1.add(bd2).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
leaseNum = bd3.add(bd4).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
scrapNum = bd5.add(bd6).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
repairNum = bd7.add(bd8).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
repairedNum = bd15.add(bd16).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
lossNum = bd9.add(bd10).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
stockNums = bd11.add(bd12).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
stockMoney = bd13.add(bd14).setScale(3,BigDecimal.ROUND_HALF_UP).floatValue();
}
MaStockBean maBean = new MaStockBean(stockNum + "", leaseNum + "", scrapNum + "", repairNum + "",repairedNum + "",
lossNum + "", stockNums + "", stockMoney + "");
Map<String, Object> p = new HashMap<String, Object>();
results.add(maBean);
p.put("list", results);
ar.setSucceed(p);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
@RequestMapping(value = "findByPageTwo", method = RequestMethod.POST)
@ResponseBody
public AjaxRes findByPageTwo(Page<MaStockBean> page, MaStockBean o) {
AjaxRes ar = getAjaxRes();
try {
Page<MaStockBean> results = service.findByPageTwo(o, page);
Map<String, Object> p = new HashMap<String, Object>();
p.put("list", results);
ar.setSucceed(p);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
@RequestMapping(value = "findStockDetails", method = RequestMethod.POST)
@ResponseBody
public AjaxRes stockDetails(Page<MaStockBean> page, MaStockBean o) {
AjaxRes ar = getAjaxRes();
try {
Page<MaStockBean> results = service.findStockDetails(o, page);
Map<String, Object> p = new HashMap<String, Object>();
p.put("list", results);
ar.setSucceed(p);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
@RequestMapping(value = "findStockLoss", method = RequestMethod.POST)
@ResponseBody
public AjaxRes findStockLoss(Page<MaStockBean> page, MaStockBean o) {
AjaxRes ar = getAjaxRes();
try {
Page<MaStockBean> results = service.findStockLoss(o, page);
Map<String, Object> p = new HashMap<String, Object>();
p.put("list", results);
ar.setSucceed(p);
} catch (Exception e) {
logger.error(e.toString(), e);
ar.setFailMsg(GlobalConst.DATA_FAIL);
}
return ar;
}
@RequestMapping("export")
// @RequestMapping(value = "export", method = RequestMethod.GET)
public void export(Page<MaStockBean> page, HttpServletRequest request, HttpServletResponse response,
MaStockBean o) {
try {
page.setPageSize(20000);
Page<MaStockBean> results = service.findByPage(o, page);
List<MaStockBean> list = results.getResults();
float stockNum = 0;
float leaseNum = 0;
float scrapNum = 0;
float repairNum = 0;
float repairedNum = 0;
float lossNum = 0;
float stockNums = 0;
float stockMoney = 0;
for (MaStockBean bean : list) {
stockNum += StringHelper.getFloat(bean.getStockNum());
leaseNum += StringHelper.getFloat(bean.getLeaseNum());
scrapNum += StringHelper.getFloat(bean.getScrapNum());
repairNum += StringHelper.getFloat(bean.getRepairNum());
repairedNum += StringHelper.getFloat(bean.getRepairedNum());
lossNum += StringHelper.getFloat(bean.getLossNum());
stockNums += StringHelper.getFloat(bean.getStockNums());
stockMoney += StringHelper.getFloat(bean.getStockMoney());
}
MaStockBean maBean = new MaStockBean(stockNum + "", leaseNum + "", scrapNum + "", repairNum + "", repairedNum + "",
lossNum + "", stockNums + "", stockMoney + "");
maBean.setDeviceModel("合计");
list.add(0, maBean);
expOutExcel(response, list, "机具仓储状态表");
} catch (Exception e) {
logger.error(e.toString(), e);
}
}
private void expOutExcel(HttpServletResponse response, List<MaStockBean> list, String filename) throws Exception {
if (list != null) {
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
int size = list.size();
for (int i = 0; i < size; i++) {
MaStockBean bean = list.get(i);
Map<String, Object> maps = outMaStockBeanToMap(i, bean);
results.add(maps);
}
List<String> headers = reportHeader();
HSSFWorkbook workbook = POIOutputHelper.excel(results, headers, filename);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}
private Map<String, Object> outMaStockBeanToMap(int i, MaStockBean o) {
Map<String, Object> maps = new LinkedHashMap<String, Object>();
maps.put("id", i + 1);
maps.put("deviceName", o.getDeviceName());
maps.put("deviceModel", o.getDeviceModel());
maps.put("stockNum", o.getStockNum());
maps.put("leaseNum", o.getLeaseNum());
maps.put("repairNum", o.getRepairNum());
maps.put("repairedNum", o.getRepairedNum());
maps.put("scrapNum", o.getScrapNum());
// maps.put("lossNum", o.getLossNum());
maps.put("stockNums", o.getStockNums());
// maps.put("stockMoney", o.getStockMoney());
String isCount = o.getIsCount();
if ("1".equals(isCount)) {
isCount = "是";
} else if ("0".equals(isCount)) {
isCount = "否";
} else {
isCount = "";
}
maps.put("isCount", isCount);
return maps;
}
private List<String> reportHeader() {
ArrayList<String> list = new ArrayList<String>();
list.add("序号");
list.add("机具名称");
list.add("规格型号");
list.add("库存数量");
list.add("在用数量");
list.add("在修数量");
list.add("待入库数量");
list.add("报废数量");
// list.add("丢失数量");
list.add("总保有量");
// list.add("总保有量资产(万元)");
list.add("是否计数");
return list;
}
@RequestMapping(value = "exportStockDetails", method = RequestMethod.POST)
public void exportStockDetails(Page<MaStockBean> page, HttpServletRequest request, HttpServletResponse response,
MaStockBean o) {
try {
page.setPageSize(100000);
Page<MaStockBean> results = service.findStockDetails(o, page);
List<MaStockBean> list = results.getResults();
if (list != null) {
for (MaStockBean bean : list) {
String status = bean.getStatus();
switch (status) {
case "1":
bean.setStatus("待通知");
break;
case "2":
bean.setStatus("待检验");
break;
case "3":
bean.setStatus("待打印");
break;
case "4":
bean.setStatus("待入库");
break;
case "5":
bean.setStatus("在库");
break;
case "6":
bean.setStatus("在用");
break;
case "7":
bean.setStatus("在修");
break;
case "8":
bean.setStatus("在检");
break;
case "9":
bean.setStatus("修饰后待入库");
break;
case "10":
bean.setStatus("待报废");
break;
case "11":
bean.setStatus("已报废");
break;
case "12":
bean.setStatus("报废封存");
break;
case "13":
bean.setStatus("在检");
break;
case "14":
bean.setStatus("在审");
break;
case "16":
bean.setStatus("待报废检验");
break;
case "17":
bean.setStatus("待封存检验");
break;
default:
bean.setStatus("无");
break;
}
}
}
// String modelName = o.getDeviceModel();
// String fileName = o.getDeviceName() + "—" +
// modelName.replaceAll("/", "—");
String status = o.getStatus();
if ("5".equals(status)) {
status = "在库";
} else if ("6".equals(status)) {
status = "在用";
} else if ("7".equals(status)) {
status = "修试";
} else if ("11".equals(status)) {
status = "报废";
}
// fileName += status;
String fileName = "总保有量";
expStockDetailsOutExcel(response, list, fileName + "机具仓储状态明细表");
} catch (Exception e) {
logger.error(e.toString(), e);
}
}
private void expStockDetailsOutExcel(HttpServletResponse response, List<MaStockBean> list, String filename)
throws Exception {
if (list != null) {
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
int size = list.size();
for (int i = 0; i < size; i++) {
MaStockBean bean = list.get(i);
Map<String, Object> maps = outDetailsStockBeanToMap(i, bean);
results.add(maps);
}
List<String> headers = reportStockDetailsHeader();
HSSFWorkbook workbook = POIOutputHelper.excel(results, headers, filename);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}
private Map<String, Object> outDetailsStockBeanToMap(int i, MaStockBean o) {
Map<String, Object> maps = new LinkedHashMap<String, Object>();
maps.put("id", i + 1);
maps.put("deviceName", o.getDeviceName()); //
maps.put("deviceModel", o.getDeviceModel()); //
maps.put("buyPrice", o.getBuyPrice()); //
maps.put("deviceCode", o.getDeviceCode()); //
maps.put("qrCode", o.getQrCode()); //
maps.put("status", o.getStatus()); //
return maps;
}
private List<String> reportStockDetailsHeader() {
ArrayList<String> list = new ArrayList<String>();
list.add("序号");
list.add("机具名称");
list.add("规格型号");
list.add("原值(元)");
list.add("设备编码");
list.add("二维码编码");
list.add("设备状态");
return list;
}
@RequestMapping(value = "exportDetails", method = RequestMethod.POST)
public void exportDetails(Page<MaStockBean> page, HttpServletRequest request, HttpServletResponse response,
MaStockBean o) {
try {
page.setPageSize(100000);
Page<MaStockBean> results = service.findByPageTwo(o, page);
List<MaStockBean> list = results.getResults();
if (list != null) {
for (MaStockBean bean : list) {
String status = bean.getStatus();
switch (status) {
case "1":
bean.setStatus("待通知");
break;
case "2":
bean.setStatus("待检验");
break;
case "3":
bean.setStatus("待打印");
break;
case "4":
bean.setStatus("待入库");
break;
case "5":
bean.setStatus("在库");
break;
case "6":
bean.setStatus("在用");
break;
case "7":
bean.setStatus("在修");
break;
case "8":
bean.setStatus("在检");
break;
case "9":
bean.setStatus("修饰后待入库");
break;
case "10":
bean.setStatus("待报废");
break;
case "11":
bean.setStatus("已报废");
break;
case "12":
bean.setStatus("报废封存");
break;
case "13":
bean.setStatus("在检");
break;
case "14":
bean.setStatus("在审");
break;
case "16":
bean.setStatus("待报废检验");
break;
case "17":
bean.setStatus("待封存检验");
break;
default:
bean.setStatus("无");
break;
}
}
}
String modelName = o.getDeviceModel();
String fileName = o.getDeviceName() + "—" + modelName.replaceAll("/", "—");
String status = o.getStatus();
if ("5".equals(status)) {
status = "在库";
} else if ("6".equals(status)) {
status = "在用";
} else if ("7".equals(status)) {
status = "修试";
} else if ("11".equals(status)) {
status = "报废";
}
fileName += status;
if (StringHelper.isNotEmpty(o.getKeyWord())) {
fileName += "(包含" + o.getKeyWord() + "";
}
expDetailsOutExcel(response, list, fileName + "机具仓储状态明细表");
} catch (Exception e) {
logger.error(e.toString(), e);
}
}
private void expDetailsOutExcel(HttpServletResponse response, List<MaStockBean> list, String filename)
throws Exception {
if (list != null) {
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
int size = list.size();
for (int i = 0; i < size; i++) {
MaStockBean bean = list.get(i);
Map<String, Object> maps = outDetailsMaStockBeanToMap(i, bean);
results.add(maps);
}
List<String> headers = reportDetailsHeader();
HSSFWorkbook workbook = POIOutputHelper.excel(results, headers, filename);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}
private Map<String, Object> outDetailsMaStockBeanToMap(int i, MaStockBean o) {
Map<String, Object> maps = new LinkedHashMap<String, Object>();
maps.put("id", i + 1);
maps.put("deviceName", o.getDeviceName()); //
maps.put("deviceModel", o.getDeviceModel()); //
maps.put("buyPrice", o.getBuyPrice()); //
maps.put("deviceCode", o.getDeviceCode()); //
maps.put("qrCode", o.getQrCode()); //
maps.put("status", o.getStatus()); //
return maps;
}
private List<String> reportDetailsHeader() {
ArrayList<String> list = new ArrayList<String>();
list.add("序号");
list.add("机具名称");
list.add("规格型号");
list.add("原值(元)");
list.add("设备编码");
list.add("二维码编码");
list.add("设备状态");
return list;
}
@RequestMapping(value = "exportLoss", method = RequestMethod.POST)
public void exportLoss(Page<MaStockBean> page, HttpServletRequest request, HttpServletResponse response,
MaStockBean o) {
try {
page.setPageSize(100000);
Page<MaStockBean> results = service.findStockLoss(o, page);
List<MaStockBean> list = results.getResults();
String modelName = o.getDeviceModel();
String fileName = o.getDeviceName() + "—" + modelName.replaceAll("/", "—");
String status = "丢失";
fileName += status;
if (StringHelper.isNotEmpty(o.getKeyWord())) {
fileName += "(包含" + o.getKeyWord() + "";
}
expLossExcel(response, list, fileName + "机具仓储状态明细表");
} catch (Exception e) {
logger.error(e.toString(), e);
}
}
private void expLossExcel(HttpServletResponse response, List<MaStockBean> list, String filename) throws Exception {
if (list != null) {
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
int size = list.size();
for (int i = 0; i < size; i++) {
MaStockBean bean = list.get(i);
Map<String, Object> maps = outLossMaStockBeanToMap(i, bean);
results.add(maps);
}
List<String> headers = reportLossHeader();
HSSFWorkbook workbook = POIOutputHelper.excel(results, headers, filename);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}
private Map<String, Object> outLossMaStockBeanToMap(int i, MaStockBean o) {
Map<String, Object> maps = new LinkedHashMap<String, Object>();
o.setStatus("丢失");
maps.put("id", i + 1);
maps.put("deviceName", o.getDeviceName()); //
maps.put("deviceModel", o.getDeviceModel()); //
maps.put("buyPrice", o.getBuyPrice()); //
maps.put("deviceCode", o.getDeviceCode()); //
maps.put("qrCode", o.getQrCode()); //
maps.put("status", o.getStatus()); //
return maps;
}
private List<String> reportLossHeader() {
ArrayList<String> list = new ArrayList<String>();
list.add("序号");
list.add("机具名称");
list.add("规格型号");
list.add("原值(元)");
list.add("设备编码");
list.add("二维码编码");
list.add("设备状态");
return list;
}
}