AdminCustomerController.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. package com.iamberry.rst.controllers.cm;
  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 AdminCustomerController {
  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. ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
  436. //生成条形码前缀
  437. String berQrcode = generationBarCode(produce);
  438. //获取当前月机器总数
  439. java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
  440. Date currTime = new Date();
  441. String curTime = formatter.format(currTime);
  442. Integer machineNumber = machineService.selectMonthCount(curTime);
  443. String num = null;
  444. for (int i = 0; i < Integer.valueOf(number); i++) {
  445. machineNumber = machineNumber + i;
  446. switch (String.valueOf(machineNumber + 1).length()) {
  447. case 0:
  448. num = "0001";
  449. break;
  450. case 1:
  451. num = "000" + String.valueOf(machineNumber);
  452. break;
  453. case 2:
  454. num = "00" + String.valueOf(machineNumber);
  455. break;
  456. case 3:
  457. num = "0" + String.valueOf(machineNumber);
  458. break;
  459. case 4:
  460. num = String.valueOf(machineNumber);
  461. break;
  462. }
  463. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode);
  464. QRCJson qrc = WeixinUtil.createQrcode(json);
  465. PtsMachine ptsMachine = new PtsMachine();
  466. ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
  467. ptsMachine.setMachineBarcode(berQrcode + num);//条形码
  468. ptsMachine.setMachineStatus(1);//机器状态
  469. ptsMachine.setMachineProducedTime(new Date());//生产时间
  470. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  471. ptsMachine.setMachineCompoundImg("合成的图片url");
  472. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  473. ptsMachine.setMachineCreateTime(new Date());//创建时间
  474. ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
  475. ptsMachine.setMachineNfcId(productNfcId);
  476. ptsMachine.setMachineHardwareVersion(Integer.valueOf(machineSoftwareVersion));
  477. ptsMachine.setMachineSoftwareVersion(Integer.valueOf(machineSoftwareVersion));
  478. ptsMachine.setMachineProduceId(Integer.valueOf(produceId));
  479. ptsMachine.setMachineIsRetreading(2);
  480. ptsList.add(ptsMachine);
  481. }
  482. Integer msg = machineService.addMahineBatch(ptsList);
  483. if (msg > 0) {
  484. rj.setReturnCode(200);
  485. } else {
  486. rj.setReturnCode(500);
  487. }
  488. return rj;
  489. }
  490. private String productModel = "1X";//产品型号
  491. private String productFeatures = "A";//产品特性
  492. private String softwareVersion = "30";//软件版本
  493. //生成条形码
  494. public String generationBarCode(Produce produce) {
  495. Calendar cal = Calendar.getInstance();
  496. int year = cal.get(Calendar.YEAR);
  497. int month = cal.get(Calendar.MONTH) + 1;
  498. String months = String.valueOf(month);
  499. if (month < 10) {
  500. months = "0" + months;
  501. }
  502. productModel = produce.getProduceModel();
  503. productFeatures = produce.getProduceFeature();
  504. //拼接
  505. String barcode = productModel + productFeatures + softwareVersion + String.valueOf(year).substring(2, 4) + months;
  506. return barcode;
  507. }
  508. /**
  509. * 进入添加翻新机界面
  510. **/
  511. @RequiresPermissions("machine:add:batch")
  512. @RequestMapping("/_to_add_renovation")
  513. public ModelAndView toAddRenovationMachine() {
  514. ModelAndView mv = new ModelAndView("pts/machine/addRenovationMachine");
  515. //查询所有状态为可用的批次
  516. List<PtsBatch> listptsBatch = ptsBatchService.listPtsBatchByStatus();
  517. mv.addObject("listptsBatch", listptsBatch);
  518. //查询所有软件版本
  519. PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
  520. ptsMachineVersion.setMachineVersionType(1);
  521. List<PtsMachineVersion> ListVersion = machineVersionService.listMachineVersion(ptsMachineVersion);
  522. mv.addObject("listVersion", ListVersion);
  523. //根据第一个批次查询所有bom
  524. if (listptsBatch.size() > 0) {
  525. PtsBom ptsBom = new PtsBom();
  526. ptsBom.setBomId(listptsBatch.get(0).getBomId());
  527. List<PtsBom> listBom = ptsBomService.listBom(ptsBom);
  528. mv.addObject("listBom", listBom);
  529. }
  530. return mv;
  531. }
  532. /**
  533. * 根据产品id获取所有bom
  534. **/
  535. @ResponseBody
  536. @RequiresPermissions("machine:add:batch")
  537. @RequestMapping("/select_bom")
  538. public ResponseJson selectBatchByProduceId(HttpServletRequest request, Integer batchId) {
  539. ResponseJson rj = new ResponseJson();
  540. if (batchId == null || batchId.equals("")) {
  541. rj.setReturnCode(500);
  542. return rj;
  543. }
  544. PtsBatch ptsBatch = new PtsBatch();
  545. ptsBatch.setBatchId(batchId);
  546. ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
  547. PtsBom ptsBom = new PtsBom();
  548. ptsBom.setBomId(ptsBatch.getBomId());
  549. List<PtsBom> listBom = ptsBomService.listBom(ptsBom);
  550. rj.addResponseKeyValue("listBom", listBom);
  551. rj.setReturnCode(200);
  552. return rj;
  553. }
  554. /**
  555. * 添加翻新机
  556. **/
  557. @ResponseBody
  558. @RequiresPermissions("machine:add:batch")
  559. @RequestMapping("/add_renovationMachine")
  560. public ResponseJson addRenovationMachine(HttpServletRequest request, Integer batchId, Integer versionId, Integer bomId, Integer number,Integer isRefurbishment,String machineLine) {
  561. ResponseJson rj = new ResponseJson();
  562. if (batchId == null || versionId == null || bomId == null || isRefurbishment == null || machineLine == null) {
  563. rj.setReturnCode(500);
  564. return rj;
  565. }
  566. PtsBatch ptsBatch = new PtsBatch();
  567. ptsBatch.setBatchId(batchId);
  568. ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
  569. Produce produce = new Produce();
  570. produce.setProduceId(ptsBatch.getProduceId());
  571. produce = produceService.getProduce(produce);
  572. PtsBom ptsBom = new PtsBom();
  573. ptsBom.setBomId(bomId);
  574. ptsBom = ptsBomService.getPtsBom(ptsBom);
  575. if (number == null || number < 1) {
  576. number = ptsBatch.getBatchQuantity();
  577. }
  578. ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
  579. //生成条形码前缀
  580. String berQrcode = generationBarCode(produce);
  581. //获取当前月机器总数
  582. java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
  583. Date currTime = new Date();
  584. String curTime = formatter.format(currTime);
  585. Integer machineNumber = machineService.selectMonthCount(curTime);
  586. String num = null;
  587. for (int i = 0; i < number; i++) {
  588. machineNumber++;
  589. switch (String.valueOf(machineNumber).length()) {
  590. case 0:
  591. num = "0001";
  592. break;
  593. case 1:
  594. num = "000" + String.valueOf(machineNumber);
  595. break;
  596. case 2:
  597. num = "00" + String.valueOf(machineNumber);
  598. break;
  599. case 3:
  600. num = "0" + String.valueOf(machineNumber);
  601. break;
  602. case 4:
  603. num = String.valueOf(machineNumber);
  604. break;
  605. }
  606. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode);
  607. QRCJson qrc = WeixinUtil.createQrcode(json);
  608. PtsMachine ptsMachine = new PtsMachine();
  609. ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
  610. ptsMachine.setMachineBarcode(berQrcode + num);//条形码
  611. ptsMachine.setMachineStatus(1);//机器状态
  612. ptsMachine.setMachineProducedTime(new Date());//生产时间
  613. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  614. ptsMachine.setMachineCompoundImg("合成的图片url");
  615. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  616. ptsMachine.setMachineCreateTime(new Date());//创建时间
  617. ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
  618. ptsMachine.setMachineNfcId(productNfcId);
  619. //ptsMachine.setMachineHardwareVersion(ptsBom.getBomId());
  620. ptsMachine.setMachineSoftwareVersion(ptsBatch.getBatchSoftwareVersionId());
  621. ptsMachine.setMachineProduceId(produce.getProduceId());
  622. ptsMachine.setMachineIsRetreading(isRefurbishment);
  623. ptsMachine.setMachineBatchId(batchId);
  624. ptsMachine.setMachineBomId(bomId);
  625. ptsMachine.setMachineLine(machineLine);
  626. ptsList.add(ptsMachine);
  627. }
  628. Integer msg = machineService.addMahineBatch(ptsList);
  629. if (msg > 0) {
  630. rj.setReturnCode(200);
  631. } else {
  632. rj.setReturnCode(500);
  633. }
  634. return rj;
  635. }
  636. /**
  637. * 出库页面获取
  638. **/
  639. @RequiresPermissions("machine:delivery:machine")
  640. @RequestMapping("/to_delivery")
  641. public ModelAndView toDelivery(HttpServletRequest request) {
  642. ModelAndView modelAndView = new ModelAndView("wap/pts/machine_delivery");
  643. return modelAndView;
  644. }
  645. /**
  646. * 出库页面获取销售公司集合
  647. **/
  648. @ResponseBody
  649. @RequiresPermissions("machine:delivery:machine")
  650. @RequestMapping("/list_delivery")
  651. public ResponseJson listDelivery(HttpServletRequest request) {
  652. PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
  653. List<PtsSalesCompany> ptsSalesCompanyList = ptsSalesCompanyService.listPtsSalesCompany(ptsSalesCompany);
  654. if(ptsSalesCompanyList == null || ptsSalesCompanyList.size() < 1){
  655. ResponseJson rj = new ResponseJson(500, "未查询出销售公司,请到后台添加销售公司信息", 500);
  656. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  657. return rj;
  658. }
  659. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  660. rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
  661. return rj;
  662. }
  663. /**
  664. * 出库录入
  665. */
  666. @ResponseBody
  667. @RequiresPermissions("machine:delivery:machine")
  668. @RequestMapping("/machine_delivery")
  669. public ResponseJson machineDelivery(HttpServletRequest request, PtsMachine ptsMachine) {
  670. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null || ptsMachine.getMachineSalesDate() == null || ptsMachine.getMachineSalesCompanyId() == null) {
  671. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  672. rj.setResultMsg("信息不全");
  673. return rj;
  674. }
  675. PtsMachine machine = new PtsMachine();
  676. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  677. //判断机器是否已经出过库了
  678. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(machine);
  679. if(listPtsMachine != null && listPtsMachine.size() > 0){
  680. PtsMachine ma = listPtsMachine.get(0);
  681. if(ma.getMachineSalesState() == 1){
  682. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  683. rj.setResultMsg("该机器已经出库了");
  684. return rj;
  685. }
  686. }else{
  687. ResponseJson rj = new ResponseJson(501, "ERROR", 501);
  688. rj.setResultMsg("未查询到该机器");
  689. return rj;
  690. }
  691. machine.setMachineSalesDate(ptsMachine.getMachineSalesDate());
  692. machine.setMachineSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
  693. machine.setMachineSalesState(1); //设置状态为已售出
  694. int flag = machineService.updateMachineSalesInfo(machine);
  695. if(flag < 1){
  696. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  697. rj.setResultMsg("录入出库信息失败");
  698. return rj;
  699. }
  700. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  701. rj.setResultMsg("录入出库信息成功");
  702. return rj;
  703. }
  704. /**
  705. * 出库列表
  706. */
  707. @ResponseBody
  708. @RequiresPermissions("machine:delivery:machine")
  709. @RequestMapping("/to_list_delivery")
  710. public ResponseJson listDeliveryPtsMachine(HttpServletRequest request, PtsMachine ptsMachine) {
  711. ptsMachine.setMachineSalesState(1);
  712. List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(ptsMachine);
  713. if(listPtsMachine == null || listPtsMachine.size() <1){
  714. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  715. rj.setResultMsg("未查询到机器信息");
  716. return rj;
  717. }
  718. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  719. rj.addResponseKeyValue("listPtsMachine",listPtsMachine);
  720. rj.setResultMsg("");
  721. return rj;
  722. }
  723. /**
  724. * 今日出库台数
  725. */
  726. @ResponseBody
  727. @RequiresPermissions("machine:delivery:machine")
  728. @RequestMapping("/delivery_desc")
  729. public ResponseJson deliveryDesc(HttpServletRequest request, PtsMachine ptsMachine) {
  730. List<Map> list = new ArrayList<Map>();
  731. //获取产品集合
  732. List<Produce> produceList = produceService.getProduceList();
  733. for(Produce produce : produceList){
  734. Map<String,Object> map = new HashMap<String,Object>();
  735. ptsMachine.setMachineProduceId(produce.getProduceId());
  736. Integer machineNumber = machineService.machineNumberWebApp(ptsMachine);
  737. map.put("name",produce.getProduceName());
  738. map.put("number",machineNumber);
  739. list.add(map);
  740. }
  741. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  742. rj.addResponseKeyValue("machineNumber",list);
  743. rj.setResultMsg("");
  744. return rj;
  745. }
  746. /**
  747. * 取消出库
  748. */
  749. @ResponseBody
  750. @RequiresPermissions("machine:delivery:machine")
  751. @RequestMapping("/cancel_warehouse")
  752. public ResponseJson cancelWarehouse(HttpServletRequest request, PtsMachine ptsMachine) {
  753. if (ptsMachine == null || ptsMachine.getMachineBarcode() == null) {
  754. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  755. rj.setResultMsg("取消出库操作失败");
  756. return rj;
  757. }
  758. PtsMachine machine = new PtsMachine();
  759. machine.setMachineBarcode(ptsMachine.getMachineBarcode());
  760. machine.setMachineSalesDate(null);
  761. machine.setMachineSalesCompanyId(null);
  762. machine.setMachineSalesState(2); //设置状态为未售出
  763. int flag = machineService.updateMachineSalesInfo(machine);
  764. if(flag < 1){
  765. ResponseJson rj = new ResponseJson(500, "ERROR", 500);
  766. rj.setResultMsg("取消出库操作失败");
  767. return rj;
  768. }
  769. ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
  770. rj.setResultMsg("取消出库操作成功");
  771. return rj;
  772. }
  773. }