AdminMachinePartsController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. package com.iamberry.rst.controllers.pts;
  2. import com.alibaba.dubbo.common.json.JSONObject;
  3. import com.iamberry.rst.core.page.PagedResult;
  4. import com.iamberry.rst.core.pts.*;
  5. import com.iamberry.rst.faces.pts.MachinePartsService;
  6. import com.iamberry.rst.faces.pts.MachineSupplierService;
  7. import com.iamberry.rst.faces.pts.ProduceService;
  8. import com.iamberry.rst.faces.pts.PtsBomService;
  9. import com.iamberry.rst.utils.ExcelUtil;
  10. import com.iamberry.rst.utils.StitchAttrUtil;
  11. import com.iamberry.wechat.tools.DateTimeUtil;
  12. import com.iamberry.wechat.tools.ObjectExcelView;
  13. import com.iamberry.wechat.tools.ResponseJson;
  14. import com.iamberry.wechat.tools.ResultInfo;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.apache.poi.ss.usermodel.Cell;
  17. import org.apache.poi.ss.usermodel.Row;
  18. import org.apache.poi.ss.usermodel.Sheet;
  19. import org.apache.poi.ss.usermodel.Workbook;
  20. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  21. import org.apache.shiro.authz.annotation.RequiresPermissions;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.ResponseBody;
  27. import org.springframework.web.context.ContextLoader;
  28. import org.springframework.web.context.WebApplicationContext;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  31. import org.springframework.web.servlet.ModelAndView;
  32. import javax.servlet.ServletContext;
  33. import javax.servlet.http.HttpServletRequest;
  34. import javax.servlet.http.HttpServletResponse;
  35. import java.io.*;
  36. import java.text.MessageFormat;
  37. import java.util.*;
  38. import static com.iamberry.rst.util.SmsConfig.SEND_NOTICE;
  39. /**
  40. * Created by LJK on 2017/8/29.
  41. */
  42. @Controller
  43. @RequestMapping("/admin/machineParts")
  44. public class AdminMachinePartsController {
  45. @Autowired
  46. private MachinePartsService machinePartsService;
  47. @Autowired
  48. private ProduceService produceService;
  49. @Autowired
  50. private MachineSupplierService machineSupplierService;
  51. @Autowired
  52. private PtsBomService ptsBomService;
  53. /**
  54. * 进入添加机器零件页面
  55. * **/
  56. @RequiresPermissions("machineParts:add:machineParts")
  57. @RequestMapping("/_to_add_machineParts")
  58. public ModelAndView toAddMachineParts(){
  59. ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_add");
  60. List<Produce> list = produceService.getProduceList();
  61. mv.addObject("produceList", list);
  62. List<PtsSupplier> listSupplier = machineSupplierService.listMachineSupplier();
  63. mv.addObject("listSupplier", listSupplier);
  64. return mv;
  65. }
  66. /**
  67. * 添加机器零件
  68. * **/
  69. @ResponseBody
  70. @RequiresPermissions("machineParts:add:machineParts")
  71. @RequestMapping("/add_machineParts")
  72. public ResponseJson addMachineParts(HttpServletRequest request,PtsComponents ptsComponents){
  73. ResponseJson responseJson = new ResponseJson();
  74. if(ptsComponents == null){
  75. responseJson.setReturnCode(500);
  76. return responseJson;
  77. }
  78. PtsComponents components = machinePartsService.getmachineParts(ptsComponents);
  79. if(components != null){
  80. responseJson.setReturnCode(501);
  81. return responseJson;
  82. }
  83. ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分
  84. ptsComponents.setComponentsCreateTime(new Date());
  85. /* 生成机器零件编号 */
  86. ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType()));
  87. Integer msg = machinePartsService.addMachineParts(ptsComponents);
  88. if(msg > 0){
  89. responseJson.setReturnCode(200);
  90. }else{
  91. responseJson.setReturnCode(500);
  92. }
  93. return responseJson;
  94. }
  95. /**
  96. * 导入EXCEL生产零件(图片为默认图片)
  97. * **/
  98. @RequestMapping("/excelAdd")
  99. @ResponseBody
  100. public boolean excelAdd(@RequestParam("sourceFile") String sourceFile, HttpServletRequest request, HttpServletResponse response)throws IOException {
  101. //判断文件是否为空
  102. if (sourceFile==null) {
  103. return false;
  104. }
  105. /*//获取文件名
  106. String name=sourceFile.getOriginalFilename();
  107. long size =sourceFile.getSize();
  108. if (name==null ||("").equals(name) && size==0) {
  109. return false;
  110. }
  111. //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型
  112. CommonsMultipartFile cf= (CommonsMultipartFile)sourceFile; //获取本地存储路径
  113. File file = new File(ResultInfo.PARTS_EXCEL);
  114. //创建一个目录 (它的路径名由当前 File 对象指定,包括任一必须的父路径。)
  115. if (!file.exists()) file.mkdirs();
  116. //新建一个文件
  117. File file1 = new File(ResultInfo.PARTS_EXCEL + new Date().getTime() + ".xls");
  118. //将上传的文件写入新建的文件中
  119. try {
  120. cf.getFileItem().write(file1);
  121. } catch (Exception e) {
  122. e.printStackTrace();
  123. }
  124. */
  125. // 获取Workbook
  126. InputStream inputStream = new BufferedInputStream(new FileInputStream(request.getServletContext().getRealPath(sourceFile)));
  127. Workbook wb = null;
  128. if (sourceFile.endsWith("xls")) {
  129. wb = new HSSFWorkbook(inputStream);
  130. } else {
  131. wb = new XSSFWorkbook(inputStream);
  132. }
  133. inputStream.close();
  134. // 获取Sheet
  135. Sheet sheet = wb.getSheetAt(0);
  136. Integer msg = machinePartsService.excelAddMachineParts(sheet);
  137. if(msg > 0){
  138. return true;
  139. }else{
  140. return false;
  141. }
  142. }
  143. /**
  144. * 导出零件列表Excel
  145. * 2017-11-13 14:46:37
  146. * @return
  147. */
  148. @RequestMapping("/generation_excel")
  149. public ModelAndView generationExcel(HttpServletRequest request){
  150. // 准备model
  151. Map<String, Object> model = new HashMap<String, Object>();
  152. model.put("fileName", "零件列表"); // 下载文件名称
  153. // 标题
  154. List<String> titles = new ArrayList<String>();
  155. titles.add("零件编号");
  156. titles.add("供应商");
  157. titles.add("零件名称");
  158. titles.add("图片(url)");
  159. titles.add("状态");
  160. titles.add("成本(元)");
  161. titles.add("重量(g)");
  162. titles.add("材料");
  163. titles.add("材料类型");
  164. titles.add("MBSC");
  165. titles.add("规格");
  166. model.put("titles", titles);
  167. PtsComponents ptsComponents = new PtsComponents();
  168. // 内容
  169. List<List<Object>> countexts = new ArrayList<List<Object>>();
  170. List<PtsComponents> list = machinePartsService.listPtsComponents(ptsComponents);
  171. for (PtsComponents info : list) {
  172. List<Object> row = new ArrayList<Object>();
  173. row.add(info.getComponentsNo() == null ? null:info.getComponentsNo());
  174. row.add(info.getSupplierName() == null ? null:info.getSupplierName());
  175. row.add(info.getComponentsName() == null ? null:info.getComponentsName());
  176. row.add(info.getComponentsImg() == null ? null:request.getServerName()+info.getComponentsImg());
  177. row.add(info.getComponentsStatus() == 0 ? "停止使用":"正常使用");
  178. row.add(info.getComponentsCost()/100);
  179. row.add(info.getComponentsWeight());
  180. row.add(info.getComponentsMaterial() == null ? null:info.getComponentsMaterial());
  181. String type = "";
  182. switch (info.getComponentsType()){
  183. case 1:
  184. type = "塑胶件";
  185. break;
  186. case 2:
  187. type = "五金件";
  188. break;
  189. case 4:
  190. type = "电子类";
  191. break;
  192. case 5:
  193. type = "线材";
  194. break;
  195. case 6:
  196. type = "辅材";
  197. break;
  198. case 3:
  199. type = "其他";
  200. break;
  201. }
  202. row.add(info.getComponentsType() == null ? null:type);
  203. row.add(info.getComponentsMbsc() == null ? null:info.getComponentsMbsc());
  204. row.add(info.getComponentsSpecification() == null ? null:info.getComponentsSpecification());
  205. countexts.add(row);
  206. }
  207. model.put("varList", countexts);
  208. ObjectExcelView erv = new ObjectExcelView();
  209. ModelAndView mv = new ModelAndView(erv,model);
  210. return mv;
  211. }
  212. /**
  213. * 获取机器零件列表
  214. *
  215. * @param request
  216. * @return
  217. */
  218. @RequiresPermissions("parts:select:list")
  219. @RequestMapping("/_parts_list")
  220. public ModelAndView getPtsBom(HttpServletRequest request,PtsComponents ptsComponents,
  221. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  222. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  223. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  224. ModelAndView mv = new ModelAndView("pts/machinePtras/parts_list");
  225. PagedResult<PtsComponents> pagedResult = machinePartsService.listPtsComponents(pageNO, pageSize, ptsComponents, totalNum == 0);
  226. if (totalNum != 0){
  227. pagedResult.setTotal(totalNum);
  228. }
  229. //获取产品集合,用于页面选择产品
  230. List<Produce> list = produceService.getProduceList();
  231. mv.addObject("produceList",list);
  232. //获取供应商
  233. List<PtsSupplier> listSupplier = machineSupplierService.listMachineSupplier();
  234. mv.addObject("listSupplier", listSupplier);
  235. StitchAttrUtil.setModelAndView(ptsComponents, mv, "/admin/machineParts/_parts_list", pagedResult);
  236. return mv;
  237. }
  238. /**
  239. * 进入修改机器零件页面
  240. * **/
  241. @RequiresPermissions("machineParts:update:machineParts")
  242. @RequestMapping("/_to_update_machineParts")
  243. public ModelAndView toupdateMachineParts(HttpServletRequest request){
  244. ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_update");
  245. String componentsId = request.getParameter("componentsId");
  246. PtsComponents ptsComponents = new PtsComponents();
  247. ptsComponents.setComponentsId(Integer.valueOf(componentsId));
  248. ptsComponents = machinePartsService.getmachineParts(ptsComponents);
  249. String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
  250. if(comPonentsNos != null && comPonentsNos.length > 2){
  251. ptsComponents.setComponentsNo(comPonentsNos[1]);
  252. String number = String.valueOf(comPonentsNos[2]);
  253. ptsComponents.setSerialNumber(number);
  254. }
  255. mv.addObject("ptsComponents", ptsComponents);
  256. List<Produce> list = produceService.getProduceList();
  257. mv.addObject("produceList", list);
  258. List<PtsSupplier> listSupplier = machineSupplierService.listMachineSupplier();
  259. mv.addObject("listSupplier", listSupplier);
  260. return mv;
  261. }
  262. /**
  263. * 修改机器零件
  264. * **/
  265. @ResponseBody
  266. @RequiresPermissions("machineParts:update:machineParts")
  267. @RequestMapping("/update_machineParts")
  268. public ResponseJson updateMachineParts(HttpServletRequest request,PtsComponents ptsComponents){
  269. ResponseJson responseJson = new ResponseJson();
  270. if(ptsComponents == null){
  271. responseJson.setReturnCode(500);
  272. return responseJson;
  273. }
  274. Integer componentsId = ptsComponents.getComponentsId();
  275. PtsComponents componentsByid = new PtsComponents();
  276. componentsByid.setComponentsId(componentsId);
  277. PtsComponents components = machinePartsService.getmachineParts(componentsByid);
  278. if(!components.getComponentsNo().equals(ptsComponents.getComponentsNo()) ||
  279. components.getComponentsStatus() != ptsComponents.getComponentsStatus() ||
  280. components.getProduceId() != components.getProduceId()){
  281. ptsComponents.setComponentsId(null);
  282. PtsComponents components2 = machinePartsService.getmachineParts(ptsComponents);
  283. if(components2 != null){
  284. responseJson.setReturnCode(501);
  285. return responseJson;
  286. }
  287. }
  288. //如果改变了产品或者状态,则删掉关联的bom单
  289. if(components.getComponentsStatus() != ptsComponents.getComponentsStatus() ||
  290. components.getProduceId() != components.getProduceId()){
  291. ptsBomService.deleteBomComponentByComponentsId(componentsId);
  292. }
  293. ptsComponents.setComponentsId(componentsId);
  294. ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分
  295. ptsComponents.setComponentsUpdateTime(new Date());
  296. String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
  297. if(comPonentsNos != null && comPonentsNos.length < 3){
  298. ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType()));
  299. }
  300. Integer msg = machinePartsService.updateParts(ptsComponents);
  301. if(msg > 0){
  302. responseJson.setReturnCode(200);
  303. }else{
  304. responseJson.setReturnCode(500);
  305. }
  306. return responseJson;
  307. }
  308. /**
  309. * 上传零件图片
  310. * 通过流的方式上传文件
  311. * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
  312. */
  313. @ResponseBody
  314. @RequestMapping("/fileUpload")
  315. public ResponseJson fileUpload(HttpServletRequest request,@RequestParam("file") CommonsMultipartFile file) throws IOException {
  316. ResponseJson responseJson = new ResponseJson();
  317. System.out.println("fileName:"+file.getOriginalFilename());
  318. //获取项目根目录
  319. WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
  320. ServletContext servletContext = webApplicationContext.getServletContext();
  321. String realPath = servletContext.getRealPath(ResultInfo.PARTS_IMAGE);
  322. String imgUrl = new Date().getTime()+file.getOriginalFilename();
  323. try {
  324. //获取输出流
  325. OutputStream os=new FileOutputStream(realPath+imgUrl);
  326. //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
  327. InputStream is=file.getInputStream();
  328. byte[] bts = new byte[1024];
  329. //一个一个字节的读取并写入
  330. while(is.read(bts)!=-1)
  331. {
  332. os.write(bts);
  333. }
  334. os.flush();
  335. os.close();
  336. is.close();
  337. } catch (FileNotFoundException e) {
  338. // TODO Auto-generated catch block
  339. e.printStackTrace();
  340. }
  341. responseJson.setReturnCode(200);
  342. responseJson.addResponseKeyValue("imgUrl",ResultInfo.PARTS_IMAGE+imgUrl);
  343. return responseJson;
  344. }
  345. }