123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package com.iamberry.rst.controllers.pts;
- import com.iamberry.rst.core.pts.*;
- import com.iamberry.rst.core.tools.QRCJson;
- import com.iamberry.rst.core.tools.WeixinUtil;
- import com.iamberry.rst.faces.pts.*;
- import com.iamberry.wechat.tools.NameUtils;
- import com.iamberry.wechat.tools.ResponseJson;
- import com.iamberry.wechat.tools.ResultInfo;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletRequest;
- import java.util.Date;
- import java.util.Iterator;
- import java.util.List;
- /**
- * Created by LJK on 2017/8/29.
- */
- @Controller
- @RequestMapping("/mcahine")
- public class MachineController {
- @Autowired
- private ProduceService produceService;
- @Autowired
- private MachineService machineService;
- @Autowired
- private DeviceService deviceService;
- @Autowired
- private PtsEmployeeService ptsEmployeeService;
- @Autowired
- private MachineLogsService machineLogsService;
- @ResponseBody
- @RequestMapping("/uploadProcessOptions")
- public ResponseJson uploadProcessOptions(HttpServletRequest request,@RequestBody JSONObject query){
- ResponseJson rj = new ResponseJson();
- if(query == null){
- rj.setResultMsg("200");
- rj.setResultMsg("ERROR");
- return rj;
- }
- Integer employeeId = query.getInt("employeeId");//员工id
- String produceNo = query.getString("produceId");//产品编号
- //生成条形码,二维码
- String berQrcode = String.valueOf(employeeId+new Date().getTime());
- String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix+berQrcode);
- QRCJson qrc = WeixinUtil.createQrcode(json);
- PtsMachine ptsMachine = new PtsMachine();
- if (!(qrc == null || qrc.getUrl() == null || qrc.getUrl().isEmpty())) {
- ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
- ptsMachine.setMachineBarcode(berQrcode);//条形码
- ptsMachine.setMachineStatus(1);//机器状态
- ptsMachine.setMachineProducedTime(new Date());//生产时间
- ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
- ptsMachine.setMachineCompoundImg("合成的图片url");
- ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
- ptsMachine.setMachineCreateTime(new Date());//创建时间
- machineService.addMachine(ptsMachine);
- }
- boolean isAbnormality = true;//状态是否异常
- JSONArray nodes = query.getJSONArray("nodes");//选项集合(包含一个或多个工序选项,详情见示例)
- Iterator<Object> it = nodes.iterator();
- for(int i = 0;i< nodes.size();i++){
- JSONObject jsonObject = nodes.getJSONObject(i);
- String processNo = jsonObject.getString("processId"); //工序编号
- String nodeNo = jsonObject.getString("nodeId"); //工序选项编号
- Long logsProcessTime = jsonObject.getLong("logsProcessTime"); //工序执行时间 (时间戳)
- Date logsProcessDate = new Date(logsProcessTime);
- Produce produce = produceService.getProduce(produceNo);//根据产品编号获取产品信息
- ProduceProcess produceProcess = produceService.getProduceProcess(produce.getProduceId(),processNo.charAt(0));
- ProcessNode processNode = produceService.getprocessNode(produceProcess.getProcessId(),nodeNo.charAt(0));
- PtsDevice ptsDevice = deviceService.getDevice(produceProcess.getDriveId());
- PtsEmployee ptsEmployee =ptsEmployeeService.getPtsEmployeeById(employeeId);
- PtsMachineLogs ptsMachineLogs = new PtsMachineLogs();
- ptsMachineLogs.setDeviceId(produceProcess.getDriveId());
- ptsMachineLogs.setEmployeeId(employeeId);
- ptsMachineLogs.setProduceId(produce.getProduceId());
- ptsMachineLogs.setProcessId(produceProcess.getProcessId());
- ptsMachineLogs.setMachineId(ptsMachine.getMachineId());
- ptsMachineLogs.setEmployeeName(ptsEmployee.getEmployeeName());
- ptsMachineLogs.setProduceName(produce.getProduceName());
- ptsMachineLogs.setProcessName(produceProcess.getProcessName());
- ptsMachineLogs.setDeviceName(ptsDevice.getDeviceName());
- if(i == 0){//如果当前循环的是第一条数据则排序必须是1,否则为异常
- if(produceProcess.getProcessSort() == 1){
- if(processNode.getNodeStatus() == 0){//工序选项状态为异常则机器表状态也是异常
- isAbnormality = false;
- }
- ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
- }else{
- ptsMachineLogs.setLogsProcessStatus(0);
- isAbnormality = false;
- }
- }else{//默认为正常
- ptsMachineLogs.setLogsProcessStatus(1);
- }
- ptsMachineLogs.setLogsProcessPrompt(processNode.getNodeStatus() == 0?"异常操作": null);
- ptsMachineLogs.setLogsProcessTime(logsProcessDate);
- ptsMachineLogs.setLogsCreateTime(new Date());
- //根据上一条工序选项信息判断当前工序是否正常,如果当前为修理工序则忽略,如果上一条为修理工序则查询上上一条
- if(i > 0){
- //查询出当前产品正常生产工序
- //List<ProduceProcess> ProcessList = produceService.listProduceProcess(produce.getProduceId());
- int num = 0;
- ProduceProcess produceProcess2 = null;//当前工序的上一条非修理工序
- JSONObject jsonObject2;//上一级工序信息
- String processNo2 = null;//上一级工序编号
- //先判断当前的上一次是否是修理工序,如果不是则不用执行下面的循环,否则需要循环判断
- jsonObject2 = nodes.getJSONObject(i-1);
- if(jsonObject2 != null){
- processNo2 = jsonObject.getString("processId");
- produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2.charAt(0));
- if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
- if(produceProcess.getProcessSort() - produceProcess2.getProcessSort() != 1){
- ptsMachineLogs.setLogsProcessStatus(0);
- ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
- isAbnormality = false;
- }
- }else{
- for(int j = i-1;j<= i-1;j--){
- if(num == i){
- break;//只能循环 i 次,超出则跳出当前循环
- }
- jsonObject2 = nodes.getJSONObject(j);
- if(jsonObject2 != null){
- processNo2 = jsonObject.getString("processId");
- produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2.charAt(0));
- if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
- break;
- }else{
- if(produceProcess.getProcessSort() > produceProcess2.getProcessSort()){
- ptsMachineLogs.setLogsProcessStatus(0);
- ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
- isAbnormality = false;
- }
- }
- }
- num++;
- }
- }
- }
- }
- //执行添加日志操作
- machineLogsService.addMachineLogs(ptsMachineLogs);
- }
- //修改机器信息
- if(isAbnormality){
- PtsMachine ptsMachine2 = new PtsMachine();
- ptsMachine2.setMachineId(ptsMachine.getMachineId());
- ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
- ptsMachine2.setMachineUpdateTime(new Date());
- machineService.updateMachine(ptsMachine2);
- }
- //截取条形码尾号(4位)
- rj.addResponseKeyValue("barcodeTail",berQrcode.substring(berQrcode.length()-4, berQrcode.length()));
- return rj;
- }
- }
|