package com.iamberry.rst.controllers.pts; import com.iamberry.rst.core.page.PagedResult; import com.iamberry.rst.core.pts.*; import com.iamberry.rst.faces.pts.MachinePartsService; import com.iamberry.rst.faces.pts.MachineVersionService; import com.iamberry.rst.faces.pts.ProduceService; import com.iamberry.rst.faces.pts.PtsBomService; import com.iamberry.rst.utils.ExcelUtil; import com.iamberry.rst.utils.StitchAttrUtil; import com.iamberry.wechat.tools.ObjectExcelView; import com.iamberry.wechat.tools.ResponseJson; import com.iamberry.wechat.tools.ResultInfo; import net.sf.json.JSONArray; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; /** * bom单管理 controller * wangxiaoming */ @Controller @RequestMapping("/admin/bom") public class AdminPtsBomController { @Autowired private PtsBomService ptsBomService; @Autowired private ProduceService produceService; @Autowired private MachinePartsService machinePartsService; @Autowired private MachineVersionService machineVersionService; /** * 获取bom单列表 * * @param request * @return */ @RequiresPermissions("bom:select:list") @RequestMapping("/_bom_list") public ModelAndView getPtsBom(HttpServletRequest request, PtsBom ptsBom, @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO, @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) { ModelAndView mv = new ModelAndView("pts/bom/bom_list"); PagedResult pagedResult = ptsBomService.listPtsBom(pageNO, pageSize, ptsBom, totalNum == 0); if (totalNum != 0) { pagedResult.setTotal(totalNum); } //获取产品集合,用于页面选择产品 List list = produceService.getProduceList(); mv.addObject("produceList", list); StitchAttrUtil.setModelAndView(ptsBom, mv, "/admin/bom/_bom_list", pagedResult); return mv; } /** * 获取bom单全部 * * @param request * @return */ @ResponseBody @RequiresPermissions("bom:select:list") @RequestMapping("/get_bom_list") public ResponseJson getPtsBom(HttpServletRequest request, PtsBom ptsBom) { List bomList = ptsBomService.listPtsBom(ptsBom); if (bomList != null) { ResponseJson rj = new ResponseJson(200, "SUCCESS", 200); rj.addResponseKeyValue("bomList", bomList); return rj; } else { return new ResponseJson(500, "ERROR", 500); } } /** * 跳转到添加bom单页面 * * @return */ @RequiresPermissions("bom:add:bom") @RequestMapping(value = "/to_add_bom") public ModelAndView toAddBom(HttpServletRequest request) { ModelAndView mv = new ModelAndView("pts/bom/add_bom"); //获取产品集合,用于页面选择产品 List produceList = produceService.getProduceList(); //获取软件集合,用于页面选择软件版本 PtsMachineVersion ptsMachineVersion = new PtsMachineVersion(); if (produceList != null && produceList.size() > 0) { ptsMachineVersion.setProduceId(produceList.get(0).getProduceId()); } List machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion); mv.addObject("produceList", produceList); mv.addObject("machineVersionList", machineVersionList); return mv; } /** * 添加bom单 * * @return */ @ResponseBody @RequiresPermissions("bom:add:bom") @RequestMapping(value = "/save_bom") public ResponseJson saveBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) { if (!this.isValiData(ptsBom) || bomComponentJson == null) { return new ResponseJson(500, "请检查表单,再次提交", 500); } JSONArray jsonArray = JSONArray.fromObject(bomComponentJson); List ptsBomComponentsList = (List) JSONArray.toCollection(jsonArray, PtsBomComponents.class); ptsBom.setPtsBomComponentsList(ptsBomComponentsList); Integer flag = ptsBomService.savePtsBom(ptsBom); if (flag < 1) { return new ResponseJson(500, "添加失败", 500); } else { return new ResponseJson(200, "添加成功", 200); } } /** * 验证方法 * * @param ptsBom * @return */ public boolean isValiData(PtsBom ptsBom) { boolean flag = true; if (ptsBom.getBomName() == null || "".equals(ptsBom.getBomName())) { return false; } if (ptsBom.getProduceId() == null) { return false; } if (ptsBom.getBomVersion() == null || "".equals(ptsBom.getBomVersion())) { return false; } return flag; } /** * 获取软件版本 * * @return */ @ResponseBody @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR) @RequestMapping(value = "/get_listMachineVersion") public ResponseJson listMachineVersion(HttpServletRequest request) { String produceId = request.getParameter("produceId"); if (produceId == null || "".equals(produceId)) { return new ResponseJson(500, "ERROR", 500); } PtsMachineVersion ptsMachineVersion = new PtsMachineVersion(); ptsMachineVersion.setProduceId(Integer.valueOf(produceId)); List machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion); if (machineVersionList != null) { ResponseJson rj = new ResponseJson(200, "SUCCESS", 200); rj.addResponseKeyValue("machineVersionList", machineVersionList); return rj; } else { return new ResponseJson(500, "ERROR", 500); } } /** * 获取bom单,根据produce * * @return */ @ResponseBody @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR) @RequestMapping(value = "/get_listBom") public ResponseJson listBomByProduceId(HttpServletRequest request) { // String produceId = request.getParameter("produceId"); // if (produceId == null || "".equals(produceId)) { // return new ResponseJson(500, "ERROR", 500); // } PtsBom ptsBom = new PtsBom(); // ptsBom.setProduceId(Integer.valueOf(produceId)); List ptsBomsList = ptsBomService.listBom(ptsBom); if (ptsBomsList != null) { ResponseJson rj = new ResponseJson(200, "SUCCESS", 200); rj.addResponseKeyValue("ptsBomsList", ptsBomsList); return rj; } else { return new ResponseJson(500, "ERROR", 500); } } /** * 获取bom单,根据produce * * @return */ @ResponseBody @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR) @RequestMapping(value = "/get_bom") public ResponseJson getBom(HttpServletRequest request) { String bomId = request.getParameter("bomId"); if (bomId == null || "".equals(bomId)) { return new ResponseJson(500, "ERROR", 500); } PtsBom ptsBom = new PtsBom(); ptsBom.setBomId(Integer.valueOf(bomId)); ptsBom = ptsBomService.getPtsBom(ptsBom); if (ptsBom != null) { ResponseJson rj = new ResponseJson(200, "SUCCESS", 200); rj.addResponseKeyValue("ptsBom", ptsBom); return rj; } else { return new ResponseJson(500, "ERROR", 500); } } /** * 获取所有零件 * * @return */ @ResponseBody @RequiresPermissions(value = {"bom:add:bom", "bom:update:bom"}, logical = Logical.OR) @RequestMapping(value = "/get_listComponents") public ResponseJson listComponents(HttpServletRequest request) { String produceId = request.getParameter("produceId"); PtsComponents ptsComponents = new PtsComponents(); if (produceId != null && !"".equals(produceId)) { ptsComponents.setProduceId(Integer.valueOf(produceId)); } ptsComponents.setComponentsStatus(1); //查询所有零件 List ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents); if (ptsComponentsList != null) { ResponseJson rj = new ResponseJson(200, "SUCCESS", 200); rj.addResponseKeyValue("ptsComponentsList", ptsComponentsList); return rj; } else { return new ResponseJson(500, "ERROR", 500); } } /** * 跳转到修改bom单页面 * * @return */ @ResponseBody @RequiresPermissions("bom:update:bom") @RequestMapping(value = "/to_update_bom") public ModelAndView toUpdateBom(String bomId, HttpServletRequest request) { ModelAndView mv = new ModelAndView("pts/bom/update_bom"); if (bomId == null || "".equals(bomId)) { return mv; } //获取产品集合,用于页面选择产品 List produceList = produceService.getProduceList(); //查询bom信息 PtsBom ptsBom = new PtsBom(); ptsBom.setBomId(Integer.valueOf(bomId)); ptsBom = ptsBomService.getPtsBom(ptsBom); //所有零件 PtsComponents ptsComponents = new PtsComponents(); ptsComponents.setProduceId(ptsBom.getProduceId()); ptsComponents.setComponentsStatus(1); List ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents); //获取软件集合,用于页面选择软件版本 PtsMachineVersion ptsMachineVersion = new PtsMachineVersion(); if (produceList != null && produceList.size() > 0) { ptsMachineVersion.setProduceId(ptsBom.getProduceId()); } List machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion); mv.addObject("produceList", produceList); mv.addObject("ptsBom", ptsBom); mv.addObject("ptsComponentsList", ptsComponentsList); mv.addObject("machineVersionList", machineVersionList); return mv; } /** * 修改bom * * @return */ @ResponseBody @RequiresPermissions("bom:add:bom") @RequestMapping(value = "/update_bom") public ResponseJson updateBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) { if (!this.isValiData(ptsBom) || bomComponentJson == null) { return new ResponseJson(500, "请检查表单,再次提交", 500); } JSONArray jsonArray = JSONArray.fromObject(bomComponentJson); List ptsBomComponentsList = (List) JSONArray.toCollection(jsonArray, PtsBomComponents.class); ptsBom.setPtsBomComponentsList(ptsBomComponentsList); ptsBom.setProduceId(null); Integer flag = ptsBomService.updatePtsBom(ptsBom); if (flag < 1) { return new ResponseJson(500, "修改失败", 500); } else { return new ResponseJson(200, "修改成功", 200); } } /** * 获取bom单详情 * * @return */ @ResponseBody @RequiresPermissions("bom:select:details") @RequestMapping(value = "/to_details_bom") public ModelAndView toBomDetails(String bomId, HttpServletRequest request) { ModelAndView mv = new ModelAndView("pts/bom/bom_details"); if (bomId == null || "".equals(bomId)) { return mv; } //查询bom信息 PtsBom ptsBom = new PtsBom(); ptsBom.setBomId(Integer.valueOf(bomId)); ptsBom = ptsBomService.getPtsBomDetails(ptsBom); //所有零件 // PtsComponents ptsComponents = new PtsComponents(); // ptsComponents.setProduceId(ptsBom.getProduceId()); // ptsComponents.setComponentsStatus(1); // List ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents); mv.addObject("ptsBom", ptsBom); // mv.addObject("ptsComponentsList", ptsComponentsList); return mv; } /** * 添加bom单 -- excel导入 * * @return */ @ResponseBody @RequiresPermissions("bom:list:uploadFile") @RequestMapping(value = "/upload_bom") public ResponseJson uploadBom(@RequestParam("file") String file, HttpServletRequest request) throws Exception { //mv.addObject("heads", ExcelUtil.readExcelHead(request.getServletContext().getRealPath(file))); //mv.addObject("productUrl", file); String path = request.getServletContext().getRealPath(file); Map map = ExcelUtil.readExcelBom(path); String bomName = String.valueOf(map.get("bomName")); String produceName = String.valueOf(map.get("produceName")); String bomVersion = String.valueOf(map.get("bomVersion")); //硬件版本号 String machineVersionNo = String.valueOf(map.get("machineVersionNo")); //软件版本号 String bomRemarks = String.valueOf(map.get("bomRemarks")); //备注 List componentsList = (List) map.get("componentsList"); Produce produce = new Produce(); produce.setProduceName(produceName); List produceList = produceService.getProduceList(produce); if (produceList == null || produceList.size() < 1) { return new ResponseJson(500, "未查询到该产品或查询到多个产品,请重新填写", 500); } PtsMachineVersion ptsMachineVersion = new PtsMachineVersion(); ptsMachineVersion.setMachineVersionNo(machineVersionNo); ptsMachineVersion.setProduceId(produceList.get(0).getProduceId()); List machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion); if (machineVersionList == null || machineVersionList.size() < 1) { return new ResponseJson(500, "未查询到该产品的软件版本或查询到多个软件版本,请重新填写", 500); } for (int i = 0; i < componentsList.size(); i++) { PtsComponents ptsComponents = new PtsComponents(); ptsComponents.setComponentsNo(componentsList.get(i).getComponentsNo()); ptsComponents = machinePartsService.getmachineParts(ptsComponents); if (ptsComponents == null) { return new ResponseJson(500, "未查询到" + componentsList.get(i).getComponentsNo() + "编号的零件", 500); } componentsList.get(i).setComponentsId(ptsComponents.getComponentsId()); } PtsBom bom = new PtsBom(); bom.setBomName(bomName); bom.setProduceId(produceList.get(0).getProduceId()); bom.setBomVersion(bomVersion); bom.setMachineVersionId(machineVersionList.get(0).getMachineVersionId()); bom.setBomRemarks(bomRemarks); bom.setPtsBomComponentsList(componentsList); Integer flag = ptsBomService.savePtsBom(bom); if (flag < 1) { return new ResponseJson(500, "添加失败", 500); } else { return new ResponseJson(200, "添加成功", 200); } } /** * 导入bom单 * **/ /* @ResponseBody @RequiresPermissions("bom:list:uploadFile") @RequestMapping(value = "/upload_bom") public ResponseJson uploadBom(@RequestParam("sourceFile") MultipartFile sourceFile, HttpServletRequest request, HttpServletResponse response)throws IOException { //判断文件是否为空 if (sourceFile==null) { return new ResponseJson(500, "文件为空", 500); } //获取文件名 String name=sourceFile.getOriginalFilename(); long size =sourceFile.getSize(); if (name==null ||("").equals(name) && size==0) { return new ResponseJson(500, "文件为空", 500); } //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型 CommonsMultipartFile cf= (CommonsMultipartFile)sourceFile; //获取本地存储路径 File file = new File(ResultInfo.PARTS_EXCEL); //创建一个目录 (它的路径名由当前 File 对象指定,包括任一必须的父路径。) if (!file.exists()) file.mkdirs(); //新建一个文件 File file1 = new File(ResultInfo.PARTS_EXCEL + new Date().getTime() + ".xls"); //将上传的文件写入新建的文件中 try { cf.getFileItem().write(file1); } catch (Exception e) { e.printStackTrace(); } String path = file1.getCanonicalPath(); Map map = ExcelUtil.readExcelBom(path); String bomName = String.valueOf(map.get("bomName")); String produceName = String.valueOf(map.get("produceName")); String bomVersion = String.valueOf(map.get("bomVersion")); //硬件版本号 String machineVersionNo = String.valueOf(map.get("machineVersionNo")); //软件版本号 String bomRemarks = String.valueOf(map.get("bomRemarks")); //备注 List componentsList = (List) map.get("componentsList"); Produce produce = new Produce(); produce.setProduceName(produceName); List produceList = produceService.getProduceList(produce); if (produceList == null || produceList.size() < 1) { return new ResponseJson(500, "未查询到该产品(" + produceName +")或查询到多个产品,请重新填写", 500); } PtsMachineVersion ptsMachineVersion = new PtsMachineVersion(); ptsMachineVersion.setMachineVersionNo(machineVersionNo); ptsMachineVersion.setProduceId(produceList.get(0).getProduceId()); List machineVersionList = machineVersionService.listMachineVersion(ptsMachineVersion); if (machineVersionList == null || machineVersionList.size() < 1) { return new ResponseJson(500, "未查询到相应产品的软件版本号("+ machineVersionNo +")或查询到多个软件版本,请重新填写", 500); } for (int i = 0; i < componentsList.size(); i++) { PtsComponents ptsComponents = new PtsComponents(); ptsComponents.setComponentsNo(componentsList.get(i).getComponentsNo()); ptsComponents = machinePartsService.getmachineParts(ptsComponents); if (ptsComponents == null) { return new ResponseJson(500, "未查询到" + componentsList.get(i).getComponentsNo() + "编号的零件", 500); } componentsList.get(i).setComponentsId(ptsComponents.getComponentsId()); } PtsBom bom = new PtsBom(); bom.setBomName(bomName); bom.setProduceId(produceList.get(0).getProduceId()); bom.setBomVersion(bomVersion); bom.setMachineVersionId(machineVersionList.get(0).getMachineVersionId()); bom.setBomRemarks(bomRemarks); bom.setPtsBomComponentsList(componentsList); Integer flag = ptsBomService.savePtsBom(bom); if (flag < 1) { return new ResponseJson(500, "添加失败", 500); } else { return new ResponseJson(200, "添加成功", 200); } }*/ /** * bom单 -- excel导出 * * @return */ @RequiresPermissions("bom:list:uploadFile") @RequestMapping(value = "/generation_excel") public ModelAndView generationExcel(HttpServletRequest request) throws Exception { String bomId = request.getParameter("bomId"); PtsBom ptsBom = new PtsBom(); if (bomId == null || "".equals(bomId)) { throw new Exception("未获取到Bom单"); } ptsBom.setBomId(Integer.valueOf(bomId)); ptsBom = ptsBomService.getPtsBom(ptsBom); List ptsBomComponentsList = ptsBom.getPtsBomComponentsList(); // 准备model Map model = new HashMap(); model.put("fileName", "Bom单"); // 下载文件名称 // 标题 List t1 = new ArrayList(); t1.add("bom单基本信息"); t1.add(""); t1.add(""); model.put("titles", t1); List> countexts = new ArrayList>(); for (int i = 0; i row = new ArrayList(); switch (i) { case 0: row.add("bom单名称"); row.add(ptsBom.getBomName()); break; case 1: row.add("所属产品"); row.add(ptsBom.getProduceName()); break; case 2: row.add("硬件版本号"); row.add(ptsBom.getBomVersion()); break; case 3: row.add("软件版本号"); row.add(ptsBom.getMachineVersionNo()); break; case 4: row.add("备注"); row.add(ptsBom.getBomRemarks()); break; case 5: row.add(""); row.add(""); break; case 6: row.add("Bom零件清单"); row.add(""); break; case 7: row.add("零件编号"); row.add("零件数量"); break; default: PtsBomComponents ptsBomComponents = ptsBomComponentsList.get(i-8); row.add(ptsBomComponents.getComponentsNo()); row.add(ptsBomComponents.getBomComponentsQuantity()/100); break; } countexts.add(row); } model.put("varList", countexts); ObjectExcelView erv = new ObjectExcelView(); ModelAndView mv = new ModelAndView(erv, model); return mv; } }