AdminMachineController.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845
  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 + num);
  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 number,Integer isRefurbishment,String machineLine) {
  563. ResponseJson rj = new ResponseJson();
  564. if (batchId == 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. Integer bomId = ptsBatch.getBomId();
  575. PtsBom ptsBom = new PtsBom();
  576. ptsBom.setBomId(bomId);
  577. ptsBom = ptsBomService.getPtsBom(ptsBom);
  578. if (number == null || number < 1) {
  579. number = ptsBatch.getBatchQuantity();
  580. }
  581. /*获取公众号信息*/
  582. WechatMp wechatMp = produceService.getWechatMpById(produce.getWechatMpId());
  583. ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
  584. //生成条形码前缀
  585. String berQrcode = generationBarCode(produce);
  586. //获取当前月机器总数
  587. java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
  588. java.util.Date currTime = new java.util.Date();
  589. String curTime = formatter.format(currTime);
  590. Integer machineNumber = machineService.selectMonthCount(curTime);
  591. String num = null;
  592. for (int i = 0; i < number; i++) {
  593. machineNumber++;
  594. switch (String.valueOf(machineNumber).length()) {
  595. case 0:
  596. num = "0001";
  597. break;
  598. case 1:
  599. num = "000" + String.valueOf(machineNumber);
  600. break;
  601. case 2:
  602. num = "00" + String.valueOf(machineNumber);
  603. break;
  604. case 3:
  605. num = "0" + String.valueOf(machineNumber);
  606. break;
  607. case 4:
  608. num = String.valueOf(machineNumber);
  609. break;
  610. }
  611. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode + num);
  612. QRCJson qrc = WeixinUtil.createQrcodeByWechatMp(json,wechatMp.getWechatMpAppid(),wechatMp.getWechatMpAppsecret(),wechatMp.getWechatMpPubno());
  613. PtsMachine ptsMachine = new PtsMachine();
  614. ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
  615. ptsMachine.setMachineBarcode(berQrcode + num);//条形码
  616. ptsMachine.setMachineStatus(1);//机器状态
  617. ptsMachine.setMachineProducedTime(new Date());//生产时间
  618. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  619. ptsMachine.setMachineCompoundImg("合成的图片url");
  620. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  621. ptsMachine.setMachineCreateTime(new Date());//创建时间
  622. ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
  623. ptsMachine.setMachineNfcId(productNfcId);
  624. //ptsMachine.setMachineHardwareVersion(ptsBom.getBomId());
  625. ptsMachine.setMachineSoftwareVersion(ptsBatch.getBatchSoftwareVersionId());
  626. ptsMachine.setMachineProduceId(produce.getProduceId());
  627. ptsMachine.setMachineIsRetreading(isRefurbishment);
  628. ptsMachine.setMachineBatchId(batchId);
  629. ptsMachine.setMachineBomId(bomId);
  630. ptsMachine.setMachineLine(machineLine);
  631. ptsList.add(ptsMachine);
  632. }
  633. Integer msg = machineService.addMahineBatch(ptsList);
  634. if (msg > 0) {
  635. rj.setReturnCode(200);
  636. } else {
  637. rj.setReturnCode(500);
  638. }
  639. return rj;
  640. }
  641. /**
  642. * 出库页面获取
  643. **/
  644. @RequiresPermissions("machine:delivery:machine")
  645. @RequestMapping("/to_delivery")
  646. public ModelAndView toDelivery(HttpServletRequest request) {
  647. ModelAndView modelAndView = new ModelAndView("wap/pts/machine_delivery");
  648. return modelAndView;
  649. }
  650. /**
  651. * 出库页面获取销售公司集合
  652. **/
  653. @ResponseBody
  654. @RequiresPermissions("machine:delivery:machine")
  655. @RequestMapping("/list_delivery")
  656. public ResponseJson listDelivery(HttpServletRequest request) {
  657. PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
  658. List<PtsSalesCompany> ptsSalesCompanyList = ptsSalesCompanyService.listPtsSalesCompany(ptsSalesCompany);
  659. if(ptsSalesCompanyList == null || ptsSalesCompanyList.size() < 1){
  660. ResponseJson rj = new ResponseJson(500, "未查询出销售公司,请到后台添加销售公司信息", 500);
  661. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  662. return rj;
  663. }
  664. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  665. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  666. return rj;
  667. }
  668. /**
  669. * 出库录入
  670. */
  671. @ResponseBody
  672. @RequiresPermissions("machine:delivery:machine")
  673. @RequestMapping("/machine_delivery")
  674. public ResponseJson machineDelivery(HttpServletRequest request, PtsMachine ptsMachine) {
  675. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null || ptsMachine.getMachineSalesDate() == null || ptsMachine.getMachineSalesCompanyId() == null) {
  676. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  677. rj.setResultMsg("信息不全");
  678. return rj;
  679. }
  680. PtsMachine machine = new PtsMachine();
  681. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  682. //判断机器是否已经出过库了
  683. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(machine);
  684. if(listPtsMachine != null && listPtsMachine.size() > 0){
  685. PtsMachine ma = listPtsMachine.get(0);
  686. if(ma.getMachineSalesState() == 1){
  687. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  688. rj.setResultMsg("该机器已经出库了");
  689. return rj;
  690. }
  691. }else{
  692. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  693. rj.setResultMsg("未查询到该机器");
  694. return rj;
  695. }
  696. machine.setMachineSalesDate(ptsMachine.getMachineSalesDate());
  697. machine.setMachineSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
  698. machine.setMachineSalesState(1); //设置状态为已售出
  699. int flag = machineService.updateMachineSalesInfo(machine);
  700. if(flag < 1){
  701. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  702. rj.setResultMsg("录入出库信息失败");
  703. return rj;
  704. }
  705. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  706. rj.setResultMsg("录入出库信息成功");
  707. return rj;
  708. }
  709. /**
  710. * 出库列表
  711. */
  712. @ResponseBody
  713. @RequiresPermissions("machine:delivery:machine")
  714. @RequestMapping("/to_list_delivery")
  715. public ResponseJson listDeliveryPtsMachine(HttpServletRequest request, PtsMachine ptsMachine) {
  716. ptsMachine.setMachineSalesState(1);
  717. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(ptsMachine);
  718. if(listPtsMachine == null || listPtsMachine.size() <1){
  719. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  720. rj.setResultMsg("未查询到机器信息");
  721. return rj;
  722. }
  723. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  724. rj.addResponseKeyValue("listPtsMachine",listPtsMachine);
  725. rj.setResultMsg("");
  726. return rj;
  727. }
  728. /**
  729. * 今日出库台数
  730. */
  731. @ResponseBody
  732. @RequiresPermissions("machine:delivery:machine")
  733. @RequestMapping("/delivery_desc")
  734. public ResponseJson deliveryDesc(HttpServletRequest request, PtsMachine ptsMachine) {
  735. List<Map> list = new ArrayList<Map>();
  736. //获取产品集合
  737. List<Produce> produceList = produceService.getProduceList();
  738. for(Produce produce : produceList){
  739. Map<String,Object> map = new HashMap<String,Object>();
  740. ptsMachine.setMachineProduceId(produce.getProduceId());
  741. Integer machineNumber = machineService.machineNumberWebApp(ptsMachine);
  742. map.put("name",produce.getProduceName());
  743. map.put("number",machineNumber);
  744. list.add(map);
  745. }
  746. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  747. rj.addResponseKeyValue("machineNumber",list);
  748. rj.setResultMsg("");
  749. return rj;
  750. }
  751. /**
  752. * 取消出库
  753. */
  754. @ResponseBody
  755. @RequiresPermissions("machine:delivery:machine")
  756. @RequestMapping("/cancel_warehouse")
  757. public ResponseJson cancelWarehouse(HttpServletRequest request, PtsMachine ptsMachine) {
  758. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null) {
  759. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  760. rj.setResultMsg("取消出库操作失败");
  761. return rj;
  762. }
  763. PtsMachine machine = new PtsMachine();
  764. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  765. machine.setMachineSalesDate(null);
  766. machine.setMachineSalesCompanyId(null);
  767. machine.setMachineSalesState(2); //设置状态为未售出
  768. int flag = machineService.updateMachineSalesInfo(machine);
  769. if(flag < 1){
  770. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  771. rj.setResultMsg("取消出库操作失败");
  772. return rj;
  773. }
  774. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  775. rj.setResultMsg("取消出库操作成功");
  776. return rj;
  777. }
  778. }