AdminMachinePartsController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  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. String path = "https://rst.iamberry.com";
  154. // 标题
  155. List<String> titles = new ArrayList<String>();
  156. titles.add("零件编号");
  157. titles.add("供应商");
  158. titles.add("零件名称");
  159. titles.add("图片(url)");
  160. titles.add("状态");
  161. titles.add("成本(元)");
  162. titles.add("重量(g)");
  163. titles.add("材料");
  164. titles.add("材料类型");
  165. titles.add("MBSC");
  166. titles.add("规格");
  167. model.put("titles", titles);
  168. PtsComponents ptsComponents = new PtsComponents();
  169. // 内容
  170. List<List<Object>> countexts = new ArrayList<List<Object>>();
  171. List<PtsComponents> list = machinePartsService.listPtsComponents(ptsComponents);
  172. for (PtsComponents info : list) {
  173. List<Object> row = new ArrayList<Object>();
  174. row.add(info.getComponentsNo() == null ? null:info.getComponentsNo());
  175. row.add(info.getSupplierName() == null ? null:info.getSupplierName());
  176. row.add(info.getComponentsName() == null ? null:info.getComponentsName());
  177. row.add(info.getComponentsImg() == null ? null:path + info.getComponentsImg());
  178. row.add(info.getComponentsStatus() == 0 ? "停止使用":"正常使用");
  179. row.add(info.getComponentsCost()/100);
  180. row.add(info.getComponentsWeight());
  181. row.add(info.getComponentsMaterial() == null ? null:info.getComponentsMaterial());
  182. String type = "";
  183. switch (info.getComponentsType()){
  184. case 1:
  185. type = "塑胶件";
  186. break;
  187. case 2:
  188. type = "五金件";
  189. break;
  190. case 4:
  191. type = "电子类";
  192. break;
  193. case 5:
  194. type = "线材";
  195. break;
  196. case 6:
  197. type = "辅材";
  198. break;
  199. case 3:
  200. type = "其他";
  201. break;
  202. }
  203. row.add(info.getComponentsType() == null ? null:type);
  204. row.add(info.getComponentsMbsc() == null ? null:info.getComponentsMbsc());
  205. row.add(info.getComponentsSpecification() == null ? null:info.getComponentsSpecification());
  206. countexts.add(row);
  207. }
  208. model.put("varList", countexts);
  209. ObjectExcelView erv = new ObjectExcelView();
  210. ModelAndView mv = new ModelAndView(erv,model);
  211. return mv;
  212. }
  213. /**
  214. * 获取机器零件列表
  215. *
  216. * @param request
  217. * @return
  218. */
  219. @RequiresPermissions("parts:select:list")
  220. @RequestMapping("/_parts_list")
  221. public ModelAndView getPtsBom(HttpServletRequest request,PtsComponents ptsComponents,
  222. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  223. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  224. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  225. ModelAndView mv = new ModelAndView("pts/machinePtras/parts_list");
  226. PagedResult<PtsComponents> pagedResult = machinePartsService.listPtsComponents(pageNO, pageSize, ptsComponents, totalNum == 0);
  227. if (totalNum != 0){
  228. pagedResult.setTotal(totalNum);
  229. }
  230. //获取产品集合,用于页面选择产品
  231. List<Produce> list = produceService.getProduceList();
  232. mv.addObject("produceList",list);
  233. //获取供应商
  234. List<PtsSupplier> listSupplier = machineSupplierService.listMachineSupplier();
  235. mv.addObject("listSupplier", listSupplier);
  236. StitchAttrUtil.setModelAndView(ptsComponents, mv, "/admin/machineParts/_parts_list", pagedResult);
  237. return mv;
  238. }
  239. /**
  240. * 进入修改机器零件页面
  241. * **/
  242. @RequiresPermissions("machineParts:update:machineParts")
  243. @RequestMapping("/_to_update_machineParts")
  244. public ModelAndView toupdateMachineParts(HttpServletRequest request){
  245. ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_update");
  246. String componentsId = request.getParameter("componentsId");
  247. PtsComponents ptsComponents = new PtsComponents();
  248. ptsComponents.setComponentsId(Integer.valueOf(componentsId));
  249. ptsComponents = machinePartsService.getmachineParts(ptsComponents);
  250. String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
  251. if(comPonentsNos != null && comPonentsNos.length > 2){
  252. ptsComponents.setComponentsNo(comPonentsNos[1]);
  253. String number = String.valueOf(comPonentsNos[2]);
  254. ptsComponents.setSerialNumber(number);
  255. }
  256. mv.addObject("ptsComponents", ptsComponents);
  257. List<Produce> list = produceService.getProduceList();
  258. mv.addObject("produceList", list);
  259. List<PtsSupplier> listSupplier = machineSupplierService.listMachineSupplier();
  260. mv.addObject("listSupplier", listSupplier);
  261. return mv;
  262. }
  263. /**
  264. * 修改机器零件
  265. * **/
  266. @ResponseBody
  267. @RequiresPermissions("machineParts:update:machineParts")
  268. @RequestMapping("/update_machineParts")
  269. public ResponseJson updateMachineParts(HttpServletRequest request,PtsComponents ptsComponents){
  270. ResponseJson responseJson = new ResponseJson();
  271. if(ptsComponents == null){
  272. responseJson.setReturnCode(500);
  273. return responseJson;
  274. }
  275. Integer componentsId = ptsComponents.getComponentsId();
  276. PtsComponents componentsByid = new PtsComponents();
  277. componentsByid.setComponentsId(componentsId);
  278. PtsComponents components = machinePartsService.getmachineParts(componentsByid);
  279. if(!components.getComponentsNo().equals(ptsComponents.getComponentsNo()) ||
  280. components.getComponentsStatus() != ptsComponents.getComponentsStatus() ||
  281. components.getProduceId() != components.getProduceId()){
  282. ptsComponents.setComponentsId(null);
  283. PtsComponents components2 = machinePartsService.getmachineParts(ptsComponents);
  284. if(components2 != null){
  285. responseJson.setReturnCode(501);
  286. return responseJson;
  287. }
  288. }
  289. //如果改变了产品或者状态,则删掉关联的bom单
  290. if(components.getComponentsStatus() != ptsComponents.getComponentsStatus() ||
  291. components.getProduceId() != components.getProduceId()){
  292. ptsBomService.deleteBomComponentByComponentsId(componentsId);
  293. }
  294. ptsComponents.setComponentsId(componentsId);
  295. ptsComponents.setComponentsCost(ptsComponents.getComponentsCost() * 100);//元转换为分
  296. ptsComponents.setComponentsUpdateTime(new Date());
  297. String comPonentsNos[] = ptsComponents.getComponentsNo().split("-");
  298. if(comPonentsNos != null && comPonentsNos.length < 3){
  299. ptsComponents.setComponentsNo(machinePartsService.getComPonentsNumber(ptsComponents.getComponentsNo(),ptsComponents.getComponentsType()));
  300. }
  301. Integer msg = machinePartsService.updateParts(ptsComponents);
  302. if(msg > 0){
  303. responseJson.setReturnCode(200);
  304. }else{
  305. responseJson.setReturnCode(500);
  306. }
  307. return responseJson;
  308. }
  309. /**
  310. * 上传零件图片
  311. * 通过流的方式上传文件
  312. * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
  313. */
  314. @ResponseBody
  315. @RequestMapping("/fileUpload")
  316. public ResponseJson fileUpload(HttpServletRequest request,@RequestParam("file") CommonsMultipartFile file) throws IOException {
  317. ResponseJson responseJson = new ResponseJson();
  318. System.out.println("fileName:"+file.getOriginalFilename());
  319. //获取项目根目录
  320. WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
  321. ServletContext servletContext = webApplicationContext.getServletContext();
  322. String realPath = servletContext.getRealPath(ResultInfo.PARTS_IMAGE);
  323. String imgUrl = new Date().getTime()+file.getOriginalFilename();
  324. try {
  325. //获取输出流
  326. OutputStream os=new FileOutputStream(realPath+imgUrl);
  327. //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
  328. InputStream is=file.getInputStream();
  329. byte[] bts = new byte[1024];
  330. //一个一个字节的读取并写入
  331. while(is.read(bts)!=-1)
  332. {
  333. os.write(bts);
  334. }
  335. os.flush();
  336. os.close();
  337. is.close();
  338. } catch (FileNotFoundException e) {
  339. // TODO Auto-generated catch block
  340. e.printStackTrace();
  341. }
  342. responseJson.setReturnCode(200);
  343. responseJson.addResponseKeyValue("imgUrl",ResultInfo.PARTS_IMAGE+imgUrl);
  344. return responseJson;
  345. }
  346. }