Commit 089f8347 LN

接口调试修改。

1 个父辈 cd08bb20
package com.neotel.smfcore.common.bean;
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 lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Locale;
/**
* Created by sunke on 2019/12/12.
*/
@Slf4j
@Data
public class ResultBean<T> {
public static ResultBean newErrorResult(int code, String msg){
return newErrorResult(code, msg, true);
@Autowired
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();
result.setCode(code);
result.setMsg(msg);
if(writeLog){
result.setMsgKey(msgKey);
result.setMsg(messageUtils.getText(msgKey, params, new Locale(SecurityUtils.getCurrentUserLanguage()), msg));
if (writeLog) {
log.info(msg);
}
return result;
}
public static ResultBean newOkResult(String msg, Object data){
public static ResultBean newOkResult(String msgKey, 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();
result.setCode(0);
result.setMsg(msg);
result.setMsgKey(msgKey);
result.setMsg(messageUtils.getText(msgKey, new String[]{}, new Locale(SecurityUtils.getCurrentUserLanguage()), msg));
result.setData(data);
return result;
}
public static ResultBean newOkResult(Object data){
return newOkResult("ok", data);
public static ResultBean newOkResult(Object data) {
return newOkResult("smfcore.ok", "ok", data);
}
@ApiModelProperty("结果码,0为正常,其他值表示异常")
private int code;
@ApiModelProperty("提示消息国际化key")
private String msgKey;
@ApiModelProperty("提示信息")
private String msg;
......@@ -50,31 +69,9 @@ public class ResultBean<T> {
* 是否是OK的结果
*/
@JsonIgnore
public boolean isOkResult(){
public boolean isOkResult() {
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;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
......@@ -31,6 +34,8 @@ import java.util.List;
@Slf4j
public class SecurityUtils {
@Autowired
static IUserManager userManager;
/**
* 获取当前登录的用户
* @return UserDetails
......@@ -86,4 +91,13 @@ public class SecurityUtils {
JSONArray array = JSONUtil.parseArray(new JSONObject(userDetails).get("dataScopes"));
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 {
String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid);
if(storage == null){
return ResultBean.newErrorResult(-1,cid + "对应的料架不存在");
return ResultBean.newErrorResult(-1,"smfcore.shelfNotExist", "{0}对应的料架不存在",new String[]{cid} );
}
String groupId = storage.getGroupId();
String groupName = "";
......@@ -122,7 +122,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
break;
} catch (Exception 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 {
break;
} catch (Exception 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 {
continue;
}
//超过10分钟未更新为异常
if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) {
normal++;
} else if (data.isAbnormal()) {
// if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) {
if (data.isAbnormal() ) {
abnormal++;
} else {
normal++;
}
allcount++;
}
......@@ -172,30 +173,33 @@ public class BoxKanbanController {
return kanbanDto;
}
private BoxStatusDto getBoxDto(Storage storage,List<DataLog> allTasks){
int inTask=0;
int outTask=0;
private BoxStatusDto getBoxDto(Storage storage,List<DataLog> allTasks) {
int inTask = 0;
int outTask = 0;
for (DataLog data : allTasks) {
if(data.getStorageId().equals(storage.getId())){
if(data.getType()==1){
if (data.getStorageId().equals(storage.getId())) {
if (data.getType() == 1) {
inTask++;
}else if(data.getType()==2){
} else if (data.getType() == 2) {
outTask++;
}
}
}
int allCount=inTask+outTask;
BoxStatusDto boxDto=new BoxStatusDto(storage.getId(),storage.getCid(),storage.getName(),false,0,
"11.11","22.22","",allCount,inTask,outTask,
1,OP_STATUS.EXECUTING.toString(),"库位号","条码","PN","工单名称");
int allCount = inTask + outTask;
BoxStatusDto boxDto = new BoxStatusDto(storage.getId(), storage.getCid(), storage.getName(), false, 0,
"11.11", "22.22", "", allCount, inTask, outTask,
1, OP_STATUS.EXECUTING.toString(), "库位号", "条码", "PN", "工单名称");
//获取设备状态,设置状态和当前任务信息
StatusBean bean= DevicesStatusUtil.getStatusBean(storage.getCid());
if(bean==null||bean.getBoxStatus()==null){
StatusBean bean = DevicesStatusUtil.getStatusBean(storage.getCid());
if (bean == null || bean.getBoxStatus() == null) {
boxDto.setOnLine(false);
}else {
} else {
if (bean.timeOut()) {
boxDto.setOnLine(false);
} else {
boxDto.setOnLine(true);
}
for (BoxStatusBean boxStatus : bean.getBoxStatus().values()) {
String humidity = boxStatus.getHumidity();
String temperature = boxStatus.getTemperature();
......
......@@ -106,9 +106,9 @@ public class LiteOrderCache implements ITaskListener {
liteOrder = liteOrderManager.save(liteOrder);
liteOrderMap.put(liteOrder.getOrderNo(),liteOrder);
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;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.PageData;
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.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
......@@ -20,12 +22,15 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Calendar;
import java.util.List;
import java.util.Set;
......@@ -74,11 +79,42 @@ public class TaskController {
@ApiOperation("获取队列中的任务")
@GetMapping
@PreAuthorize("@el.check('task:inQueue','task:list')")
public PageData<TaskDto> filterTask(String groupId, String[] cids){
List<TaskDto> taskDtos= getTaskList(groupId,cids);
return new PageData<TaskDto>(taskDtos,taskDtos.size());
public PageData<TaskDto> filterTask(TaskQueryCondition criteria, Pageable pageable){
if(ObjectUtils.isEmpty(criteria.getGroupId())){
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){
List<DataLog> resultTasks = Lists.newArrayList();
List<DataLog> allTasks = taskService.getAllTasks();
......
......@@ -34,4 +34,10 @@ public class TaskQueryCondition {
@QueryCondition
@ApiModelProperty("料仓Id")
private String storageId;
@ApiModelProperty("分组ID")
private String groupId;
@ApiModelProperty("CID数组")
private String[] cids;
}
......@@ -50,7 +50,7 @@ public class DataLogManagerImpl implements IDataLogManager {
}
@Override
public List<DataLog> findUnFinishedTasks() {
public List<DataLog> findUnFinishedTasks( ) {
Criteria c = Criteria.where("status").nin(OP_STATUS.FINISHED.name(),OP_STATUS.CANCEL.name());
//只查找近12个小时未完成的任务
Calendar calendar = Calendar.getInstance();
......
......@@ -328,11 +328,11 @@ public class DataLog extends BasePo implements Serializable {
* 判断任务是否异常,执行中,且10分钟未更新的认为异常
*/
public boolean isAbnormal(){
if(isExecuting() ){
// if(isExecuting() ){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 10 * 60 * 1000){
return true;
}
}
// }
return false;
}
}
......@@ -166,10 +166,10 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
String groupId = requestCommand.getGroupId();
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);
}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);
}
commandMap.remove(respCommand.getEventId());
......@@ -329,7 +329,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
groupMsg.put(groupId,okResult);
}else{
//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);
}
commandMap.remove(respCommand.getEventId());
......
......@@ -158,7 +158,7 @@ public class HellaTcpClient {
theSession.write("\02"+msg);
return ResultBean.newOkResult("");
}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
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
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
smfcode.columnNotExist=\u5FC5\u987B\u5305\u542B[{0}\u5217
smfcore.conotUpdate=\u7528\u6237\u540Dadmin\u4E0D\u80FD\u4FEE\u6539
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!