|
@@ -1,16 +1,21 @@
|
|
|
package com.iamberry.rst.controllers.pts;
|
|
|
|
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
|
-import com.iamberry.rst.core.pts.Produce;
|
|
|
-import com.iamberry.rst.core.pts.PtsBom;
|
|
|
-import com.iamberry.rst.core.pts.PtsBomComponents;
|
|
|
-import com.iamberry.rst.core.pts.PtsComponents;
|
|
|
+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;
|
|
@@ -18,10 +23,14 @@ 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 java.util.List;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.*;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* bom单管理 controller
|
|
@@ -40,6 +49,9 @@ public class AdminPtsBomController {
|
|
|
@Autowired
|
|
|
private MachinePartsService machinePartsService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private MachineVersionService machineVersionService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取bom单列表
|
|
|
*
|
|
@@ -67,6 +79,28 @@ public class AdminPtsBomController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取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
|
|
@@ -79,7 +113,15 @@ public class AdminPtsBomController {
|
|
|
//获取产品集合,用于页面选择产品
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -112,6 +154,7 @@ public class AdminPtsBomController {
|
|
|
|
|
|
/**
|
|
|
* 验证方法
|
|
|
+ *
|
|
|
* @param ptsBom
|
|
|
* @return
|
|
|
*/
|
|
@@ -120,16 +163,44 @@ public class AdminPtsBomController {
|
|
|
if (ptsBom.getBomName() == null || "".equals(ptsBom.getBomName())) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(ptsBom.getProduceId() == null){
|
|
|
+ if (ptsBom.getProduceId() == null) {
|
|
|
return false;
|
|
|
}
|
|
|
- if(ptsBom.getBomVersion() == null || "".equals(ptsBom.getBomVersion())){
|
|
|
+ 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
|
|
@@ -241,9 +312,17 @@ public class AdminPtsBomController {
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -306,4 +385,233 @@ public class AdminPtsBomController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 添加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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|