|
@@ -11,17 +11,13 @@ 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.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by LJK on 2017/8/29.
|
|
@@ -49,10 +45,10 @@ public class MachineController {
|
|
|
|
|
|
@ResponseBody
|
|
|
@RequestMapping("/uploadProcessOptions")
|
|
|
- public ResponseJson uploadProcessOptions(HttpServletRequest request){
|
|
|
+ public ResponseJson uploadProcessOptions(HttpServletRequest request) {
|
|
|
ResponseJson rj = new ResponseJson();
|
|
|
String nodeList = request.getParameter("nodeList"); //获取员工id
|
|
|
- if(nodeList == null || nodeList.equals("")){
|
|
|
+ if (nodeList == null || nodeList.equals("")) {
|
|
|
rj.setResultCode(500);
|
|
|
rj.setResultMsg("200");
|
|
|
rj.setResultMsg("ERROR");
|
|
@@ -72,7 +68,7 @@ public class MachineController {
|
|
|
machine.setMachineNfcId(nfcId);
|
|
|
machine.setMachineCreateTime(ProcessDate);
|
|
|
Integer ishave = machineService.getMachineIsHave(machine);
|
|
|
- if(ishave > 0){
|
|
|
+ if (ishave > 0) {
|
|
|
rj.setResultCode(500);
|
|
|
rj.setResultMsg("500");
|
|
|
rj.setResultMsg("此卡片内容已生成二维码");
|
|
@@ -83,20 +79,21 @@ public class MachineController {
|
|
|
/*根据员工id,获取拉线,再将拉线存入机器表 */
|
|
|
PtsEmployee employee = new PtsEmployee();
|
|
|
employee.setEmployeeId(employeeId);
|
|
|
- employee = ptsEmployeeService.getPtsEmployee(employee);
|
|
|
+ employee = ptsEmployeeService.getPtsEmployeeWebApp(employee);
|
|
|
String employeeLine = employee.getEmployeeLine();
|
|
|
/*获取当前产品使用的批次 */
|
|
|
- PtsBatch ptsBatch = ptsBatchService.getUseBatch(produce.getProduceId());
|
|
|
- if(ptsBatch == null){
|
|
|
+ PtsBatch ptsBatch = ptsBatchService.getUseBatch(produce.getProduceId());
|
|
|
+ if (ptsBatch == null) {
|
|
|
rj.setResultCode(500);
|
|
|
rj.setResultMsg("500");
|
|
|
- rj.setResultMsg("系统中没有该产品正在使用的批次");
|
|
|
+ rj.setResultMsg("系统中没有该产品正在使用的批次,请到管理平台完善");
|
|
|
return rj;
|
|
|
}
|
|
|
|
|
|
//生成条形码,二维码
|
|
|
String berQrcode = generationBarCode(produce);
|
|
|
- String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix+berQrcode);
|
|
|
+ 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())) {
|
|
@@ -123,118 +120,143 @@ public class MachineController {
|
|
|
}
|
|
|
boolean isAbnormality = true;//状态是否异常
|
|
|
|
|
|
- PtsMachineLogs ptsMachineLogs = new PtsMachineLogs();
|
|
|
- for(int i = 0;i< nodes.size();i++){
|
|
|
+ List<PtsMachineLogs> ptsMachineLogsList = new ArrayList<PtsMachineLogs>();
|
|
|
+ for (int i = 0; i < nodes.size(); i++) {
|
|
|
+ PtsMachineLogs ptsMachineLogs = new PtsMachineLogs();
|
|
|
+
|
|
|
JSONObject jsonObject = nodes.getJSONObject(i);
|
|
|
String processNo = jsonObject.getString("processId"); //工序编号
|
|
|
String nodeNo = jsonObject.getString("nodeId"); //工序选项编号
|
|
|
String logsProcessTime = jsonObject.getString("logsProcessTime"); //工序执行时间 (时间戳)
|
|
|
Date logsProcessDate = timeConversions(logsProcessTime);
|
|
|
- /*Date logsProcessDate = new Date(logsProcessTime);*/
|
|
|
- ProduceProcess produceProcess = produceService.getProduceProcess(produce.getProduceId(),processNo);
|
|
|
- ProcessNode processNode = produceService.getprocessNode(produceProcess.getProcessId(),nodeNo);
|
|
|
- PtsDevice ptsDevice = deviceService.getDevice(produceProcess.getDriveId());
|
|
|
- PtsEmployee ptsEmployee =ptsEmployeeService.getPtsEmployeeById(produceProcess.getEmployeeId());
|
|
|
+
|
|
|
+ ProduceProcess produceProcess = produceService.getProduceProcessAndNode(produce.getProduceId(), processNo);
|
|
|
+ ProcessNode processNode = produceService.getprocessNode(produceProcess.getProcessId(), nodeNo);
|
|
|
+ String deviceName = produceProcess.getDeviceName();
|
|
|
+ String employeeName = produceProcess.getEmployeeName();
|
|
|
+
|
|
|
+ if (deviceName == null) {
|
|
|
+ String processName = produceProcess.getProcessName();
|
|
|
+ rj.setResultCode(500);
|
|
|
+ rj.setResultMsg("500");
|
|
|
+ rj.setResultMsg("\"" + processName + "\"工序的打卡设备未完善,请到管理平台完善");
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+ if (employeeName == null) {
|
|
|
+ String processName = produceProcess.getProcessName();
|
|
|
+ rj.setResultCode(500);
|
|
|
+ rj.setResultMsg("500");
|
|
|
+ rj.setResultMsg("\"" + processName + "\"工序的员工信息未完善,请到管理平台完善");
|
|
|
+ return rj;
|
|
|
+ }
|
|
|
+
|
|
|
ptsMachineLogs.setDeviceId(produceProcess.getDriveId());
|
|
|
ptsMachineLogs.setEmployeeId(produceProcess.getEmployeeId());
|
|
|
ptsMachineLogs.setProduceId(produce.getProduceId());
|
|
|
ptsMachineLogs.setProcessId(produceProcess.getProcessId());
|
|
|
ptsMachineLogs.setMachineId(ptsMachine.getMachineId());
|
|
|
- ptsMachineLogs.setEmployeeName(ptsEmployee.getEmployeeName());
|
|
|
+ ptsMachineLogs.setEmployeeName(employeeName);
|
|
|
ptsMachineLogs.setProduceName(produce.getProduceName());
|
|
|
ptsMachineLogs.setProcessName(produceProcess.getProcessName());
|
|
|
- ptsMachineLogs.setDeviceName(ptsDevice.getDeviceName());
|
|
|
+ ptsMachineLogs.setDeviceName(deviceName);
|
|
|
ptsMachineLogs.setProcessNodeId(processNode.getNodeId());
|
|
|
ptsMachineLogs.setProcessNodeName(processNode.getNodeDes());
|
|
|
- if(i == 0){//如果当前循环的是第一条数据则排序必须是1,否则为异常
|
|
|
- if(produceProcess.getProcessSort() == 1){
|
|
|
- if(processNode.getNodeStatus() == 0){//工序选项状态为异常则机器表状态也是异常
|
|
|
+ if (i == 0) {//如果当前循环的是第一条数据则排序必须是1,否则为异常
|
|
|
+ if (produceProcess.getProcessSort() == 1) {
|
|
|
+ if (processNode.getNodeStatus() == 0) {//工序选项状态为异常则机器表状态也是异常
|
|
|
isAbnormality = false;
|
|
|
}
|
|
|
ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
ptsMachineLogs.setLogsProcessStatus(0);
|
|
|
isAbnormality = false;
|
|
|
}
|
|
|
- }else{//默认为正常
|
|
|
+ } else {//默认为正常
|
|
|
ptsMachineLogs.setLogsProcessStatus(processNode.getNodeStatus());
|
|
|
}
|
|
|
- ptsMachineLogs.setLogsProcessPrompt(processNode.getNodeStatus() == 0?"检查不通过": null);
|
|
|
+ ptsMachineLogs.setLogsProcessPrompt(processNode.getNodeStatus() == 0 ? "检查不通过" : null);
|
|
|
ptsMachineLogs.setLogsProcessTime(logsProcessDate);
|
|
|
ptsMachineLogs.setLogsCreateTime(new Date());
|
|
|
+
|
|
|
//根据上一条工序选项信息判断当前工序是否正常,如果当前为修理工序则忽略,如果上一条为修理工序则查询上上一条
|
|
|
- if(i > 0){
|
|
|
- int num = 0;
|
|
|
- ProduceProcess produceProcess2 = null;//当前工序的上一条非修理工序
|
|
|
- JSONObject jsonObject2;//上一级工序信息
|
|
|
- String processNo2 = null;//上一级工序编号
|
|
|
- //先判断当前的上一次是否是修理工序,如果不是则不用执行下面的循环,否则需要循环判断
|
|
|
- jsonObject2 = nodes.getJSONObject(i-1);
|
|
|
- if(jsonObject2 != null){
|
|
|
- processNo2 = jsonObject2.getString("processId");
|
|
|
- produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2);
|
|
|
- //判断当前工序是否是修理工序,如果是,则修改上一条为次品
|
|
|
- if(produceProcess.getProcessType() == 2){
|
|
|
- ptsMachineLogs.setLogsErrorType(2);//异常类型 1:流程异常 2:次品异常
|
|
|
- ptsMachineLogs.setLogsProcessPrompt("次品异常");
|
|
|
- machineLogsService.updateMachineLogs(ptsMachineLogs);
|
|
|
- isAbnormality = false;
|
|
|
- ptsMachineLogs.setLogsId(null);
|
|
|
- ptsMachineLogs.setLogsErrorType(null);
|
|
|
- ptsMachineLogs.setLogsProcessPrompt(null);
|
|
|
- }else{
|
|
|
- //判断是否是修理工序 1:生产工序 2:修理工序
|
|
|
- if(produceProcess2.getProcessType() == 1){
|
|
|
- if(produceProcess.getProcessSort() - produceProcess2.getProcessSort() != 1){
|
|
|
- ptsMachineLogs.setLogsProcessStatus(0);
|
|
|
- ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
|
|
|
- ptsMachineLogs.setLogsProcessPrompt("流程异常");
|
|
|
- isAbnormality = false;
|
|
|
+ if (i > 0) {
|
|
|
+ int num = 0;
|
|
|
+ ProduceProcess produceProcess2 = null;//当前工序的上一条非修理工序
|
|
|
+ JSONObject jsonObject2;//上一级工序信息
|
|
|
+ String processNo2 = null;//上一级工序编号
|
|
|
+ //先判断当前的上一次是否是修理工序,如果不是则不用执行下面的循环,否则需要循环判断
|
|
|
+ jsonObject2 = nodes.getJSONObject(i - 1);
|
|
|
+ if (jsonObject2 != null) {
|
|
|
+ processNo2 = jsonObject2.getString("processId");
|
|
|
+ produceProcess2 = produceService.getProduceProcess(produce.getProduceId(), processNo2);
|
|
|
+ //判断当前工序是否是修理工序,如果是,则修改上一条为次品
|
|
|
+ if (produceProcess.getProcessType() == 2) {
|
|
|
+ ptsMachineLogsList.get(ptsMachineLogsList.size()-1).setLogsErrorType(2); //异常类型 1:流程异常 2:次品异常
|
|
|
+ ptsMachineLogsList.get(ptsMachineLogsList.size()-1).setLogsProcessPrompt("次品异常");
|
|
|
+// ptsMachineLogs.setLogsErrorType(2);
|
|
|
+// ptsMachineLogs.setLogsProcessPrompt("次品异常");
|
|
|
+// machineLogsService.updateMachineLogs(ptsMachineLogs);
|
|
|
+ isAbnormality = false;
|
|
|
+ ptsMachineLogs.setLogsId(null);
|
|
|
+ ptsMachineLogs.setLogsErrorType(null);
|
|
|
+ ptsMachineLogs.setLogsProcessPrompt(null);
|
|
|
+ } else {
|
|
|
+ //判断是否是修理工序 1:生产工序 2:修理工序
|
|
|
+ if (produceProcess2.getProcessType() == 1) {
|
|
|
+ if (produceProcess.getProcessSort() - produceProcess2.getProcessSort() != 1) {
|
|
|
+ ptsMachineLogs.setLogsProcessStatus(0);
|
|
|
+ ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
|
|
|
+ ptsMachineLogs.setLogsProcessPrompt("流程异常");
|
|
|
+ isAbnormality = false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (int j = i - 1; j <= i - 1; j--) {
|
|
|
+ if (num == i) {
|
|
|
+ break;//只能循环 i 次,超出则跳出当前循环
|
|
|
}
|
|
|
- }else{
|
|
|
- for(int j = i-1;j<= i-1;j--){
|
|
|
- if(num == i){
|
|
|
- break;//只能循环 i 次,超出则跳出当前循环
|
|
|
- }
|
|
|
- jsonObject2 = nodes.getJSONObject(j);
|
|
|
- if(jsonObject2 != null){
|
|
|
- processNo2 = jsonObject2.getString("processId");
|
|
|
- produceProcess2 = produceService.getProduceProcess(produce.getProduceId(),processNo2);
|
|
|
- if(produceProcess2.getProcessType() == 1){//判断是否是修理工序 1:生产工序 2:修理工序
|
|
|
- if(produceProcess.getProcessSort() > produceProcess2.getProcessSort()){
|
|
|
- ptsMachineLogs.setLogsProcessStatus(0);
|
|
|
- ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
|
|
|
- ptsMachineLogs.setLogsProcessPrompt("流程异常");
|
|
|
- isAbnormality = false;
|
|
|
- }
|
|
|
- break;
|
|
|
+ jsonObject2 = nodes.getJSONObject(j);
|
|
|
+ if (jsonObject2 != null) {
|
|
|
+ processNo2 = jsonObject2.getString("processId");
|
|
|
+ produceProcess2 = produceService.getProduceProcess(produce.getProduceId(), processNo2);
|
|
|
+ if (produceProcess2.getProcessType() == 1) {//判断是否是修理工序 1:生产工序 2:修理工序
|
|
|
+ if (produceProcess.getProcessSort() > produceProcess2.getProcessSort()) {
|
|
|
+ ptsMachineLogs.setLogsProcessStatus(0);
|
|
|
+ ptsMachineLogs.setLogsErrorType(1);//异常类型 1:流程异常 2:次品异常
|
|
|
+ ptsMachineLogs.setLogsProcessPrompt("流程异常");
|
|
|
+ isAbnormality = false;
|
|
|
}
|
|
|
+ break;
|
|
|
}
|
|
|
- num++;
|
|
|
}
|
|
|
+ num++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
//执行添加日志操作
|
|
|
- machineLogsService.addMachineLogs(ptsMachineLogs);
|
|
|
+ ptsMachineLogsList.add(ptsMachineLogs);
|
|
|
ptsMachineLogs.setLogsErrorType(null);//还原为默认值
|
|
|
}
|
|
|
+ machineLogsService.addMachineLogs(ptsMachineLogsList);
|
|
|
+
|
|
|
//修改机器信息
|
|
|
- PtsMachine ptsMachine2 = new PtsMachine();
|
|
|
- ptsMachine2.setMachineId(ptsMachine.getMachineId());
|
|
|
- if(!isAbnormality){
|
|
|
- ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
|
|
|
- }
|
|
|
- ptsMachine2.setMachineUpdateTime(new Date());
|
|
|
- ptsMachine2.setMachineProduceId(produce.getProduceId());
|
|
|
- machineService.updateMachine(ptsMachine2);
|
|
|
+ PtsMachine ptsMachine2 = new PtsMachine();
|
|
|
+ ptsMachine2.setMachineId(ptsMachine.getMachineId());
|
|
|
+ if (!isAbnormality) {
|
|
|
+ ptsMachine2.setMachineProcessState(2);//2表示机器生产过程中出现异常
|
|
|
+ }
|
|
|
+ ptsMachine2.setMachineUpdateTime(new Date());
|
|
|
+ ptsMachine2.setMachineProduceId(produce.getProduceId());
|
|
|
+ machineService.updateMachine(ptsMachine2);
|
|
|
//截取条形码尾号(4位)
|
|
|
- rj.addResponseKeyValue("barcodeTail",berQrcode.substring(berQrcode.length()-4, berQrcode.length()));
|
|
|
+ rj.addResponseKeyValue("barcodeTail", berQrcode.substring(berQrcode.length() - 4, berQrcode.length()));
|
|
|
+
|
|
|
return rj;
|
|
|
}
|
|
|
- private static Date timeConversions(String time){
|
|
|
- if(time == null || time.equals("")){
|
|
|
+
|
|
|
+ private static Date timeConversions(String time) {
|
|
|
+ if (time == null || time.equals("")) {
|
|
|
return new Date();
|
|
|
}
|
|
|
//08311112
|
|
@@ -244,19 +266,16 @@ public class MachineController {
|
|
|
String sky = null;//天
|
|
|
String when = null;//时
|
|
|
String subdivision = null;//分
|
|
|
- months = time.substring(0,2);
|
|
|
- sky = time.substring(2,4);
|
|
|
- when = time.substring(4,6);
|
|
|
- subdivision = time.substring(6,8);
|
|
|
+ months = time.substring(0, 2);
|
|
|
+ sky = time.substring(2, 4);
|
|
|
+ when = time.substring(4, 6);
|
|
|
+ subdivision = time.substring(6, 8);
|
|
|
time = year + "-" + months + "-" + sky + " " + when + ":" + subdivision;
|
|
|
Date dates = new Date();
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
|
dates = sdf.parse(time);
|
|
|
- }
|
|
|
- catch (ParseException e)
|
|
|
- {
|
|
|
+ } catch (ParseException e) {
|
|
|
System.out.println(e.getMessage());
|
|
|
}
|
|
|
|
|
@@ -267,8 +286,9 @@ public class MachineController {
|
|
|
private String productModel = "1X";//产品型号
|
|
|
private String productFeatures = "A";//产品特性
|
|
|
private String softwareVersion = "30";//软件版本
|
|
|
+
|
|
|
//生成条形码
|
|
|
- public String generationBarCode(Produce produce){
|
|
|
+ public String generationBarCode(Produce produce) {
|
|
|
|
|
|
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
|
|
|
java.util.Date currTime = new java.util.Date();
|
|
@@ -278,34 +298,34 @@ public class MachineController {
|
|
|
int month = cal.get(Calendar.MONTH) + 1;
|
|
|
//获取当前月机器总数
|
|
|
Integer number = machineService.selectMonthCount(curTime);
|
|
|
- number = number+1;
|
|
|
+ number = number + 1;
|
|
|
String num = null;
|
|
|
- switch(String.valueOf(number).length()){
|
|
|
+ switch (String.valueOf(number).length()) {
|
|
|
case 0:
|
|
|
num = "0001";
|
|
|
break;
|
|
|
case 1:
|
|
|
- num = "000"+String.valueOf(number);
|
|
|
+ num = "000" + String.valueOf(number);
|
|
|
break;
|
|
|
case 2:
|
|
|
- num = "00"+String.valueOf(number);
|
|
|
+ num = "00" + String.valueOf(number);
|
|
|
break;
|
|
|
case 3:
|
|
|
- num = "0"+String.valueOf(number);
|
|
|
+ num = "0" + String.valueOf(number);
|
|
|
break;
|
|
|
case 4:
|
|
|
num = String.valueOf(number);
|
|
|
break;
|
|
|
}
|
|
|
String months = String.valueOf(month);
|
|
|
- if(month < 10){
|
|
|
- months = "0"+months;
|
|
|
+ if (month < 10) {
|
|
|
+ months = "0" + months;
|
|
|
}
|
|
|
|
|
|
productModel = produce.getProduceModel();
|
|
|
productFeatures = produce.getProduceFeature();
|
|
|
//拼接
|
|
|
- String barcode = productModel+productFeatures+softwareVersion+String.valueOf(year).substring(2,4)+months+num;
|
|
|
+ String barcode = productModel + productFeatures + softwareVersion + String.valueOf(year).substring(2, 4) + months + num;
|
|
|
return barcode;
|
|
|
}
|
|
|
}
|