AdminMachineController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package com.iamberry.rst.controllers.pts;
  2. import com.iamberry.rst.core.order.Order;
  3. import com.iamberry.rst.core.order.RentType;
  4. import com.iamberry.rst.core.page.PageRequest;
  5. import com.iamberry.rst.core.page.PagedResult;
  6. import com.iamberry.rst.core.pts.PtsEmployee;
  7. import com.iamberry.rst.core.pts.ProduceProcess;
  8. import com.iamberry.rst.core.pts.PtsMachine;
  9. import com.iamberry.rst.core.pts.PtsMachineLogs;
  10. import com.iamberry.rst.core.pts.PtsMachineStatistics;
  11. import com.iamberry.rst.faces.pts.*;
  12. import com.iamberry.wechat.tools.ResponseJson;
  13. import net.sf.json.JSONObject;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.apache.shiro.authz.annotation.RequiresPermissions;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.ui.ModelMap;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestParam;
  21. import org.springframework.web.bind.annotation.ResponseBody;
  22. import org.springframework.web.servlet.ModelAndView;
  23. import javax.servlet.http.HttpServletRequest;
  24. import java.text.DecimalFormat;
  25. import java.text.NumberFormat;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. /**
  29. * Created by LJK on 2017/8/29.
  30. */
  31. @Controller
  32. @RequestMapping("/admin/machine")
  33. public class AdminMachineController {
  34. @Autowired
  35. private MachineService machineService;
  36. @Autowired
  37. private ProduceService produceService;
  38. /**
  39. * 查询机器列表
  40. * @author LJK
  41. * @date 2017年8月31日16:08:15
  42. * @param pageSize
  43. * @param pageNO
  44. * @return
  45. */
  46. @RequiresPermissions("machine:select_all:machine")
  47. @RequestMapping("/_machine_list")
  48. public ModelAndView listOrder(
  49. @RequestParam(value= "pageSize",defaultValue= "10" ,required=false) Integer pageSize,
  50. @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO,
  51. @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
  52. PtsMachine ptsMachine){
  53. ModelAndView mv = new ModelAndView("pts/machine/machine_list");
  54. StringBuilder sb = new StringBuilder("/admin/machine/_machine_list?pageSize=" + pageSize);
  55. if (StringUtils.isNotEmpty(ptsMachine.getMachineBarcode())) {
  56. sb.append("&machineBarcode=");
  57. sb.append(ptsMachine.getMachineBarcode());
  58. mv.addObject("machineBarcode",ptsMachine.getMachineBarcode());
  59. }
  60. if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() != -1) {
  61. sb.append("&machineIsPrint=" );
  62. sb.append(ptsMachine.getMachineIsPrint());
  63. mv.addObject("machineIsPrint",ptsMachine.getMachineIsPrint());
  64. }
  65. if (ptsMachine.getMachineProcessState() != null && ptsMachine.getMachineProcessState() != -1) {
  66. sb.append("&machineProcessState=" );
  67. sb.append(ptsMachine.getMachineProcessState());
  68. mv.addObject("machineProcessState",ptsMachine.getMachineProcessState());
  69. }
  70. PageRequest<PtsMachine> pageRequest = new PageRequest<PtsMachine>(ptsMachine, pageNO, pageSize, pageTotal == null);
  71. PagedResult<PtsMachine> pagedResult = machineService.listMachine(pageRequest);
  72. long total = 0;
  73. if (pageTotal == null) {
  74. total = pagedResult.getPages();
  75. } else {
  76. total = pageTotal;
  77. pagedResult.setPages(total);
  78. }
  79. //查询最新一条机器id
  80. Integer machineId = machineService.maxMachineId();
  81. mv.addObject("machineId",machineId);
  82. sb.append("&pageTotal=").append(total).append("&pageNO=");
  83. mv.addObject("page", pagedResult);
  84. mv.addObject("url", sb.toString());
  85. return mv;
  86. }
  87. /**
  88. * 查询最新机器信息
  89. * @param request
  90. * @return
  91. */
  92. @RequiresPermissions("machine:latest_all:machine")
  93. @ResponseBody
  94. @RequestMapping("/_LatestMachine_list")
  95. public List<PtsMachine> listLatestMachine(HttpServletRequest request){
  96. String machineId = request.getParameter("machineId");
  97. if(machineId == null){
  98. return null;
  99. }
  100. return machineService.listLatestMachine(Integer.valueOf(machineId));
  101. }
  102. /**
  103. * 修改机器打印状态为已打印
  104. * @param request
  105. * @return
  106. */
  107. @RequiresPermissions("machine:update_print:machine")
  108. @ResponseBody
  109. @RequestMapping("/_update_print")
  110. public Integer updateMachinPrintState(HttpServletRequest request){
  111. String machineBarcode = request.getParameter("machineBarcode");
  112. if(machineBarcode == null){
  113. return null;
  114. }
  115. PtsMachine ptsMachine = new PtsMachine();
  116. ptsMachine.setMachineBarcode(machineBarcode);
  117. ptsMachine.setMachineIsPrint(2);
  118. return machineService.updateMachine(ptsMachine);
  119. }
  120. /**
  121. * 查询机器打印列表
  122. * @author LJK
  123. * @date 2017年8月31日16:08:15
  124. * @return
  125. */
  126. @RequiresPermissions("machine:select_all:machine")
  127. @RequestMapping("/_machine_print_list")
  128. public ModelAndView listPrintMachine(HttpServletRequest request,PtsMachine ptsMachine,
  129. @RequestParam(value= "pageSize",defaultValue= "10" ,required=false) Integer pageSize,
  130. @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO,
  131. @RequestParam(value = "totalNum", defaultValue = "0",required=false) Integer totalNum){
  132. ModelAndView mv = new ModelAndView("pts/machine/machine_print_List");
  133. mv.addObject("machineIsPrint",ptsMachine.getMachineIsPrint() == null?"1":ptsMachine.getMachineIsPrint());
  134. StringBuilder sb = new StringBuilder("/admin/machine/_machine_print_list?pageSize=" + pageSize);
  135. if(ptsMachine == null || ptsMachine.getMachineIsPrint() == null || ptsMachine.getMachineIsPrint() == 1){ //未打印
  136. List<PtsMachine> machineList = machineService.listPrintOrder(ptsMachine);
  137. mv.addObject("machineList",machineList);
  138. }else{ //已打印
  139. PagedResult<PtsMachine> pagedResult = machineService.getPrintOrderList(pageNO, pageSize, ptsMachine, totalNum == 0);
  140. if(totalNum != 0) {
  141. pagedResult.setTotal(totalNum);
  142. pagedResult.setPages((int) Math.ceil((double)totalNum/pageSize));
  143. }
  144. sb.append("&machineIsPrint=");
  145. if(ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() == 2){
  146. sb.append(ptsMachine.getMachineIsPrint());
  147. }
  148. sb.append("&totalNum=");
  149. sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
  150. sb.append("&pageNO=");
  151. mv.addObject("page", pagedResult);
  152. mv.addObject("url", sb.toString());
  153. }
  154. //查询最新一条机器id
  155. Integer machineId = machineService.maxMachineId();
  156. mv.addObject("machineId",machineId);
  157. return mv;
  158. }
  159. /**
  160. * 打印列表查询所有机器
  161. * @author LJK
  162. * @date 2017年8月31日16:08:15
  163. * @return
  164. */
  165. @ResponseBody
  166. @RequiresPermissions("machine:select_all:machine")
  167. @RequestMapping("/machine_print_list")
  168. public List<PtsMachine> selectPrintMachine(PtsMachine ptsMachine){
  169. return machineService.listPrintOrder(ptsMachine);
  170. }
  171. /**
  172. * 查询机器生成流程
  173. * @author LJK
  174. * @date 2017年8月31日16:08:15
  175. * @return
  176. */
  177. @RequiresPermissions("machine:logs_all:machine")
  178. @RequestMapping("/_machine_logs_list")
  179. public ModelAndView listLogsMachine(Integer machineId){
  180. if(machineId == null || machineId < 0){
  181. return null;
  182. }
  183. PtsMachine ptsMachine = machineService.getMachine(machineId);
  184. ModelAndView mv = new ModelAndView("pts/machine/machine_particulars");
  185. List<PtsMachineLogs> machineLogsList = machineService.listMachineLogs(machineId);
  186. mv.addObject("machineLogsList", machineLogsList);
  187. mv.addObject("ptsMachine", ptsMachine);
  188. return mv;
  189. }
  190. /**
  191. * 批量修改机器打印状态为已打印
  192. * @param request
  193. * @return
  194. */
  195. @RequiresPermissions("machine:update_print:machine")
  196. @ResponseBody
  197. @RequestMapping("/_batchUpdate_print")
  198. public Integer batchUpdateMachineIsPring(HttpServletRequest request){
  199. /*String[] listId = request.getParameterValues("machineBarcodes");*/
  200. String listId = request.getParameter("machineBarcodes");
  201. if(listId == null){
  202. return 0;
  203. }
  204. String s = new String(listId);
  205. String[] a = s.split(",");
  206. return machineService.batchUpdateMachineIsPring(a);
  207. }
  208. /**
  209. * 查询机器打印列表
  210. * @author LJK
  211. * @date 2017年8月31日16:08:15
  212. * @return
  213. */
  214. @RequiresPermissions("machine:abnormality:statistics")
  215. @RequestMapping("/_produced_abnormality_statistics")
  216. public ModelAndView producedAbnormalityStatistics(HttpServletRequest request,PtsMachine ptsMachine){
  217. ModelAndView mv = new ModelAndView("pts/machine/producedAbnormalityStatistics");
  218. String machineType = request.getParameter("machineType");//1.净水机 2.冲奶机
  219. if(machineType == null || machineType.equals("")){
  220. machineType = "1";
  221. }
  222. mv.addObject("machineType",machineType);
  223. PtsMachineStatistics ptsMachineStatistics = new PtsMachineStatistics();
  224. Calendar date = Calendar.getInstance();
  225. String year = String.valueOf(date.get(Calendar.YEAR));//年
  226. ptsMachineStatistics.setYear(year);
  227. ptsMachineStatistics.setMachineType(Integer.valueOf(machineType));
  228. //查询1-12月每月生产机器数
  229. List<PtsMachineStatistics> ptsMachineStatisticsList = machineService.monthStatistics(ptsMachineStatistics);
  230. if(ptsMachineStatisticsList.size() > 0){
  231. StringBuffer yearBf = new StringBuffer();
  232. for(int i=0;i< ptsMachineStatisticsList.size();i++){
  233. yearBf.append(ptsMachineStatisticsList.get(i).getNum().toString()+",");
  234. }
  235. String yearString = yearBf.toString();
  236. mv.addObject("years", "["+yearString.substring(0,yearString.length()-1)+"]");
  237. }
  238. //查询最近七天生产机器
  239. List<PtsMachineStatistics> dayList = machineService.dayStatistics(ptsMachineStatistics);
  240. if(dayList.size() > 0){
  241. StringBuffer dayBf = new StringBuffer();
  242. StringBuffer dateBf = new StringBuffer();
  243. for(int i=0;i< dayList.size();i++){
  244. dayBf.append(dayList.get(i).getNum().toString()+",");
  245. dateBf.append(dayList.get(i).getDate()+",");
  246. }
  247. String dayString = dayBf.toString();
  248. String monthDayString = dateBf.toString();
  249. mv.addObject("days", "["+dayString.substring(0,dayString.length()-1)+"]");
  250. mv.addObject("monthDay", "["+monthDayString.substring(0,monthDayString.length()-1)+"]");
  251. }
  252. /*机器总数及流程异常数*/
  253. PtsMachineStatistics numbers = machineService.flowAbnormality(ptsMachineStatistics);
  254. /*机器总数*/
  255. mv.addObject("machineNum", numbers.getMachineCount());
  256. /*机器异常总数*/
  257. mv.addObject("machineAbnormality", numbers.getMachineAbnormality());
  258. /*流程异常百分比*/
  259. double percentage = (numbers.getMachineAbnormality() == null? 0.0 : (double)numbers.getMachineAbnormality()) / (numbers.getMachineCount() == null? 0.0:(double)numbers.getMachineCount()) * 100;
  260. NumberFormat nf=new DecimalFormat( "0.0 ");
  261. percentage = Double.parseDouble(nf.format(percentage));
  262. mv.addObject("abnormalityPercentage", percentage);
  263. /*正常百分比*/
  264. double normalPercentage = Double.parseDouble(nf.format(100.0 - percentage));
  265. mv.addObject("normalPercentage",normalPercentage);
  266. /*根据机器类型查询机器所有工序*/
  267. ProduceProcess produceProcess = new ProduceProcess();
  268. produceProcess.setProduceId(machineType.equals("1")? 1:2);
  269. List<ProduceProcess> processList = produceService.listProduceProcess(produceProcess);
  270. mv.addObject("processList",processList);
  271. //查询第一条的工序值 默认选择第一条工序
  272. List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(processList.get(0).getProcessId());
  273. if(nodeCountList.size() > 0){
  274. JSONObject json = new JSONObject();
  275. StringBuffer nodeBf = new StringBuffer();
  276. StringBuffer desBf = new StringBuffer();
  277. for(int i=0;i< nodeCountList.size();i++){
  278. nodeBf.append(nodeCountList.get(i).getNum().toString()+",");
  279. desBf.append("\""+nodeCountList.get(i).getNodeDes()+"\"" + ",");
  280. }
  281. String nodeString = nodeBf.toString();
  282. String desString = desBf.toString();
  283. mv.addObject("nodeString", "["+nodeString.substring(0,nodeString.length()-1)+"]");
  284. mv.addObject("desString", "["+desString.substring(0,desString.length()-1)+"]");
  285. }
  286. return mv;
  287. }
  288. /**
  289. * 根据工序id统计选项数量
  290. * @author LJK
  291. * @date 2017年8月31日16:08:15
  292. * @return
  293. */
  294. @RequiresPermissions("machine:abnormality:statistics")
  295. @ResponseBody
  296. @RequestMapping("/_node_normal")
  297. public ModelMap nodeNormal(HttpServletRequest request){
  298. String processId = request.getParameter("processId");//工序id
  299. ModelMap mm = new ModelMap();
  300. if(processId == null || processId.equals("")){
  301. mm.put("returnCode",500);
  302. return mm;
  303. }
  304. List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(Integer.valueOf(processId));
  305. if(nodeCountList.size() > 0){
  306. StringBuffer nodeBf = new StringBuffer();
  307. StringBuffer desBf = new StringBuffer();
  308. for(int i=0;i< nodeCountList.size();i++){
  309. nodeBf.append(nodeCountList.get(i).getNum().toString()+",");
  310. desBf.append("\""+nodeCountList.get(i).getNodeDes()+"\"" + ",");
  311. }
  312. String nodeString = nodeBf.toString();
  313. String desString = desBf.toString();
  314. mm.put("returnCode",200);
  315. mm.put("nodeString","["+nodeString.substring(0,nodeString.length()-1)+"]");
  316. mm.put("desString","["+desString.substring(0,desString.length()-1)+"]");
  317. }
  318. return mm;
  319. }
  320. }