package com.qianwen.mdc.controller;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.qianwen.mdc.mapper.MachiningDataNcMapper;
|
import com.qianwen.mdc.mapper.MachineMapper;
|
import com.qianwen.mdc.mapper.AccountTokenMapper;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author: tianmingqiang
|
* @date: 2021/5/19 17:08
|
* @description: mdcDataNcController
|
*/
|
@RestController
|
@CrossOrigin
|
@RequestMapping(value = "/nc", method = RequestMethod.POST)
|
public class MdcDataNcController {
|
@RequestMapping(value = "/getNCStateListBy", method = RequestMethod.POST)
|
public JSONObject getNCStateListBy(@RequestHeader(value = "mdc-token", defaultValue = "") String token,
|
HttpServletRequest request) {
|
// MdcToken mdcTokenObj = new MdcToken();
|
// mdcTokenObj.setToken(token);
|
// MdcToken mdcToken = mdcTokenMapper.selectOne(mdcTokenObj);
|
// JSONObject tokenResult = MdcTokenServiceImpl.genTokenErrMsg(mdcToken);
|
// if (tokenResult != null) {
|
// return tokenResult;
|
// }
|
// mdcToken.setExpired(MdcTokenServiceImpl.genExpiredTime());
|
// mdcTokenMapper.updateByPrimaryKeySelective(mdcToken);
|
|
JSONObject jsonResult = new JSONObject();
|
|
String startTime = request.getParameter("startTime");
|
String endTime = request.getParameter("endTime");
|
String workshop = request.getParameter("workshop");
|
String section = request.getParameter("section");
|
String key = request.getParameter("key");
|
|
List<String> keyList = JSONArray.parseArray(key).toJavaList(String.class);
|
|
String pageNo = request.getParameter("pageNo");
|
|
if ("".equals(startTime) || "".equals(endTime)) {
|
jsonResult.put("code", -1);
|
jsonResult.put("msg", "fail");
|
return jsonResult;
|
}
|
|
jsonResult.put("msg", "success");
|
jsonResult.put("code", 0);
|
|
JSONObject jsonData = new JSONObject();
|
jsonResult.put("data", jsonData);
|
|
JSONArray nameArray = new JSONArray();
|
jsonResult.put("name", nameArray);
|
|
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
int istartTime = 0, iendTime = 0;
|
try {
|
istartTime = (int) (sdf.parse(startTime).getTime()/1000);
|
iendTime = (int) (sdf.parse(endTime).getTime()/1000);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
|
List<String> machines = keyList;
|
if ((machines == null) || (machines.size() == 0)) {
|
machines = mdcMachineMapper.getByWorkshopSection(workshop, section);
|
} else {
|
workshop = null;
|
section = null;
|
}
|
List<Map<String, Object>> list = mdcDataNcMapper.getNCStateListBy(istartTime, iendTime, workshop, section, machines);
|
if ((list == null) || (list.size() <= 0)) {
|
return jsonResult;
|
}
|
|
String state, stateStart, stateEnd, name, id;
|
long lstateStart = 0, lstateEnd = 0;
|
String lastState = null, lastStateEnd = null, lastName = null;
|
JSONArray stateArray = null;
|
JSONObject stateObj = new JSONObject();
|
for (Map<String, Object> map : list) {
|
lstateStart = (int) map.get("stateStart") * 1000L;
|
lstateEnd = (int) map.get("stateEnd") * 1000L;
|
stateStart = sdf.format(new Date(lstateStart));
|
stateEnd = sdf.format(new Date(lstateEnd));
|
state = (String) map.get("state");
|
name = (String) map.get("name");
|
id = map.get("id").toString();
|
String sectionName = (String) map.get("sectionName");
|
String category = (String) map.get("category");
|
String dispName = "(" + sectionName + "-" + category + ") - " + name;
|
|
if (!name.equals(lastName)) {
|
stateArray = new JSONArray();
|
|
jsonData.put(dispName, stateArray);
|
|
nameArray.add(dispName);
|
|
lastName = name;
|
}
|
|
if (stateStart.equals(lastStateEnd) && state.equals(lastState)) {
|
stateObj.put("stateEnd", stateEnd);
|
} else {
|
stateObj = new JSONObject();
|
stateArray.add(stateObj);
|
|
stateObj.put("machId", name);
|
if (lstateStart/1000 < istartTime) {
|
stateObj.put("stateStart", startTime);
|
} else {
|
stateObj.put("stateStart", stateStart);
|
}
|
stateObj.put("stateEnd", stateEnd);
|
stateObj.put("MACH_NAME", name);
|
stateObj.put("id", id);
|
switch (state) {
|
case "IDLE":
|
stateObj.put("status", "空闲");
|
// stateObj.put("color", "#ffed21");
|
stateObj.put("color", "#ffff00");
|
break;
|
case "RUN":
|
stateObj.put("status", "运行");
|
// stateObj.put("color", "#009933");
|
stateObj.put("color", "#008000");
|
break;
|
case "ALARM":
|
stateObj.put("status", "报警");
|
// stateObj.put("color", "#990033");
|
stateObj.put("color", "#ff0000");
|
break;
|
case "NODATA":
|
stateObj.put("status", "无数据");
|
// stateObj.put("color", "#989898");
|
stateObj.put("color", "#dfdfdf");
|
break;
|
default:
|
stateObj.put("status", "停机");
|
// stateObj.put("color", "#989898");
|
stateObj.put("color", "#010101");
|
break;
|
}
|
}
|
|
lastState = state;
|
lastStateEnd = stateEnd;
|
lastName = name;
|
}
|
|
JSONArray[] stateArrays = jsonData.values().toArray(new JSONArray[0]);
|
for (JSONArray array : stateArrays) {
|
JSONObject item = (JSONObject) array.get(array.size() - 1);
|
name = item.getString("MACH_NAME");
|
id = item.getString("id");
|
stateEnd = item.getString("stateEnd");
|
try {
|
lstateEnd = sdf.parse(stateEnd).getTime();
|
} catch (ParseException ignored) {
|
}
|
if (lstateEnd/1000 > iendTime) {
|
item.put("stateEnd", endTime);
|
} else if (lstateEnd/1000 < iendTime) {
|
stateObj = new JSONObject();
|
array.add(stateObj);
|
stateObj.put("machId", name);
|
stateObj.put("stateStart", stateEnd);
|
stateObj.put("stateEnd", endTime);
|
stateObj.put("MACH_NAME", name);
|
stateObj.put("id", id);
|
stateObj.put("status", "无数据");
|
stateObj.put("color", "#dfdfdf");
|
}
|
}
|
|
return jsonResult;
|
}
|
|
@Autowired
|
private AccountTokenMapper mdcTokenMapper;
|
@Autowired
|
private MachineMapper mdcMachineMapper;
|
@Autowired
|
private MachiningDataNcMapper mdcDataNcMapper;
|
|
public final Logger logger = LoggerFactory.getLogger(getClass());
|
}
|