AdminMachineController.java 35 KB

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