Commit 089f8347 LN

接口调试修改。

1 个父辈 cd08bb20
package com.neotel.smfcore.common.bean; package com.neotel.smfcore.common.bean;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.language.util.MessageUtils;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Locale;
/** /**
* Created by sunke on 2019/12/12. * Created by sunke on 2019/12/12.
*/ */
@Slf4j @Slf4j
@Data
public class ResultBean<T> { public class ResultBean<T> {
public static ResultBean newErrorResult(int code, String msg){ @Autowired
return newErrorResult(code, msg, true); private static MessageUtils messageUtils;
public static ResultBean newErrorResult(int code, String msgKey, String msg ) {
return newErrorResult(code, msgKey, msg, new String[]{},true);
}
public static ResultBean newErrorResult(int code, String msgKey, String msg,String[] params) {
return newErrorResult(code, msgKey, msg, params,true);
} }
public static ResultBean newErrorResult(int code, String msg, boolean writeLog){ public static ResultBean newErrorResult(int code, String msgKey, String msg,String[] params, boolean writeLog) {
ResultBean result = new ResultBean(); ResultBean result = new ResultBean();
result.setCode(code); result.setCode(code);
result.setMsg(msg); result.setMsgKey(msgKey);
if(writeLog){
result.setMsg(messageUtils.getText(msgKey, params, new Locale(SecurityUtils.getCurrentUserLanguage()), msg));
if (writeLog) {
log.info(msg); log.info(msg);
} }
return result; return result;
} }
public static ResultBean newOkResult(String msgKey, String msg, Object data ) {
public static ResultBean newOkResult(String msg, Object data){ return newOkResult(msgKey,msg,new String[]{},data);
}
public static ResultBean newOkResult(String msgKey, String msg,String[] params, Object data) {
ResultBean result = new ResultBean(); ResultBean result = new ResultBean();
result.setCode(0); result.setCode(0);
result.setMsg(msg); result.setMsgKey(msgKey);
result.setMsg(messageUtils.getText(msgKey, new String[]{}, new Locale(SecurityUtils.getCurrentUserLanguage()), msg));
result.setData(data); result.setData(data);
return result; return result;
} }
public static ResultBean newOkResult(Object data){ public static ResultBean newOkResult(Object data) {
return newOkResult("ok", data); return newOkResult("smfcore.ok", "ok", data);
} }
@ApiModelProperty("结果码,0为正常,其他值表示异常") @ApiModelProperty("结果码,0为正常,其他值表示异常")
private int code; private int code;
@ApiModelProperty("提示消息国际化key")
private String msgKey;
@ApiModelProperty("提示信息") @ApiModelProperty("提示信息")
private String msg; private String msg;
...@@ -50,31 +69,9 @@ public class ResultBean<T> { ...@@ -50,31 +69,9 @@ public class ResultBean<T> {
* 是否是OK的结果 * 是否是OK的结果
*/ */
@JsonIgnore @JsonIgnore
public boolean isOkResult(){ public boolean isOkResult() {
return code == 0; return code == 0;
} }
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
} }
...@@ -19,7 +19,10 @@ import cn.hutool.json.JSONArray; ...@@ -19,7 +19,10 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
...@@ -31,6 +34,8 @@ import java.util.List; ...@@ -31,6 +34,8 @@ import java.util.List;
@Slf4j @Slf4j
public class SecurityUtils { public class SecurityUtils {
@Autowired
static IUserManager userManager;
/** /**
* 获取当前登录的用户 * 获取当前登录的用户
* @return UserDetails * @return UserDetails
...@@ -86,4 +91,13 @@ public class SecurityUtils { ...@@ -86,4 +91,13 @@ public class SecurityUtils {
JSONArray array = JSONUtil.parseArray(new JSONObject(userDetails).get("dataScopes")); JSONArray array = JSONUtil.parseArray(new JSONObject(userDetails).get("dataScopes"));
return JSONUtil.toList(array,String.class); return JSONUtil.toList(array,String.class);
} }
public static String getCurrentUserLanguage() {
String userId=getCurrentUserId();
User user=userManager.get(userId);
if(user!=null){
return user.getLanguage();
}
return "zh-CN";
}
} }
...@@ -78,7 +78,7 @@ public class SensorShelfHandler extends BaseDeviceHandler { ...@@ -78,7 +78,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid); Storage storage = dataCache.getStorage(cid);
if(storage == null){ if(storage == null){
return ResultBean.newErrorResult(-1,cid + "对应的料架不存在"); return ResultBean.newErrorResult(-1,"smfcore.shelfNotExist", "{0}对应的料架不存在",new String[]{cid} );
} }
String groupId = storage.getGroupId(); String groupId = storage.getGroupId();
String groupName = ""; String groupName = "";
...@@ -122,7 +122,7 @@ public class SensorShelfHandler extends BaseDeviceHandler { ...@@ -122,7 +122,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
break; break;
} catch (Exception e) { } catch (Exception e) {
log.error("入库出错",e); log.error("入库出错",e);
return ResultBean.newErrorResult(-1,"入库出错:" + e.getMessage()); return ResultBean.newErrorResult(-1,"smfcore.inputError","入库出错:{0}" ,new String[]{ e.getMessage()});
} }
} }
} }
...@@ -149,7 +149,7 @@ public class SensorShelfHandler extends BaseDeviceHandler { ...@@ -149,7 +149,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
break; break;
} catch (Exception e) { } catch (Exception e) {
log.error("出库出错",e); log.error("出库出错",e);
return ResultBean.newErrorResult(-1,"出库出错:" + e.getMessage()); return ResultBean.newErrorResult(-1,"smfcore.checkoutError","出库出错:{0}" ,new String[]{ e.getMessage()});
} }
} }
} }
......
...@@ -161,10 +161,11 @@ public class BoxKanbanController { ...@@ -161,10 +161,11 @@ public class BoxKanbanController {
continue; continue;
} }
//超过10分钟未更新为异常 //超过10分钟未更新为异常
if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) { // if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) {
normal++; if (data.isAbnormal() ) {
} else if (data.isAbnormal()) {
abnormal++; abnormal++;
} else {
normal++;
} }
allcount++; allcount++;
} }
...@@ -172,30 +173,33 @@ public class BoxKanbanController { ...@@ -172,30 +173,33 @@ public class BoxKanbanController {
return kanbanDto; return kanbanDto;
} }
private BoxStatusDto getBoxDto(Storage storage,List<DataLog> allTasks){ private BoxStatusDto getBoxDto(Storage storage,List<DataLog> allTasks) {
int inTask=0; int inTask = 0;
int outTask=0; int outTask = 0;
for (DataLog data : allTasks) { for (DataLog data : allTasks) {
if(data.getStorageId().equals(storage.getId())){ if (data.getStorageId().equals(storage.getId())) {
if(data.getType()==1){ if (data.getType() == 1) {
inTask++; inTask++;
}else if(data.getType()==2){ } else if (data.getType() == 2) {
outTask++; outTask++;
} }
} }
} }
int allCount=inTask+outTask; int allCount = inTask + outTask;
BoxStatusDto boxDto=new BoxStatusDto(storage.getId(),storage.getCid(),storage.getName(),false,0, BoxStatusDto boxDto = new BoxStatusDto(storage.getId(), storage.getCid(), storage.getName(), false, 0,
"11.11","22.22","",allCount,inTask,outTask, "11.11", "22.22", "", allCount, inTask, outTask,
1,OP_STATUS.EXECUTING.toString(),"库位号","条码","PN","工单名称"); 1, OP_STATUS.EXECUTING.toString(), "库位号", "条码", "PN", "工单名称");
//获取设备状态,设置状态和当前任务信息 //获取设备状态,设置状态和当前任务信息
StatusBean bean= DevicesStatusUtil.getStatusBean(storage.getCid()); StatusBean bean = DevicesStatusUtil.getStatusBean(storage.getCid());
if(bean==null||bean.getBoxStatus()==null){ if (bean == null || bean.getBoxStatus() == null) {
boxDto.setOnLine(false); boxDto.setOnLine(false);
}else { } else {
if (bean.timeOut()) {
boxDto.setOnLine(true); boxDto.setOnLine(false);
} else {
boxDto.setOnLine(true);
}
for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) { for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) {
String humidity = boxStatus.getHumidity(); String humidity = boxStatus.getHumidity();
String temperature = boxStatus.getTemperature(); String temperature = boxStatus.getTemperature();
......
...@@ -106,9 +106,9 @@ public class LiteOrderCache implements ITaskListener { ...@@ -106,9 +106,9 @@ public class LiteOrderCache implements ITaskListener {
liteOrder = liteOrderManager.save(liteOrder); liteOrder = liteOrderManager.save(liteOrder);
liteOrderMap.put(liteOrder.getOrderNo(),liteOrder); liteOrderMap.put(liteOrder.getOrderNo(),liteOrder);
if (taskReelCount <= 0) { if (taskReelCount <= 0) {
return ResultBean.newErrorResult(-1,"No task in this order"); return ResultBean.newErrorResult(-1,"smfcore.notask","No task in this order");
} }
return ResultBean.newOkResult("total task is :" + taskReelCount,""); return ResultBean.newOkResult("smfcore.taskCount", "total task is :{0}",new String[]{ taskReelCount+""},"");
} }
/** /**
......
...@@ -5,7 +5,9 @@ import cn.hutool.core.util.PageUtil; ...@@ -5,7 +5,9 @@ import cn.hutool.core.util.PageUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto; import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
...@@ -20,12 +22,15 @@ import lombok.RequiredArgsConstructor; ...@@ -20,12 +22,15 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -74,11 +79,42 @@ public class TaskController { ...@@ -74,11 +79,42 @@ public class TaskController {
@ApiOperation("获取队列中的任务") @ApiOperation("获取队列中的任务")
@GetMapping @GetMapping
@PreAuthorize("@el.check('task:inQueue','task:list')") @PreAuthorize("@el.check('task:inQueue','task:list')")
public PageData<TaskDto> filterTask(String groupId, String[] cids){ public PageData<TaskDto> filterTask(TaskQueryCondition criteria, Pageable pageable){
List<TaskDto> taskDtos= getTaskList(groupId,cids); if(ObjectUtils.isEmpty(criteria.getGroupId())){
return new PageData<TaskDto>(taskDtos,taskDtos.size()); throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"groupId"} );
}
List<String> cids=getCids(criteria.getGroupId(),criteria.getCids());
Query query=new Query(Criteria.where("cid").in(cids) );
Criteria c = Criteria.where("status").nin(OP_STATUS.FINISHED.name(),OP_STATUS.CANCEL.name());
//只查找近12个小时未完成的任务
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY,-24);
c.and("createDate").gte(calendar.getTime());
query.addCriteria(c);
PageData<DataLog> taskList = dataLogManager.findByPage(query, pageable);
List<TaskDto> taskDtos=taskMapper.toDto(taskList.getContent());
return new PageData<TaskDto>(taskDtos,taskList.getTotalElements());
} }
private List<String> getCids(String groupId,String[] cids) {
List<String> cidList = Lists.newArrayList();
if (!ObjectUtils.isEmpty(cids)) {
cidList = Lists.newArrayList(cids);
}
if (!ObjectUtils.isEmpty(groupId)) {
for (Storage storage : dataCache.getAllStorage().values()) {
String storageGroupId = storage.getGroupId();
if (ObjectUtils.isEmpty(storageGroupId)) {
storageGroupId = "1";
}
if (storageGroupId != null && storageGroupId.equals(groupId)) {
cidList.add(storage.getCid());
}
}
}
return cidList;
}
private List<TaskDto> getTaskList(String groupId, String[] cids){ private List<TaskDto> getTaskList(String groupId, String[] cids){
List<DataLog> resultTasks = Lists.newArrayList(); List<DataLog> resultTasks = Lists.newArrayList();
List<DataLog> allTasks = taskService.getAllTasks(); List<DataLog> allTasks = taskService.getAllTasks();
......
...@@ -34,4 +34,10 @@ public class TaskQueryCondition { ...@@ -34,4 +34,10 @@ public class TaskQueryCondition {
@QueryCondition @QueryCondition
@ApiModelProperty("料仓Id") @ApiModelProperty("料仓Id")
private String storageId; private String storageId;
@ApiModelProperty("分组ID")
private String groupId;
@ApiModelProperty("CID数组")
private String[] cids;
} }
...@@ -50,7 +50,7 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -50,7 +50,7 @@ public class DataLogManagerImpl implements IDataLogManager {
} }
@Override @Override
public List<DataLog> findUnFinishedTasks() { public List<DataLog> findUnFinishedTasks( ) {
Criteria c = Criteria.where("status").nin(OP_STATUS.FINISHED.name(),OP_STATUS.CANCEL.name()); Criteria c = Criteria.where("status").nin(OP_STATUS.FINISHED.name(),OP_STATUS.CANCEL.name());
//只查找近12个小时未完成的任务 //只查找近12个小时未完成的任务
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
......
...@@ -328,11 +328,11 @@ public class DataLog extends BasePo implements Serializable { ...@@ -328,11 +328,11 @@ public class DataLog extends BasePo implements Serializable {
* 判断任务是否异常,执行中,且10分钟未更新的认为异常 * 判断任务是否异常,执行中,且10分钟未更新的认为异常
*/ */
public boolean isAbnormal(){ public boolean isAbnormal(){
if(isExecuting() ){ // if(isExecuting() ){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 10 * 60 * 1000){ if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 10 * 60 * 1000){
return true; return true;
} }
} // }
return false; return false;
} }
} }
...@@ -166,10 +166,10 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen ...@@ -166,10 +166,10 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
String groupId = requestCommand.getGroupId(); String groupId = requestCommand.getGroupId();
if(respCommand.isOkResp()){ if(respCommand.isOkResp()){
ResultBean okResult = ResultBean.newOkResult("loading material is finished: " + messageText); ResultBean okResult = ResultBean.newOkResult("smfcore.loadMaterialFinished","loading material is finished: {0}" ,new String[]{messageText});
groupMsg.put(groupId,okResult); groupMsg.put(groupId,okResult);
}else{ }else{
ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"loading material failed:" + messageText); ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"smfcore.loadMaterialFailed","loading material failed:{0}",new String[]{messageText} );
groupMsg.put(groupId,ngResult); groupMsg.put(groupId,ngResult);
} }
commandMap.remove(respCommand.getEventId()); commandMap.remove(respCommand.getEventId());
...@@ -329,7 +329,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen ...@@ -329,7 +329,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
groupMsg.put(groupId,okResult); groupMsg.put(groupId,okResult);
}else{ }else{
//NG,需要在界面上进行提示 //NG,需要在界面上进行提示
ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"checking material is ng:" + messageText); ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"smfcore.checkNg","checking material is ng:{0}" ,new String[]{messageText} );
groupMsg.put(groupId,ngResult); groupMsg.put(groupId,ngResult);
} }
commandMap.remove(respCommand.getEventId()); commandMap.remove(respCommand.getEventId());
......
...@@ -158,7 +158,7 @@ public class HellaTcpClient { ...@@ -158,7 +158,7 @@ public class HellaTcpClient {
theSession.write("\02"+msg); theSession.write("\02"+msg);
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
}else{ }else{
return ResultBean.newErrorResult(-1,"no connecttion"); return ResultBean.newErrorResult(-1,"smfcore.noconnecttion","no connecttion");
} }
} }
......
...@@ -50,3 +50,17 @@ smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u521 ...@@ -50,3 +50,17 @@ smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u521
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217 smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539 smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
smfcore.shelfNotExist={0}\u5BF9\u5E94\u7684\u6599\u67B6\u4E0D\u5B58\u5728
smfcore.inputError=\u5165\u5E93\u51FA\u9519:{0}
smfcore.checkoutError=\u51FA\u5E93\u51FA\u9519:{0}
smfcore.notask=No task in this order
smfcore.taskCount=total task is :{0}
smfcore.noconnecttion=no connecttion
smfcore.loadMaterialFailed=loading material failed:{0}
smfcore.checkNg=checking material is ng:{0}
smfcore.loadMaterialFinished=loading material is finished: {0}
...@@ -50,3 +50,13 @@ smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u521 ...@@ -50,3 +50,13 @@ smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u521
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217 smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539 smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F smfcore.unfinished=\u6761\u7801[{0}]\u7684\u4EFB\u52A1\u8FD8\u672A\u7ED3\u675F
smfcore.ok=ok
smfcore.shelfNotExist={0}\u5BF9\u5E94\u7684\u6599\u67B6\u4E0D\u5B58\u5728
smfcore.inputError=\u5165\u5E93\u51FA\u9519:{0}
smfcore.checkoutError=\u51FA\u5E93\u51FA\u9519:{0}
smfcore.notask=\u8BA2\u5355\u65E0\u4EFB\u52A1
smfcore.taskCount=\u4EFB\u52A1\u603B\u6570 :{0}
smfcore.noconnecttion=\u672A\u8FDE\u63A5
smfcore.loadMaterialFailed=\u8BBE\u5907\u52A0\u8F7D\u5931\u8D25:{0}
smfcore.checkNg=\u8BBE\u5907\u9A8C\u8BC1\u5931\u8D25:{0}
smfcore.loadMaterialFinished=\u8BBE\u5907\u52A0\u8F7D\u5B8C\u6210: {0}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!