123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618 |
- 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<PtsBom> pagedResult = ptsBomService.listPtsBom(pageNO, pageSize, ptsBom, totalNum == 0);
- if (totalNum != 0) {
- pagedResult.setTotal(totalNum);
- }
- //获取产品集合,用于页面选择产品
- List<Produce> 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<PtsBom> 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<Produce> produceList = produceService.getProduceList();
- //获取软件集合,用于页面选择软件版本
- PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
- if (produceList != null && produceList.size() > 0) {
- ptsMachineVersion.setProduceId(produceList.get(0).getProduceId());
- }
- List<PtsMachineVersion> 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<PtsBomComponents> 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<PtsMachineVersion> 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<PtsBom> 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<PtsComponents> 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<Produce> 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<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponentsOrderByNo(ptsComponents);
- //获取软件集合,用于页面选择软件版本
- PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
- if (produceList != null && produceList.size() > 0) {
- ptsMachineVersion.setProduceId(ptsBom.getProduceId());
- }
- List<PtsMachineVersion> 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<PtsBomComponents> 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<PtsComponents> 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<String, Object> 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<PtsBomComponents> componentsList = (List<PtsBomComponents>) map.get("componentsList");
- Produce produce = new Produce();
- produce.setProduceName(produceName);
- List<Produce> 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<PtsMachineVersion> 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<String, Object> 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<PtsBomComponents> componentsList = (List<PtsBomComponents>) map.get("componentsList");
- Produce produce = new Produce();
- produce.setProduceName(produceName);
- List<Produce> 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<PtsMachineVersion> 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<PtsBomComponents> ptsBomComponentsList = ptsBom.getPtsBomComponentsList();
- // 准备model
- Map<String, Object> model = new HashMap<String, Object>();
- model.put("fileName", "Bom单"); // 下载文件名称
- // 标题
- List<String> t1 = new ArrayList<String>();
- t1.add("bom单基本信息");
- t1.add("");
- t1.add("");
- model.put("titles", t1);
- List<List<Object>> countexts = new ArrayList<List<Object>>();
- for (int i = 0; i <ptsBomComponentsList.size() + 8; i++) {
- List<Object> row = new ArrayList<Object>();
- 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;
- }
- }
|