package com.iamberry.rst.controllers.pts; import com.alibaba.dubbo.common.json.JSONObject; 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.MachineSupplierService; 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.DateTimeUtil; import com.iamberry.wechat.tools.ObjectExcelView; import com.iamberry.wechat.tools.ResponseJson; import com.iamberry.wechat.tools.ResultInfo; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; 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.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.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.MessageFormat; import java.util.*; import static com.iamberry.rst.util.SmsConfig.SEND_NOTICE; /** * Created by LJK on 2017/8/29. */ @Controller @RequestMapping("/admin/machineParts") public class AdminMachinePartsController { @Autowired private MachinePartsService machinePartsService; @Autowired private ProduceService produceService; @Autowired private MachineSupplierService machineSupplierService; @Autowired private PtsBomService ptsBomService; /** * 进入添加机器零件页面 * **/ @RequiresPermissions("machineParts:add:machineParts") @RequestMapping("/_to_add_machineParts") public ModelAndView toAddMachineParts(){ ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_add"); List list = produceService.getProduceList(); mv.addObject("produceList", list); List listSupplier = machineSupplierService.listMachineSupplier(); mv.addObject("listSupplier", listSupplier); return mv; } /** * 添加机器零件 * **/ @ResponseBody @RequiresPermissions("machineParts:add:machineParts") @RequestMapping("/add_machineParts") public ResponseJson addMachineParts(HttpServletRequest request,PtsComponents ptsComponents){ ResponseJson responseJson = new ResponseJson(); if(ptsComponents == null){ responseJson.setReturnCode(500); return responseJson; } PtsComponents components = machinePartsService.getmachineParts(ptsComponents); if(components != null){ responseJson.setReturnCode(501); return responseJson; } ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分 ptsComponents.setComponentsCreateTime(new Date()); /* 生成机器零件编号 */ ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType())); Integer msg = machinePartsService.addMachineParts(ptsComponents); if(msg > 0){ responseJson.setReturnCode(200); }else{ responseJson.setReturnCode(500); } return responseJson; } /** * 导入EXCEL生产零件(图片为默认图片) * **/ @RequestMapping("/excelAdd") @ResponseBody public boolean excelAdd(@RequestParam("sourceFile") String sourceFile, HttpServletRequest request, HttpServletResponse response)throws IOException { //判断文件是否为空 if (sourceFile==null) { return false; } /*//获取文件名 String name=sourceFile.getOriginalFilename(); long size =sourceFile.getSize(); if (name==null ||("").equals(name) && size==0) { return false; } //把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(); } */ // 获取Workbook InputStream inputStream = new BufferedInputStream(new FileInputStream(request.getServletContext().getRealPath(sourceFile))); Workbook wb = null; if (sourceFile.endsWith("xls")) { wb = new HSSFWorkbook(inputStream); } else { wb = new XSSFWorkbook(inputStream); } inputStream.close(); // 获取Sheet Sheet sheet = wb.getSheetAt(0); Integer msg = machinePartsService.excelAddMachineParts(sheet); if(msg > 0){ return true; }else{ return false; } } /** * 导出零件列表Excel * 2017-11-13 14:46:37 * @return */ @RequestMapping("/generation_excel") public ModelAndView generationExcel(HttpServletRequest request){ // 准备model Map model = new HashMap(); model.put("fileName", "零件列表"); // 下载文件名称 String path = "https://rst.iamberry.com"; // 标题 List titles = new ArrayList(); titles.add("零件编号"); titles.add("供应商"); titles.add("零件名称"); titles.add("图片(url)"); titles.add("状态"); titles.add("成本(元)"); titles.add("重量(g)"); titles.add("材料"); titles.add("材料类型"); titles.add("MBSC"); titles.add("规格"); model.put("titles", titles); PtsComponents ptsComponents = new PtsComponents(); // 内容 List> countexts = new ArrayList>(); List list = machinePartsService.listPtsComponents(ptsComponents); for (PtsComponents info : list) { List row = new ArrayList(); row.add(info.getComponentsNo() == null ? null:info.getComponentsNo()); row.add(info.getSupplierName() == null ? null:info.getSupplierName()); row.add(info.getComponentsName() == null ? null:info.getComponentsName()); row.add(info.getComponentsImg() == null ? null:path + info.getComponentsImg()); row.add(info.getComponentsStatus() == 0 ? "停止使用":"正常使用"); row.add(info.getComponentsCost()/100); row.add(info.getComponentsWeight()); row.add(info.getComponentsMaterial() == null ? null:info.getComponentsMaterial()); String type = ""; switch (info.getComponentsType()){ case 1: type = "塑胶件"; break; case 2: type = "五金件"; break; case 4: type = "电子类"; break; case 5: type = "线材"; break; case 6: type = "辅材"; break; case 3: type = "其他"; break; } row.add(info.getComponentsType() == null ? null:type); row.add(info.getComponentsMbsc() == null ? null:info.getComponentsMbsc()); row.add(info.getComponentsSpecification() == null ? null:info.getComponentsSpecification()); countexts.add(row); } model.put("varList", countexts); ObjectExcelView erv = new ObjectExcelView(); ModelAndView mv = new ModelAndView(erv,model); return mv; } /** * 获取机器零件列表 * * @param request * @return */ @RequiresPermissions("parts:select:list") @RequestMapping("/_parts_list") public ModelAndView getPtsBom(HttpServletRequest request,PtsComponents ptsComponents, @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/machinePtras/parts_list"); PagedResult pagedResult = machinePartsService.listPtsComponents(pageNO, pageSize, ptsComponents, totalNum == 0); if (totalNum != 0){ pagedResult.setTotal(totalNum); } //获取产品集合,用于页面选择产品 List list = produceService.getProduceList(); mv.addObject("produceList",list); //获取供应商 List listSupplier = machineSupplierService.listMachineSupplier(); mv.addObject("listSupplier", listSupplier); StitchAttrUtil.setModelAndView(ptsComponents, mv, "/admin/machineParts/_parts_list", pagedResult); return mv; } /** * 进入修改机器零件页面 * **/ @RequiresPermissions("machineParts:update:machineParts") @RequestMapping("/_to_update_machineParts") public ModelAndView toupdateMachineParts(HttpServletRequest request){ ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_update"); String componentsId = request.getParameter("componentsId"); PtsComponents ptsComponents = new PtsComponents(); ptsComponents.setComponentsId(Integer.valueOf(componentsId)); ptsComponents = machinePartsService.getmachineParts(ptsComponents); String comPonentsNos[] = ptsComponents.getComponentsNo().split("-"); if(comPonentsNos != null && comPonentsNos.length > 2){ ptsComponents.setComponentsNo(comPonentsNos[1]); String number = String.valueOf(comPonentsNos[2]); ptsComponents.setSerialNumber(number); } mv.addObject("ptsComponents", ptsComponents); List list = produceService.getProduceList(); mv.addObject("produceList", list); List listSupplier = machineSupplierService.listMachineSupplier(); mv.addObject("listSupplier", listSupplier); return mv; } /** * 修改机器零件 * **/ @ResponseBody @RequiresPermissions("machineParts:update:machineParts") @RequestMapping("/update_machineParts") public ResponseJson updateMachineParts(HttpServletRequest request,PtsComponents ptsComponents){ ResponseJson responseJson = new ResponseJson(); if(ptsComponents == null){ responseJson.setReturnCode(500); return responseJson; } Integer componentsId = ptsComponents.getComponentsId(); PtsComponents componentsByid = new PtsComponents(); componentsByid.setComponentsId(componentsId); PtsComponents components = machinePartsService.getmachineParts(componentsByid); if(!components.getComponentsNo().equals(ptsComponents.getComponentsNo()) || components.getComponentsStatus() != ptsComponents.getComponentsStatus() || components.getProduceId() != components.getProduceId()){ ptsComponents.setComponentsId(null); PtsComponents components2 = machinePartsService.getmachineParts(ptsComponents); if(components2 != null){ responseJson.setReturnCode(501); return responseJson; } } //如果改变了产品或者状态,则删掉关联的bom单 if(components.getComponentsStatus() != ptsComponents.getComponentsStatus() || components.getProduceId() != components.getProduceId()){ ptsBomService.deleteBomComponentByComponentsId(componentsId); } ptsComponents.setComponentsId(componentsId); ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分 ptsComponents.setComponentsUpdateTime(new Date()); String comPonentsNos[] = ptsComponents.getComponentsNo().split("-"); if(comPonentsNos != null && comPonentsNos.length < 3){ ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType())); } Integer msg = machinePartsService.updateParts(ptsComponents); if(msg > 0){ responseJson.setReturnCode(200); }else{ responseJson.setReturnCode(500); } return responseJson; } /** * 上传零件图片 * 通过流的方式上传文件 * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象 */ @ResponseBody @RequestMapping("/fileUpload") public ResponseJson fileUpload(HttpServletRequest request,@RequestParam("file") CommonsMultipartFile file) throws IOException { ResponseJson responseJson = new ResponseJson(); System.out.println("fileName:"+file.getOriginalFilename()); //获取项目根目录 WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext servletContext = webApplicationContext.getServletContext(); String realPath = servletContext.getRealPath(ResultInfo.PARTS_IMAGE); String imgUrl = new Date().getTime()+file.getOriginalFilename(); try { //获取输出流 OutputStream os=new FileOutputStream(realPath+imgUrl); //获取输入流 CommonsMultipartFile 中可以直接得到文件的流 InputStream is=file.getInputStream(); byte[] bts = new byte[1024]; //一个一个字节的读取并写入 while(is.read(bts)!=-1) { os.write(bts); } os.flush(); os.close(); is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } responseJson.setReturnCode(200); responseJson.addResponseKeyValue("imgUrl",ResultInfo.PARTS_IMAGE+imgUrl); return responseJson; } }