MachineController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.iamberry.rst.controllers.pts;
  2. import com.iamberry.rst.core.pts.*;
  3. import com.iamberry.rst.core.tools.QRCJson;
  4. import com.iamberry.rst.core.tools.WeixinUtil;
  5. import com.iamberry.rst.faces.pts.*;
  6. import com.iamberry.wechat.tools.NameUtils;
  7. import com.iamberry.wechat.tools.ResponseJson;
  8. import com.iamberry.wechat.tools.ResultInfo;
  9. import net.sf.json.JSONArray;
  10. import net.sf.json.JSONObject;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.web.bind.annotation.RequestBody;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import javax.servlet.http.HttpServletRequest;
  17. import java.util.Date;
  18. import java.util.Iterator;
  19. import java.util.List;
  20. /**
  21. * Created by LJK on 2017/8/29.
  22. */
  23. @Controller
  24. @RequestMapping("/mcahine")
  25. public class MachineController {
  26. @Autowired
  27. private ProduceService produceService;
  28. @Autowired
  29. private MachineService machineService;
  30. @Autowired
  31. private DeviceService deviceService;
  32. @Autowired
  33. private PtsEmployeeService ptsEmployeeService;
  34. @Autowired
  35. private MachineLogsService machineLogsService;
  36. @ResponseBody
  37. @RequestMapping("/uploadProcessOptions")
  38. public ResponseJson uploadProcessOptions(HttpServletRequest request){
  39. ResponseJson rj = new ResponseJson();
  40. String nodeList = request.getParameter("nodeList"); //获取员工id
  41. if(nodeList == null || nodeList.equals("")){
  42. rj.setResultMsg("200");
  43. rj.setResultMsg("ERROR");
  44. return rj;
  45. }
  46. JSONObject query = JSONObject.fromObject(nodeList);
  47. Integer employeeId = query.getInt("employeeId");//员工id
  48. String produceNo = query.getString("produceId");//产品编号
  49. //生成条形码,二维码
  50. String berQrcode = String.valueOf(employeeId+new Date().getTime());
  51. String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix+berQrcode);
  52. QRCJson qrc = WeixinUtil.createQrcode(json);
  53. PtsMachine ptsMachine = new PtsMachine();
  54. if (!(qrc == null || qrc.getUrl() == null || qrc.getUrl().isEmpty())) {
  55. ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
  56. ptsMachine.setMachineBarcode(berQrcode);//条形码
  57. ptsMachine.setMachineStatus(1);//机器状态
  58. ptsMachine.setMachineProducedTime(new Date());//生产时间
  59. ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
  60. ptsMachine.setMachineCompoundImg("合成的图片url");
  61. ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
  62. ptsMachine.setMachineCreateTime(new Date());//创建时间
  63. machineService.addMachine(ptsMachine);
  64. }
  65. boolean isAbnormality = true;//状态是否异常
  66. JSONArray nodes = query.getJSONArray("nodes");//选项集合(包含一个或多个工序选项,详情见示例)
  67. PtsMachineLogs ptsMachineLogs = new PtsMachineLogs();
  68. for(int i = 0;i< nodes.size();i++){
  69. JSONObject jsonObject = nodes.getJSONObject(i);
  70. String processNo = jsonObject.getString("processId"); //工序编号
  71. String nodeNo = jsonObject.getString("nodeId"); //工序选项编号
  72. Long logsProcessTime = jsonObject.getLong("logsProcessTime"); //工序执行时间 (时间戳)
  73. Date logsProcessDate = new Date(logsProcessTime);
  74. Produce produce = produceService.getProduce(produceNo);//根据产品编号获取产品信息
  75. ProduceProcess produceProcess = produceService.getProduceProcess(produce.getProduceId(),processNo);
  76. ProcessNode processNode = produceService.getprocessNode(produceProcess.getProcessId(),nodeNo);
  77. PtsDevice ptsDevice = deviceService.getDevice(produceProcess.getDriveId());
  78. PtsEmployee ptsEmployee =ptsEmployeeService.getPtsEmployeeById(employeeId);
  79. ptsMachineLogs.setDeviceId(produceProcess.getDriveId());
  80. ptsMachineLogs.setEmployeeId(employeeId);
  81. ptsMachineLogs.setProduceId(produce.getProduceId());
  82. ptsMachineLogs.setProcessId(produceProcess.getProcessId());
  83. ptsMachineLogs.setMachineId(ptsMachine.getMachineId());
  84. ptsMachineLogs.setEmployeeName(ptsEmployee.getEmployeeName());
  85. ptsMachineLogs.setProduceName(produce.getProduceName());
  86. ptsMachineLogs.setProcessName(produceProcess.getProcessName());
  87. ptsMachineLogs.setDeviceName(ptsDevice.getDeviceName());
  88. if(i == 0){//如果当前循环的是第一条数据则排序必须是1,否则为异常
  89. if(produceProcess.getProcessSort() == 1){
  90. if(processNode.getNodeStatus() == 0){//工序选项状态为异常则机器表状态也是异常
  91. isAbnormality = false;
  92. }
  93. ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
  94. }else{
  95. ptsMachineLogs.setLogsProcessStatus(0);
  96. isAbnormality = false;
  97. }
  98. }else{//默认为正常
  99. ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
  100. }
  101. ptsMachineLogs.setLogsProcessPrompt(processNode.getNodeStatus() == 0?"检查不通过": null);
  102. ptsMachineLogs.setLogsProcessTime(logsProcessDate);
  103. ptsMachineLogs.setLogsCreateTime(new Date());
  104. //根据上一条工序选项信息判断当前工序是否正常,如果当前为修理工序则忽略,如果上一条为修理工序则查询上上一条
  105. if(i > 0){
  106. int num = 0;
  107. ProduceProcess produceProcess2 = null;//当前工序的上一条非修理工序
  108. JSONObject jsonObject2;//上一级工序信息
  109. String processNo2 = null;//上一级工序编号
  110. //先判断当前的上一次是否是修理工序,如果不是则不用执行下面的循环,否则需要循环判断
  111. jsonObject2 = nodes.getJSONObject(i-1);
  112. if(jsonObject2 != null){
  113. processNo2 = jsonObject2.getString("processId");
  114. produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2);
  115. //判断当前工序是否是修理工序,如果是,则修改上一条为次品
  116. if(produceProcess.getProcessType() == 2){
  117. ptsMachineLogs.setLogsErrorType(2);//异常类型 1:流程异常 2:次品异常
  118. ptsMachineLogs.setLogsProcessPrompt("次品异常");
  119. machineLogsService.updateMachineLogs(ptsMachineLogs);
  120. isAbnormality = false;
  121. ptsMachineLogs.setLogsId(null);
  122. ptsMachineLogs.setLogsErrorType(null);
  123. ptsMachineLogs.setLogsProcessPrompt(null);
  124. }else{
  125. //判断是否是修理工序 1:生产工序 2:修理工序
  126. if(produceProcess2.getProcessType() == 1){
  127. if(produceProcess.getProcessSort() - produceProcess2.getProcessSort() != 1){
  128. ptsMachineLogs.setLogsProcessStatus(0);
  129. ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
  130. ptsMachineLogs.setLogsProcessPrompt("流程异常");
  131. isAbnormality = false;
  132. }
  133. }else{
  134. for(int j = i-1;j<= i-1;j--){
  135. if(num == i){
  136. break;//只能循环 i 次,超出则跳出当前循环
  137. }
  138. jsonObject2 = nodes.getJSONObject(j);
  139. if(jsonObject2 != null){
  140. processNo2 = jsonObject2.getString("processId");
  141. produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2);
  142. if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
  143. if(produceProcess.getProcessSort() > produceProcess2.getProcessSort()){
  144. ptsMachineLogs.setLogsProcessStatus(0);
  145. ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
  146. ptsMachineLogs.setLogsProcessPrompt("流程异常");
  147. isAbnormality = false;
  148. }
  149. break;
  150. }
  151. }
  152. num++;
  153. }
  154. }
  155. }
  156. }
  157. }
  158. //执行添加日志操作
  159. machineLogsService.addMachineLogs(ptsMachineLogs);
  160. ptsMachineLogs.setLogsErrorType(null);//还原为默认值
  161. }
  162. //修改机器信息
  163. if(!isAbnormality){
  164. PtsMachine ptsMachine2 = new PtsMachine();
  165. ptsMachine2.setMachineId(ptsMachine.getMachineId());
  166. ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
  167. ptsMachine2.setMachineUpdateTime(new Date());
  168. machineService.updateMachine(ptsMachine2);
  169. }
  170. //截取条形码尾号(4位)
  171. rj.addResponseKeyValue("barcodeTail",berQrcode.substring(berQrcode.length()-4, berQrcode.length()));
  172. return rj;
  173. }
  174. }