AdminMachineController.java 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. package com.iamberry.rst.controllers.pts;
  2. import com.iamberry.rst.core.page.PageRequest;
  3. import com.iamberry.rst.core.page.PagedResult;
  4. import com.iamberry.rst.core.pts.*;
  5. import com.iamberry.rst.core.tools.QRCJson;
  6. import com.iamberry.rst.core.tools.QrCodeUtil;
  7. import com.iamberry.rst.core.tools.WeixinUtil;
  8. import com.iamberry.rst.faces.pts.*;
  9. import com.iamberry.wechat.tools.NameUtils;
  10. import com.iamberry.wechat.tools.ResponseJson;
  11. import com.iamberry.wechat.tools.ResultInfo;
  12. import net.sf.json.JSONObject;
  13. import org.apache.commons.lang.StringUtils;
  14. import org.apache.shiro.authz.annotation.RequiresPermissions;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.ui.ModelMap;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import org.springframework.web.context.ContextLoader;
  22. import org.springframework.web.context.WebApplicationContext;
  23. import org.springframework.web.servlet.ModelAndView;
  24. import javax.servlet.ServletContext;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.xml.crypto.Data;
  27. import java.text.DecimalFormat;
  28. import java.text.NumberFormat;
  29. import java.util.*;
  30. import static com.iamberry.rst.util.SmsConfig.scanningQrCode;
  31. /**
  32. * Created by LJK on 2017/8/29.
  33. */
  34. @Controller
  35. @RequestMapping("/admin/machine")
  36. public class AdminMachineController {
  37. @Autowired
  38. private MachineService machineService;
  39. @Autowired
  40. private ProduceService produceService;
  41. @Autowired
  42. private PtsBatchService ptsBatchService;
  43. @Autowired
  44. private MachineVersionService machineVersionService;
  45. @Autowired
  46. private PtsBomService ptsBomService;
  47. @Autowired
  48. private MachinePartsService machinePartsService;
  49. @Autowired
  50. private PtsSalesCompanyService ptsSalesCompanyService;
  51. /**
  52. * 查询机器列表
  53. *
  54. * @param pageSize
  55. * @param pageNO
  56. * @return
  57. * @author LJK
  58. * @date 2017年8月31日16:08:15
  59. */
  60. @RequiresPermissions("machine:select_all:machine")
  61. @RequestMapping("/_machine_list")
  62. public ModelAndView listOrder(
  63. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  64. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  65. @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
  66. PtsMachine ptsMachine) {
  67. ModelAndView mv = new ModelAndView("pts/machine/machine_list");
  68. StringBuilder sb = new StringBuilder("/admin/machine/_machine_list?pageSize=" + pageSize);
  69. if (StringUtils.isNotEmpty(ptsMachine.getMachineBarcode())) {
  70. sb.append("&machineBarcode=");
  71. sb.append(ptsMachine.getMachineBarcode());
  72. mv.addObject("machineBarcode", ptsMachine.getMachineBarcode());
  73. }
  74. if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() != -1) {
  75. sb.append("&machineIsPrint=");
  76. sb.append(ptsMachine.getMachineIsPrint());
  77. mv.addObject("machineIsPrint", ptsMachine.getMachineIsPrint());
  78. }
  79. if (ptsMachine.getMachineProcessState() != null && ptsMachine.getMachineProcessState() != -1) {
  80. sb.append("&machineProcessState=");
  81. sb.append(ptsMachine.getMachineProcessState());
  82. mv.addObject("machineProcessState", ptsMachine.getMachineProcessState());
  83. }
  84. if (ptsMachine.getMachineProduceType() != null && ptsMachine.getMachineProduceType() != -1) {
  85. sb.append("&machineProduceType=");
  86. sb.append(ptsMachine.getMachineProduceType());
  87. mv.addObject("machineProduceType", ptsMachine.getMachineProduceType());
  88. }
  89. PageRequest<PtsMachine> pageRequest = new PageRequest<PtsMachine>(ptsMachine, pageNO, pageSize, pageTotal == null);
  90. PagedResult<PtsMachine> pagedResult = machineService.listMachinePge(pageRequest);
  91. long total = 0;
  92. if (pageTotal == null) {
  93. total = pagedResult.getPages();
  94. } else {
  95. total = pageTotal;
  96. pagedResult.setPages(total);
  97. }
  98. //查询最新一条机器id
  99. Integer machineId = machineService.maxMachineId();
  100. mv.addObject("machineId", machineId == null ? 0 : machineId);
  101. sb.append("&pageTotal=").append(total).append("&pageNO=");
  102. mv.addObject("page", pagedResult);
  103. mv.addObject("url", sb.toString());
  104. return mv;
  105. }
  106. /**
  107. * 查询最新机器信息
  108. *
  109. * @param request
  110. * @return
  111. */
  112. @RequiresPermissions("machine:latest_all:machine")
  113. @ResponseBody
  114. @RequestMapping("/_LatestMachine_list")
  115. public List<PtsMachine> listLatestMachine(HttpServletRequest request) {
  116. String machineId = request.getParameter("machineId");
  117. if (machineId == null || machineId.equals("")) {
  118. return null;
  119. }
  120. return machineService.listLatestMachine(Integer.valueOf(machineId));
  121. }
  122. /**
  123. * 查询最新牙刷信息
  124. *
  125. * @param request
  126. * @return
  127. */
  128. @RequiresPermissions("machine:latest_all:machine")
  129. @ResponseBody
  130. @RequestMapping("/_LatestTooth_list")
  131. public List<PtsMachine> listLatestTooth(HttpServletRequest request) {
  132. String machineId = request.getParameter("machineId");
  133. if (machineId == null || machineId.equals("")) {
  134. return null;
  135. }
  136. return machineService.listLatestTooth(Integer.valueOf(machineId));
  137. }
  138. /**
  139. * 修改机器打印状态为已打印
  140. *
  141. * @param request
  142. * @return
  143. */
  144. @RequiresPermissions("machine:update_print:machine")
  145. @ResponseBody
  146. @RequestMapping("/_update_print")
  147. public Integer updateMachinPrintState(HttpServletRequest request) {
  148. String machineBarcode = request.getParameter("machineBarcode");
  149. if (machineBarcode == null) {
  150. return null;
  151. }
  152. PtsMachine ptsMachine = new PtsMachine();
  153. ptsMachine.setMachineBarcode(machineBarcode);
  154. ptsMachine.setMachineIsPrint(2);
  155. return machineService.updateMachine(ptsMachine);
  156. }
  157. /**
  158. * 查询机器打印列表
  159. *
  160. * @return
  161. * @author LJK
  162. * @date 2017年8月31日16:08:15
  163. */
  164. @RequiresPermissions("machine:select_all:machine")
  165. @RequestMapping("/_machine_print_list")
  166. public ModelAndView listPrintMachine(HttpServletRequest request, PtsMachine ptsMachine,
  167. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  168. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  169. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  170. ModelAndView mv = new ModelAndView("pts/machine/machine_print_List");
  171. mv.addObject("machineIsPrint", ptsMachine.getMachineIsPrint() == null ? "1" : String.valueOf(ptsMachine.getMachineIsPrint()));
  172. StringBuilder sb = new StringBuilder("/admin/machine/_machine_print_list?pageSize=" + pageSize);
  173. ptsMachine.setMachineProduceType(0);
  174. if (ptsMachine == null || ptsMachine.getMachineIsPrint() == null || ptsMachine.getMachineIsPrint() == 1) { //未打印
  175. List<PtsMachine> machineList = machineService.listPrintOrder(ptsMachine);
  176. mv.addObject("machineList", machineList);
  177. } else { //已打印
  178. PagedResult<PtsMachine> pagedResult = machineService.getPrintOrderList(pageNO, pageSize, ptsMachine, totalNum == 0);
  179. if (totalNum != 0) {
  180. pagedResult.setTotal(totalNum);
  181. pagedResult.setPages((int) Math.ceil((double) totalNum / pageSize));
  182. }
  183. sb.append("&machineIsPrint=");
  184. if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() == 2) {
  185. sb.append(ptsMachine.getMachineIsPrint());
  186. }
  187. sb.append("&totalNum=");
  188. sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
  189. sb.append("&pageNO=");
  190. mv.addObject("page", pagedResult);
  191. mv.addObject("url", sb.toString());
  192. }
  193. //查询最新一条机器id
  194. Integer machineId = machineService.maxMachineId();
  195. mv.addObject("machineId", machineId);
  196. return mv;
  197. }
  198. /**
  199. * 查询电动牙刷打印列表
  200. *
  201. * @return
  202. * @author LJK
  203. * @date 2017年8月31日16:08:15
  204. */
  205. @RequiresPermissions("machine:select_all:machine")
  206. @RequestMapping("/_tooth_print_list")
  207. public ModelAndView listPrintTooth(HttpServletRequest request, PtsMachine ptsMachine,
  208. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  209. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  210. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  211. ModelAndView mv = new ModelAndView("pts/machine/tooth_print_List");
  212. mv.addObject("machineIsPrint", ptsMachine.getMachineIsPrint() == null ? "1" : String.valueOf(ptsMachine.getMachineIsPrint()));
  213. StringBuilder sb = new StringBuilder("/admin/machine/_tooth_print_list?pageSize=" + pageSize);
  214. if (ptsMachine == null || ptsMachine.getMachineIsPrint() == null || ptsMachine.getMachineIsPrint() == 1) { //未打印
  215. List<PtsMachine> machineList = machineService.listPrintOrderTooth(ptsMachine);
  216. mv.addObject("machineList", machineList);
  217. } else { //已打印
  218. PagedResult<PtsMachine> pagedResult = machineService.getPrintOrderToothList(pageNO, pageSize, ptsMachine, totalNum == 0);
  219. if (totalNum != 0) {
  220. pagedResult.setTotal(totalNum);
  221. pagedResult.setPages((int) Math.ceil((double) totalNum / pageSize));
  222. }
  223. sb.append("&machineIsPrint=");
  224. if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() == 2) {
  225. sb.append(ptsMachine.getMachineIsPrint());
  226. }
  227. sb.append("&totalNum=");
  228. sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
  229. sb.append("&pageNO=");
  230. mv.addObject("page", pagedResult);
  231. mv.addObject("url", sb.toString());
  232. }
  233. //查询最新一条机器id
  234. Integer machineId = machineService.maxToothId();
  235. mv.addObject("machineId", machineId);
  236. return mv;
  237. }
  238. /**
  239. * 查询机器关联的产品信息
  240. *
  241. * @param machineId
  242. */
  243. @ResponseBody
  244. @RequiresPermissions("machine:select_all:machine")
  245. @RequestMapping("/_getProduce_print")
  246. public Produce setProduceList(Integer machineId) {
  247. Produce produce = machineService.getProduceByMachineId(machineId);
  248. return produce;
  249. }
  250. /**
  251. * 打印列表查询所有机器
  252. *
  253. * @return
  254. * @author LJK
  255. * @date 2017年8月31日16:08:15
  256. */
  257. @ResponseBody
  258. @RequiresPermissions("machine:select_all:machine")
  259. @RequestMapping("/machine_print_list")
  260. public List<PtsMachine> selectPrintMachine(PtsMachine ptsMachine) {
  261. return machineService.listPrintOrder(ptsMachine);
  262. }
  263. /**
  264. * 查询机器生成流程
  265. *
  266. * @return
  267. * @author LJK
  268. * @date 2017年8月31日16:08:15
  269. */
  270. @RequiresPermissions("machine:logs_all:machine")
  271. @RequestMapping("/_machine_logs_list")
  272. public ModelAndView listLogsMachine(Integer machineId) {
  273. if (machineId == null || machineId < 0) {
  274. return null;
  275. }
  276. PtsMachine ptsMachine = machineService.getMachine(machineId);
  277. ModelAndView mv = new ModelAndView("pts/machine/machine_particulars");
  278. List<PtsMachineLogs> machineLogsList = machineService.listMachineLogs(machineId);
  279. PtsBom ptsBom = new PtsBom();
  280. if (ptsMachine.getMachineBomId() != null && ptsMachine.getMachineBomId() != 0) {
  281. //获取bom单
  282. ptsBom.setBomId(ptsMachine.getMachineBomId());
  283. ptsBom = ptsBomService.getPtsBomDetails(ptsBom);
  284. }
  285. PtsBatch ptsBatch = new PtsBatch();
  286. if (ptsMachine.getMachineBatchId() != null && ptsMachine.getMachineBatchId() != 0) {
  287. ptsBatch.setBatchId(ptsMachine.getMachineBatchId());
  288. ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
  289. }
  290. PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
  291. if (ptsMachine.getMachineSoftwareVersion() != null && ptsMachine.getMachineSoftwareVersion() != 0) {
  292. ptsMachineVersion.setMachineVersionId(ptsMachine.getMachineSoftwareVersion());
  293. ptsMachineVersion = machineVersionService.getMachineVersion(ptsMachineVersion);
  294. }
  295. Produce produce = new Produce();
  296. if (ptsMachineVersion != null && ptsMachineVersion.getProduceId() != null) {
  297. produce.setProduceId(ptsBatch.getProduceId());
  298. produce = produceService.getProduce(produce);
  299. }
  300. //获取销售公司
  301. PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
  302. if(ptsMachine != null && ptsMachine.getMachineSalesState() == 1 && ptsMachine.getMachineSalesCompanyId() != null){
  303. ptsSalesCompany.setSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
  304. ptsSalesCompany = ptsSalesCompanyService.getPtsSalesCompany(ptsSalesCompany);
  305. }
  306. mv.addObject("ptsSalesCompany", ptsSalesCompany);
  307. mv.addObject("produce", produce);
  308. mv.addObject("ptsMachineVersion", ptsMachineVersion);
  309. mv.addObject("ptsBatch", ptsBatch);
  310. mv.addObject("ptsBom", ptsBom);
  311. mv.addObject("machineLogsList", machineLogsList);
  312. mv.addObject("ptsMachine", ptsMachine);
  313. return mv;
  314. }
  315. /**
  316. * 批量修改机器打印状态为已打印
  317. *
  318. * @param request
  319. * @return
  320. */
  321. @RequiresPermissions("machine:update_print:machine")
  322. @ResponseBody
  323. @RequestMapping("/_batchUpdate_print")
  324. public Integer batchUpdateMachineIsPring(HttpServletRequest request) {
  325. /*String[] listId = request.getParameterValues("machineBarcodes");*/
  326. String listId = request.getParameter("machineBarcodes");
  327. if (listId == null) {
  328. return 0;
  329. }
  330. String s = new String(listId);
  331. String[] a = s.split(",");
  332. return machineService.batchUpdateMachineIsPring(a);
  333. }
  334. /**
  335. * 查询机器生产&异常统计
  336. *
  337. * @return
  338. * @author LJK
  339. * @date 2017年8月31日16:08:15
  340. */
  341. @RequiresPermissions("machine:abnormality:statistics")
  342. @RequestMapping("/_produced_abnormality_statistics")
  343. public ModelAndView producedAbnormalityStatistics(HttpServletRequest request, PtsMachine ptsMachine) {
  344. ModelAndView mv = new ModelAndView("pts/machine/producedAbnormalityStatistics");
  345. String produceId = request.getParameter("produceId");//1.产品id
  346. Produce produce = new Produce();
  347. if (produceId == null || produceId.equals("")) {
  348. produce = produceService.getProduceByOne();//默认为第一个产品
  349. } else {
  350. produce.setProduceId(Integer.valueOf(produceId));
  351. produce = produceService.getProduce(produce);
  352. }
  353. mv.addObject("produceId", produce.getProduceId());
  354. //根据产品id查询产品类型
  355. PtsMachineStatistics ptsMachineStatistics = new PtsMachineStatistics();
  356. Calendar date = Calendar.getInstance();
  357. String year = String.valueOf(date.get(Calendar.YEAR));//年
  358. ptsMachineStatistics.setYear(year);
  359. ptsMachineStatistics.setMachineType(produce.getProduceType());
  360. ptsMachineStatistics.setProduceId(String.valueOf(produce.getProduceId()));
  361. //查询1-12月每月生产机器数
  362. List<PtsMachineStatistics> ptsMachineStatisticsList = machineService.monthStatistics(ptsMachineStatistics);
  363. if (ptsMachineStatisticsList.size() > 0) {
  364. StringBuffer yearBf = new StringBuffer();
  365. for (int i = 0; i < ptsMachineStatisticsList.size(); i++) {
  366. yearBf.append(ptsMachineStatisticsList.get(i).getNum().toString() + ",");
  367. }
  368. String yearString = yearBf.toString();
  369. mv.addObject("years", "[" + yearString.substring(0, yearString.length() - 1) + "]");
  370. }else{
  371. mv.addObject("years", "[]");
  372. }
  373. //查询最近七天生产机器
  374. List<PtsMachineStatistics> dayList = machineService.dayStatistics(ptsMachineStatistics);
  375. if (dayList.size() > 0) {
  376. StringBuffer dayBf = new StringBuffer();
  377. StringBuffer dateBf = new StringBuffer();
  378. for (int i = 0; i < dayList.size(); i++) {
  379. dayBf.append(dayList.get(i).getNum().toString() + ",");
  380. dateBf.append("\"" + dayList.get(i).getDate() + "\"" + ",");
  381. }
  382. String dayString = dayBf.toString();
  383. String monthDayString = dateBf.toString();
  384. mv.addObject("days", "[" + dayString.substring(0, dayString.length() - 1) + "]");
  385. mv.addObject("monthDay", "[" + monthDayString.substring(0, monthDayString.length() - 1) + "]");
  386. }else{
  387. mv.addObject("days", "[]");
  388. mv.addObject("monthDay", "[]");
  389. }
  390. /*机器总数及流程异常数*/
  391. PtsMachineStatistics numbers = machineService.flowAbnormality(ptsMachineStatistics);
  392. /*机器总数*/
  393. mv.addObject("machineNum", numbers.getMachineCount());
  394. double percentage = 0.0;
  395. /*流程异常百分比*/
  396. if (numbers.getMachineAbnormality() == null) {
  397. /*机器异常总数*/
  398. mv.addObject("machineAbnormality", 0);
  399. } else {
  400. percentage = (double) numbers.getMachineAbnormality() / (double) numbers.getMachineCount() * 100;
  401. }
  402. NumberFormat nf = new DecimalFormat("0.0 ");
  403. percentage = Double.parseDouble(nf.format(percentage));
  404. mv.addObject("abnormalityPercentage", percentage);
  405. /*正常百分比*/
  406. double normalPercentage = Double.parseDouble(nf.format(100.0 - percentage));
  407. mv.addObject("normalPercentage", normalPercentage);
  408. /*根据机器类型查询机器所有工序*/
  409. ProduceProcess produceProcess = new ProduceProcess();
  410. produceProcess.setProduceId(produce.getProduceType());
  411. List<ProduceProcess> processList = produceService.listProduceProcess(produceProcess);
  412. mv.addObject("processList", processList);
  413. //查询第一条的工序值 默认选择第一条工序
  414. if (processList.size() > 0) {
  415. List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(processList.get(0).getProcessId());
  416. if (nodeCountList.size() > 0) {
  417. JSONObject json = new JSONObject();
  418. StringBuffer nodeBf = new StringBuffer();
  419. StringBuffer desBf = new StringBuffer();
  420. for (int i = 0; i < nodeCountList.size(); i++) {
  421. nodeBf.append(nodeCountList.get(i).getNum().toString() + ",");
  422. desBf.append("\"" + nodeCountList.get(i).getNodeDes() + "\"" + ",");
  423. }
  424. String nodeString = nodeBf.toString();
  425. String desString = desBf.toString();
  426. mv.addObject("nodeString", "[" + nodeString.substring(0, nodeString.length() - 1) + "]");
  427. mv.addObject("desString", "[" + desString.substring(0, desString.length() - 1) + "]");
  428. }
  429. }else{
  430. mv.addObject("nodeString", "[]");
  431. mv.addObject("desString", "[]");
  432. }
  433. //查询所有产品
  434. List<Produce> list = produceService.getProduceList();
  435. mv.addObject("produceList", list);
  436. return mv;
  437. }
  438. /**
  439. * 根据工序id统计选项数量
  440. *
  441. * @return
  442. * @author LJK
  443. * @date 2017年8月31日16:08:15
  444. */
  445. @RequiresPermissions("machine:abnormality:statistics")
  446. @ResponseBody
  447. @RequestMapping("/_node_normal")
  448. public ModelMap nodeNormal(HttpServletRequest request) {
  449. String processId = request.getParameter("processId");//工序id
  450. ModelMap mm = new ModelMap();
  451. if (processId == null || processId.equals("")) {
  452. mm.put("returnCode", 500);
  453. return mm;
  454. }
  455. List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(Integer.valueOf(processId));
  456. if (nodeCountList.size() > 0) {
  457. StringBuffer nodeBf = new StringBuffer();
  458. StringBuffer desBf = new StringBuffer();
  459. for (int i = 0; i < nodeCountList.size(); i++) {
  460. nodeBf.append(nodeCountList.get(i).getNum().toString() + ",");
  461. desBf.append("\"" + nodeCountList.get(i).getNodeDes() + "\"" + ",");
  462. }
  463. String nodeString = nodeBf.toString();
  464. String desString = desBf.toString();
  465. mm.put("returnCode", 200);
  466. mm.put("nodeString", "[" + nodeString.substring(0, nodeString.length() - 1) + "]");
  467. mm.put("desString", "[" + desString.substring(0, desString.length() - 1) + "]");
  468. }
  469. return mm;
  470. }
  471. private String productNfcId = "1390730000";//默认nfcId
  472. /**
  473. * 进入批量生产机器页面
  474. *
  475. * @return
  476. * @author LJK
  477. * @date 2017年8月31日16:08:15
  478. */
  479. @RequiresPermissions("machine:add:batch")
  480. @RequestMapping("/_to_add_batch")
  481. public ModelAndView toAddMachineBatch() {
  482. ModelAndView mv = new ModelAndView("pts/machine/batchAddMachine");
  483. List<Produce> list = produceService.getProduceList();
  484. mv.addObject("produceList", list);
  485. return mv;
  486. }
  487. @RequiresPermissions("machine:add:batch")
  488. @ResponseBody
  489. @RequestMapping("/_add_machine_batch")
  490. public ResponseJson addMachineBatch(HttpServletRequest request) {
  491. ResponseJson rj = new ResponseJson();
  492. String produceId = request.getParameter("produceId");//产品ID
  493. String machineSoftwareVersion = request.getParameter("machineSoftwareVersion");
  494. String number = request.getParameter("number");
  495. if (produceId == null || produceId.equals("") ||
  496. machineSoftwareVersion == null || machineSoftwareVersion.equals("") ||
  497. number == null || number.equals("")) {
  498. rj.setReturnCode(500);
  499. return rj;
  500. }
  501. Produce produce = new Produce();
  502. produce.setProduceId(Integer.valueOf(produceId));
  503. produce = produceService.getProduce(produce); //根据产品获取产品信息
  504. /*获取公众号信息*/
  505. WechatMp wechatMp = produceService.getWechatMpById(produce.getWechatMpId());
  506. ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
  507. //生成条形码前缀
  508. String berQrcode = generationBarCode(produce);
  509. //获取当前月机器总数
  510. java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
  511. java.util.Date currTime = new java.util.Date();
  512. String curTime = formatter.format(currTime);
  513. Integer machineNumber = machineService.selectMonthCount(curTime,produce.getProduceId());
  514. Calendar nowDate = Calendar.getInstance();
  515. Integer year = nowDate.get(Calendar.YEAR);
  516. Integer month = nowDate.get(Calendar.MONTH) + 1;
  517. if(year == 2017 && month == 12){
  518. machineNumber += 300;
  519. }
  520. String num = null;
  521. for (int i = 0; i < Integer.valueOf(number); i++) {
  522. machineNumber = machineNumber + i;
  523. switch (String.valueOf(machineNumber).length()) {
  524. case 0:
  525. num = "00001";
  526. break;
  527. case 1:
  528. num = "0000" + String.valueOf(machineNumber);
  529. break;
  530. case 2:
  531. num = "000" + String.valueOf(machineNumber);
  532. break;
  533. case 3:
  534. num = "00" + String.valueOf(machineNumber);
  535. break;
  536. case 4:
  537. num = "00" + String.valueOf(machineNumber);
  538. break;
  539. case 5:
  540. num = String.valueOf(machineNumber);
  541. break;
  542. }
  543. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode + num);
  544. QRCJson qrc = WeixinUtil.createQrcodeByWechatMp(json,wechatMp.getWechatMpAppid(),wechatMp.getWechatMpAppsecret(),wechatMp.getWechatMpPubno());
  545. PtsMachine ptsMachine = new PtsMachine();
  546. ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
  547. ptsMachine.setMachineBarcode(berQrcode + num);//条形码
  548. ptsMachine.setMachineStatus(1);//机器状态
  549. ptsMachine.setMachineProducedTime(new Date());//生产时间
  550. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  551. ptsMachine.setMachineCompoundImg("合成的图片url");
  552. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  553. ptsMachine.setMachineCreateTime(new Date());//创建时间
  554. ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
  555. ptsMachine.setMachineNfcId(productNfcId);
  556. ptsMachine.setMachineHardwareVersion(Integer.valueOf(machineSoftwareVersion));
  557. ptsMachine.setMachineSoftwareVersion(Integer.valueOf(machineSoftwareVersion));
  558. ptsMachine.setMachineProduceId(Integer.valueOf(produceId));
  559. ptsMachine.setMachineIsRetreading(2);
  560. ptsList.add(ptsMachine);
  561. }
  562. Integer msg = machineService.addMahineBatch(ptsList);
  563. if (msg > 0) {
  564. rj.setReturnCode(200);
  565. } else {
  566. rj.setReturnCode(500);
  567. }
  568. return rj;
  569. }
  570. private String producePattern = "WA";//产品型号
  571. private String productModel = "1X";//产品型号
  572. private String productFeatures = "A";//产品特性
  573. private String softwareVersion = "30";//软件版本
  574. private String productBrand = "";//品牌字母
  575. //生成条形码
  576. public String generationBarCode(Produce produce) {
  577. Calendar cal = Calendar.getInstance();
  578. int year = cal.get(Calendar.YEAR);
  579. int month = cal.get(Calendar.MONTH) + 1;
  580. String months = String.valueOf(month);
  581. if (month < 10) {
  582. months = "0" + months;
  583. }
  584. producePattern = produce.getProducePattern();
  585. productModel = produce.getProduceModel();
  586. productFeatures = produce.getProduceFeature();
  587. productBrand = produce.getProduceBrand();
  588. //拼接
  589. String barcode = productBrand+producePattern + productModel + productFeatures + String.valueOf(year).substring(2, 4) + months;
  590. return barcode;
  591. }
  592. /**
  593. * 进入添加翻新机界面
  594. **/
  595. @RequiresPermissions("machine:add:batch")
  596. @RequestMapping("/_to_add_renovation")
  597. public ModelAndView toAddRenovationMachine() {
  598. ModelAndView mv = new ModelAndView("pts/machine/addRenovationMachine");
  599. //查询所有产品
  600. List<Produce> produceList = produceService.getProduceList();
  601. mv.addObject("produceList", produceList);
  602. for(int i=0;i<produceList.size();i++){
  603. Integer produceId = produceList.get(i).getProduceId();
  604. PtsBatch ptsBatch = ptsBatchService.getUseBatch(produceId);
  605. produceList.get(i).setPtsBatch(ptsBatch);
  606. }
  607. return mv;
  608. }
  609. /**
  610. * 根据产品id获取所有bom
  611. **/
  612. @ResponseBody
  613. @RequiresPermissions("machine:add:batch")
  614. @RequestMapping("/select_bom")
  615. public ResponseJson selectBatchByProduceId(HttpServletRequest request, Integer batchId) {
  616. ResponseJson rj = new ResponseJson();
  617. if (batchId == null || batchId.equals("")) {
  618. rj.setReturnCode(500);
  619. return rj;
  620. }
  621. PtsBatch ptsBatch = new PtsBatch();
  622. ptsBatch.setBatchId(batchId);
  623. ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
  624. PtsBom ptsBom = new PtsBom();
  625. ptsBom.setBomId(ptsBatch.getBomId());
  626. List<PtsBom> listBom = ptsBomService.listBom(ptsBom);
  627. rj.addResponseKeyValue("listBom", listBom);
  628. rj.setReturnCode(200);
  629. return rj;
  630. }
  631. /**
  632. * 添加翻新机
  633. **/
  634. @ResponseBody
  635. @RequiresPermissions("machine:add:batch")
  636. @RequestMapping("/add_renovationMachine")
  637. public ResponseJson addRenovationMachine(HttpServletRequest request, Integer batchId, Integer number,Integer isRefurbishment,String machineLine) {
  638. ResponseJson rj = new ResponseJson();
  639. if (batchId == null || isRefurbishment == null || machineLine == null ) {
  640. rj.setReturnCode(500);
  641. return rj;
  642. }
  643. PtsBatch ptsBatch = new PtsBatch();
  644. ptsBatch.setBatchId(batchId);
  645. ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
  646. Produce produce = new Produce();
  647. produce.setProduceId(ptsBatch.getProduceId());
  648. produce = produceService.getProduce(produce);
  649. Integer productId = produce.getProduceId();
  650. Integer productType = produce.getProduceType();
  651. Integer bomId = ptsBatch.getBomId();
  652. PtsBom ptsBom = new PtsBom();
  653. ptsBom.setBomId(bomId);
  654. ptsBom = ptsBomService.getPtsBom(ptsBom);
  655. if (number == null || number < 1) {
  656. number = ptsBatch.getBatchQuantity();
  657. }
  658. ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
  659. //生成条形码前缀
  660. String berQrcode = generationBarCode(produce);
  661. //获取当前月机器总数
  662. java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
  663. java.util.Date currTime = new java.util.Date();
  664. String curTime = formatter.format(currTime);
  665. Integer machineNumber = machineService.selectMonthCount(curTime,productId);
  666. Calendar nowDate = Calendar.getInstance();
  667. Integer year = nowDate.get(Calendar.YEAR);
  668. Integer month = nowDate.get(Calendar.MONTH) + 1;
  669. String num = null;
  670. for (int i = 0; i < number; i++) {
  671. machineNumber++;
  672. String qrCodeUrl = null;
  673. //判断机器是水机or牙刷
  674. if(productType == 3){
  675. switch (String.valueOf(machineNumber).length()) {
  676. case 0:
  677. num = "00001";
  678. break;
  679. case 1:
  680. num = "0000" + String.valueOf(machineNumber);
  681. break;
  682. case 2:
  683. num = "000" + String.valueOf(machineNumber);
  684. break;
  685. case 3:
  686. num = "00" + String.valueOf(machineNumber);
  687. break;
  688. case 4:
  689. num = "0" + String.valueOf(machineNumber);
  690. break;
  691. case 5:
  692. num = String.valueOf(machineNumber);
  693. break;
  694. }
  695. //获取项目地址
  696. WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
  697. ServletContext servletContext = webApplicationContext.getServletContext();
  698. String realPath = servletContext.getRealPath(ResultInfo.QRCODE_TOOTH_IMAGE);
  699. try {
  700. QrCodeUtil.createQrCode(scanningQrCode+berQrcode+num,realPath+"/"+berQrcode+num+".",430,430);
  701. StringBuffer url = request.getRequestURL();
  702. //String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getContextPath()).append("/").toString();
  703. String tempContextUrl = ResultInfo.ROOT_DIRECTORY;
  704. qrCodeUrl = tempContextUrl +ResultInfo.QRCODE_TOOTH_IMAGE+ "/"+berQrcode+num+".png";
  705. }catch (Exception e){
  706. e.printStackTrace();
  707. }
  708. }else{
  709. switch (String.valueOf(machineNumber).length()) {
  710. case 0:
  711. num = "0001";
  712. break;
  713. case 1:
  714. num = "000" + String.valueOf(machineNumber);
  715. break;
  716. case 2:
  717. num = "00" + String.valueOf(machineNumber);
  718. break;
  719. case 3:
  720. num = "0" + String.valueOf(machineNumber);
  721. break;
  722. case 4:
  723. num = String.valueOf(machineNumber);
  724. break;
  725. }
  726. /*获取公众号信息*/
  727. WechatMp wechatMp = produceService.getWechatMpById(produce.getWechatMpId());
  728. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode + num);
  729. QRCJson qrc = WeixinUtil.createQrcodeByWechatMp(json,wechatMp.getWechatMpAppid(),wechatMp.getWechatMpAppsecret(),wechatMp.getWechatMpPubno());
  730. qrCodeUrl = qrc.getUrl();
  731. }
  732. PtsMachine ptsMachine = new PtsMachine();
  733. ptsMachine.setMachineQrcode(qrCodeUrl);//二维码
  734. ptsMachine.setMachineBarcode(berQrcode + num);//条形码
  735. ptsMachine.setMachineStatus(1);//机器状态
  736. ptsMachine.setMachineProducedTime(new Date());//生产时间
  737. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  738. ptsMachine.setMachineCompoundImg("合成的图片url");
  739. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  740. ptsMachine.setMachineCreateTime(new Date());//创建时间
  741. ptsMachine.setMachineProduceType(productType);//产品类型
  742. ptsMachine.setMachineNfcId(productNfcId);
  743. //ptsMachine.setMachineHardwareVersion(ptsBom.getBomId());
  744. ptsMachine.setMachineSoftwareVersion(ptsBatch.getBatchSoftwareVersionId());
  745. ptsMachine.setMachineProduceId(produce.getProduceId());
  746. ptsMachine.setMachineIsRetreading(isRefurbishment);
  747. ptsMachine.setMachineBatchId(batchId);
  748. ptsMachine.setMachineBomId(bomId);
  749. ptsMachine.setMachineLine(machineLine);
  750. ptsList.add(ptsMachine);
  751. }
  752. Integer msg = machineService.addMahineBatch(ptsList);
  753. if (msg > 0) {
  754. rj.setReturnCode(200);
  755. } else {
  756. rj.setReturnCode(500);
  757. }
  758. return rj;
  759. }
  760. /**
  761. * 出库页面获取
  762. **/
  763. @RequiresPermissions("machine:delivery:machine")
  764. @RequestMapping("/to_delivery")
  765. public ModelAndView toDelivery(HttpServletRequest request) {
  766. ModelAndView modelAndView = new ModelAndView("wap/pts/machine_delivery");
  767. return modelAndView;
  768. }
  769. /**
  770. * 出库页面获取销售公司集合
  771. **/
  772. @ResponseBody
  773. @RequiresPermissions("machine:delivery:machine")
  774. @RequestMapping("/list_delivery")
  775. public ResponseJson listDelivery(HttpServletRequest request) {
  776. PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
  777. List<PtsSalesCompany> ptsSalesCompanyList = ptsSalesCompanyService.listPtsSalesCompany(ptsSalesCompany);
  778. if(ptsSalesCompanyList == null || ptsSalesCompanyList.size() < 1){
  779. ResponseJson rj = new ResponseJson(500, "未查询出销售公司,请到后台添加销售公司信息", 500);
  780. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  781. return rj;
  782. }
  783. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  784. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  785. return rj;
  786. }
  787. /**
  788. * 出库录入
  789. */
  790. @ResponseBody
  791. @RequiresPermissions("machine:delivery:machine")
  792. @RequestMapping("/machine_delivery")
  793. public ResponseJson machineDelivery(HttpServletRequest request, PtsMachine ptsMachine) {
  794. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null || ptsMachine.getMachineSalesDate() == null || ptsMachine.getMachineSalesCompanyId() == null) {
  795. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  796. rj.setResultMsg("信息不全");
  797. return rj;
  798. }
  799. PtsMachine machine = new PtsMachine();
  800. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  801. //判断机器是否已经出过库了
  802. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(machine);
  803. if(listPtsMachine != null && listPtsMachine.size() > 0){
  804. PtsMachine ma = listPtsMachine.get(0);
  805. if(ma.getMachineSalesState() == 1){
  806. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  807. rj.setResultMsg("该机器已经出库了");
  808. return rj;
  809. }
  810. }else{
  811. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  812. rj.setResultMsg("未查询到该机器");
  813. return rj;
  814. }
  815. machine.setMachineSalesDate(ptsMachine.getMachineSalesDate());
  816. machine.setMachineSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
  817. machine.setMachineSalesState(1); //设置状态为已售出
  818. int flag = machineService.updateMachineSalesInfo(machine);
  819. if(flag < 1){
  820. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  821. rj.setResultMsg("录入出库信息失败");
  822. return rj;
  823. }
  824. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  825. rj.setResultMsg("录入出库信息成功");
  826. return rj;
  827. }
  828. /**
  829. * 出库列表
  830. */
  831. @ResponseBody
  832. @RequiresPermissions("machine:delivery:machine")
  833. @RequestMapping("/to_list_delivery")
  834. public ResponseJson listDeliveryPtsMachine(HttpServletRequest request, PtsMachine ptsMachine) {
  835. ptsMachine.setMachineSalesState(1);
  836. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(ptsMachine);
  837. if(listPtsMachine == null || listPtsMachine.size() <1){
  838. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  839. rj.setResultMsg("未查询到机器信息");
  840. return rj;
  841. }
  842. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  843. rj.addResponseKeyValue("listPtsMachine",listPtsMachine);
  844. rj.setResultMsg("");
  845. return rj;
  846. }
  847. /**
  848. * 今日出库台数
  849. */
  850. @ResponseBody
  851. @RequiresPermissions("machine:delivery:machine")
  852. @RequestMapping("/delivery_desc")
  853. public ResponseJson deliveryDesc(HttpServletRequest request, PtsMachine ptsMachine) {
  854. List<Map> list = new ArrayList<Map>();
  855. //获取产品集合
  856. List<Produce> produceList = produceService.getProduceList();
  857. for(Produce produce : produceList){
  858. Map<String,Object> map = new HashMap<String,Object>();
  859. ptsMachine.setMachineProduceId(produce.getProduceId());
  860. Integer machineNumber = machineService.machineNumberWebApp(ptsMachine);
  861. map.put("name",produce.getProduceName());
  862. map.put("number",machineNumber);
  863. list.add(map);
  864. }
  865. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  866. rj.addResponseKeyValue("machineNumber",list);
  867. rj.setResultMsg("");
  868. return rj;
  869. }
  870. /**
  871. * 取消出库
  872. */
  873. @ResponseBody
  874. @RequiresPermissions("machine:delivery:machine")
  875. @RequestMapping("/cancel_warehouse")
  876. public ResponseJson cancelWarehouse(HttpServletRequest request, PtsMachine ptsMachine) {
  877. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null) {
  878. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  879. rj.setResultMsg("取消出库操作失败");
  880. return rj;
  881. }
  882. PtsMachine machine = new PtsMachine();
  883. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  884. machine.setMachineSalesDate(null);
  885. machine.setMachineSalesCompanyId(null);
  886. machine.setMachineSalesState(2); //设置状态为未售出
  887. int flag = machineService.updateMachineSalesInfo(machine);
  888. if(flag < 1){
  889. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  890. rj.setResultMsg("取消出库操作失败");
  891. return rj;
  892. }
  893. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  894. rj.setResultMsg("取消出库操作成功");
  895. return rj;
  896. }
  897. /**
  898. * 查询机器
  899. */
  900. @ResponseBody
  901. @RequiresPermissions("machine:delivery:machine")
  902. @RequestMapping("/get_machine_app")
  903. public ResponseJson getMachineApp(HttpServletRequest request, String machineQrcode) {
  904. if (machineQrcode == null || "".equals(machineQrcode)) {
  905. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  906. rj.setResultMsg("未查询到机器");
  907. return rj;
  908. }
  909. PtsMachine ptsMachine = machineService.getMachineAppByQrcode(machineQrcode);
  910. System.out.println(machineQrcode + "--" + ptsMachine.getMachineBarcode());
  911. if(ptsMachine!=null){
  912. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  913. rj.addResponseKeyValue("machineBarcode",ptsMachine.getMachineQrcode());
  914. rj.setResultMsg("查询成功");
  915. return rj;
  916. }
  917. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  918. rj.setResultMsg("未查询到机器");
  919. return rj;
  920. }
  921. @ResponseBody
  922. @RequiresPermissions("machine:select_all:machine")
  923. @RequestMapping("/select_Batch")
  924. public ResponseJson selectBatch(HttpServletRequest request,Integer productId){
  925. ResponseJson responseJson = new ResponseJson();
  926. if(productId == null){
  927. responseJson = new ResponseJson(500, "ERROR", 500);
  928. return responseJson;
  929. }
  930. PtsBatch ptsBatch = new PtsBatch();
  931. ptsBatch.setProduceId(productId);
  932. List<PtsBatch> listptsBatch = ptsBatchService.listPtsBatch(ptsBatch);
  933. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  934. rj.addResponseKeyValue("listptsBatch",listptsBatch);
  935. return rj;
  936. }
  937. }