Commit 03cae851 sunke

1 物料日志查询增加类型

2 料架提示消息只提示有权限的用户
3 工单查找页面增加模糊搜索
4 合单页面工单列表排序
5 UID出库页面增加唯一码搜索条件
1 个父辈 ce300d48
......@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.handler.IDeviceHandler;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
......@@ -661,7 +662,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//判断是否是工单出库
if(ObjectUtil.isNotEmpty( task.getSourceId())&&ObjectUtil.isNotEmpty(task.getSourceName())&&task.getOutType()==10){
if(ObjectUtil.isNotEmpty( task.getSourceId())&&ObjectUtil.isNotEmpty(task.getSourceName())&&task.isOrderTask()){
LiteOrder liteOrder=liteOrderCache.findOrderByNo(task.getSourceName());
LiteOrderItem item=liteOrder.getItemByPn(task.getPartNumber());
......@@ -672,7 +673,14 @@ public class BaseDeviceHandler implements IDeviceHandler {
boolean result=HikApi.scheduleTaskApi(task.getOperator(),taskInfo );
}else {
//出库完成,调用 ,7.6出库下架过账接口
boolean result = HikApi.checkOutApi(task.getOperator(), InOutApiInfo.outInfo(task.getOutType(), task.getBarcode(), task.getNum(), task.getBaseCode(), task.getLgort(),task.getSourceName()));
int outType = task.getOutType();
if(task.isOutListTask()){
//不是3线边仓间转储出库
if(outType != IN_OUT_TYPE.OUT_TRANSFER){
outType = IN_OUT_TYPE.OUT_LIST;
}
}
boolean result = HikApi.checkOutApi(task.getOperator(), InOutApiInfo.outInfo(outType, task.getBarcode(), task.getNum(), task.getBaseCode(), task.getLgort(),task.getSourceName()));
}
//从队列里面移除操作
......
......@@ -27,6 +27,8 @@ import com.neotel.smfcore.hikvision.bean.InOutApiInfo;
import com.neotel.smfcore.hikvision.bean.TransferOrderInInfo;
import com.neotel.smfcore.security.TokenProvider;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
......@@ -48,7 +50,8 @@ public class NLPShelfHandler extends BaseDeviceHandler{
private InListCache inListCache;
@Autowired
private TokenProvider tokenProvider;
private IUserManager userManager;
public NLPShelfHandler(List<IOpAuthApi> apiList) {
super(apiList);
}
......@@ -95,7 +98,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
try {
taskService.addTaskToExecute(dataLog);
} catch (Exception e) {
WebSocketServer.sendMsg(token, new SocketMsg(e.getMessage(), MsgType.INFO,"smfclient.nlp.error",new String[]{e.getMessage()}));
return ResultBean.newErrorResult(-1,"smfclient.nlp.error","入库失败:"+e.getMessage(),new String[]{e.getMessage()});
}
......@@ -141,7 +144,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
color = ORDER_COLOR.DARKGREEN;
} else {
if (ObjectUtil.isNotEmpty(queueTask.getSourceId())) {
if (queueTask.getOutType() == 10) {
if (queueTask.isOrderTask()) {
if (queueTask.isInOperate()) {
//首盘料 颜色:CYAN
//截料料 颜色:PURPLE
......@@ -258,7 +261,10 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if(hasReelPosList.length > 1){
String msg = "不可同时放入多盘物料:"+ String.join(",",hasReelPosList);
log.error(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.ERROR,"smfclient.nlp.onlyOneTray",new String[]{String.join(",",hasReelPosList)}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
SocketMsg socketMsg = new SocketMsg(notifyUsers, msg, MsgType.ERROR,"smfclient.nlp.onlyOneTray",new String[]{String.join(",",hasReelPosList)});
WebSocketServer.sendMsg("",socketMsg);
for (String posStr : hasReelPosList) {
inNgList.add(posStr);
}
......@@ -268,12 +274,16 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if(pos == null){
String msg = "未找到库位:"+String.join(",",hasReelPosList) ;
log.error(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{"",String.join(",",hasReelPosList)}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers,msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{"",String.join(",",hasReelPosList)}));
}
else if(!pos.getStorageId().equals(storage.getId())){
String msg = "["+storage.getName()+"]未找到库位:"+String.join(",",hasReelPosList) ;
log.error(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{storage.getName(),String.join(",",hasReelPosList)}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers, msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{storage.getName(),String.join(",",hasReelPosList)}));
}
//如果库位有料,直接结束
else if(pos.getBarcode()!=null) {
......@@ -304,7 +314,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
inOkList.add(hasReelPosList[0]);
String msg = queueTask.getBarcode() + "入库到" + pos.getPosName() + "成功";
log.info(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.INFO,"smfclient.nlp.inputOk",new String[]{queueTask.getBarcode(),pos.getPosName()}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers, msg, MsgType.INFO,"smfclient.nlp.inputOk",new String[]{queueTask.getBarcode(),pos.getPosName()}));
try {
//判断是否是入库单入库
......@@ -364,12 +376,16 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if(pos == null){
String msg = "未找到库位:"+String.join(",",hasReelPosList) ;
log.error(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{"",String.join(",",hasReelPosList)}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers, msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{"",String.join(",",hasReelPosList)}));
}
else if(!pos.getStorageId().equals(storage.getId())){
String msg = "["+storage.getName()+"]未找到库位:"+String.join(",",hasReelPosList) ;
log.error(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{storage.getName(),String.join(",",hasReelPosList)}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers, msg, MsgType.ERROR,"smfclient.nlp.cannotFindPos",new String[]{storage.getName(),String.join(",",hasReelPosList)}));
}else if(pos.getBarcode()==null){
log.info("料架[" + cid + "]出库库位[" + pos.getPosName() + "]已为空 ");
}else{
......@@ -383,7 +399,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
super.finishedOutPos(cid,posName);
String msg = queueTask.getBarcode()+ "从"+ posName+"出库成功,颜色["+queueTask.getLightColor()+"]";
log.info(msg);
WebSocketServer.sendMsg("",new SocketMsg(msg, MsgType.INFO,"smfclient.nlp.outputOk",new String[]{queueTask.getBarcode(),posName}));
List<String> notifyUsers = userManager.findByDeviceGroupId(storage.getGroupId());
WebSocketServer.sendMsg("",new SocketMsg(notifyUsers, msg, MsgType.INFO,"smfclient.nlp.outputOk",new String[]{queueTask.getBarcode(),posName}));
break;
} catch (Exception e) {
......
package com.neotel.smfcore.core.hik.enums;
public class IN_OUT_TYPE {
/**
* 入库类型:1=普通入库,2=并盘入库,3=截料入库,4=退料入库, 5=转储单入库
*/
/**
* 1=普通入库
*/
public static int IN_NORMAL=1;
/**
* 2=并盘入库
*/
public static int IN_MERGE=2;
/**
* 3=截料入库
*/
public static int IN_CUT=3;
/**
* 4=退料入库
*/
public static int IN_BACK=4;
/**
* 5=转储单入库
*/
public static int IN_LIST=5;
/**
* 出库类型:0普通出库,1并盘出库 ,2湿敏出库 3线边仓间转储出库 ,10=工单出库,11=补料出库
* 4,预留单出库(5转外协出库,6发运单出库,7成本中心领料)
*/
/**
* 0普通出库
*/
public static int OUT_NORMAL = 0;
/**
* 1并盘出库
*/
public static int OUT_MERGE = 1;
/**
* 2湿敏出库
*/
public static int OUT_MSL = 2;
/**
* 3线边仓间转储出库
*/
public static int OUT_BETWEEN = 3;
/**
* 4,预留单出库(5转外协出库,6发运单出库,7成本中心领料)
*/
public static int OUT_LIST = 4;
/**
* 5 转外协出库
*/
public static int OUT_TRANSFER = 5;
/**
* 6发运单出库
*/
public static int OUT_SENDER = 6;
/**
* 7成本中心领料
*/
public static int OUT_CENTRAL = 7;
/**
* 10=工单出库
*/
public static int OUT_ORDER = 10;
/**
* 11=补料出库
*/
public static int OUT_REPLE = 11;
public static String getDetailTypeStr(int detailType) {
String detailTypeStr = "";
//入库类型:1=普通入库,2=并盘入库,3=截料入库,4=退料入库, 5=转储单入库
if(detailType == 1){
detailTypeStr = "普通入库";
}else if(detailType == 2){
detailTypeStr = "并盘入库";
}else if(detailType == 3){
detailTypeStr = "截料入库";
}else if(detailType == 4){
detailTypeStr = "退料入库";
}else if(detailType == 5){
detailTypeStr = "转储单入库";
}else if(detailType == 100){
//出库类型:0普通出库,1并盘出库 ,2湿敏出库 3线边仓间转储出库 ,10=工单出库,11=补料出库
// * 4,预留单出库(5转外协出库,6发运单出库,7成本中心领料)
detailTypeStr = "普通出库";
}else if(detailType == 101){
detailTypeStr = "并盘出库";
}else if(detailType == 102){
detailTypeStr = "湿敏出库";
}else if(detailType == 103){
detailTypeStr = "线边仓间转储出库";
}else if(detailType == 104){
detailTypeStr = "预留单出库";
}else if(detailType == 105){
detailTypeStr = "转外协出库";
}else if(detailType == 106){
detailTypeStr = "发运单出库";
}else if(detailType == 107){
detailTypeStr = "成本中心领料";
}else if(detailType == 110){
detailTypeStr = "工单出库";
}else if(detailType == 111){
detailTypeStr = "补料出库";
}
return detailTypeStr;
}
}
......@@ -274,7 +274,6 @@ public class SingleInController {
Integer qty = barcode.getAmount();
String msl = barcode.getMsl();
try {
//创建入库任务,暂不指定库位
DataLog dataLog = new DataLog();
dataLog.setBarcode(reelId);
......@@ -309,7 +308,7 @@ public class SingleInController {
try {
taskService.addTaskToExecute(dataLog);
} catch (Exception e) {
WebSocketServer.sendMsg(token, new SocketMsg(e.getMessage(), MsgType.INFO, "smfclient.nlp.error", new String[]{e.getMessage()}));
return ResultBean.newErrorResult(-1,"smfclient.nlp.error","入库失败:"+e.getMessage(),new String[]{e.getMessage()});
}
......
......@@ -10,6 +10,7 @@ import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
......@@ -133,7 +134,7 @@ public class LiteOrderCache implements ITaskListener {
//只有任务完成或取消时才处理,任务未完成直接返回
if (task.isFinished() || task.isCancel()) {
//判断是否是工单任务
if(OP.CHECKOUT == task.getType()&&task.getOutType()==10){
if(task.isOrderTask()){
finishedOrderTask(task);
}
}
......@@ -564,7 +565,10 @@ public class LiteOrderCache implements ITaskListener {
task.setStatus(OP_STATUS.WAIT.name());
task.setOperator(userName);
task.setOutType(10);//工单出库类型为10
task.setOutType(IN_OUT_TYPE.OUT_ORDER);//工单出库类型为10
if(cacheOrder.isRepleOrder()){
task.setOutType(IN_OUT_TYPE.OUT_REPLE);//补料出库类型为11
}
if(jieliaoPosMap.containsKey(pos.getPosName())){
//需要截料
int count=jieliaoPosMap.get(pos.getPosName());
......
......@@ -122,8 +122,7 @@ public class OrderController {
Set<String> groupIds = user.getGroups();
List<String> excludeSources = Lists.newArrayList();
List<Group> groups = groupManager.findAll();
for (Group group :
groups) {
for (Group group : groups) {
if (groupIds.contains(group.getId())) {
continue;
}
......
......@@ -22,6 +22,9 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.websocket.MsgType;
import com.neotel.smfcore.core.system.websocket.SocketMsg;
import com.neotel.smfcore.core.system.websocket.WebSocketServer;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group;
......@@ -32,6 +35,7 @@ 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.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -142,7 +146,7 @@ public class OrderSheetController {
query.addCriteria(Criteria.where("sheetEnd").ne(true));
query.addCriteria(Criteria.where("boxInfos").ne(null));//必须绑定箱子
query.addCriteria(Criteria.where("shortageOut").ne(true));//非欠料出库
query.with(Sort.by(Sort.Direction.DESC, "updateDate"));
PageData<LiteOrder> orderList = liteOrderManager.findByPage(query, pageable);
PageData<OrderDto> resultList = orderMapper.toDto(orderList);
return resultList;
......
......@@ -12,7 +12,7 @@ import java.util.List;
@Data
public class OrderQueryCondition {
@QueryCondition(blurry = "orderNo,jobNo")
@QueryCondition(blurry = "orderNo,jobNo,workLine,wktype,baseCode,lgort")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN)
......
......@@ -103,7 +103,8 @@ public class LiteOrderManagerImpl implements ILiteOrderManager {
}
@Override
public PageData<LiteOrder> findByPage(Query query, Pageable pageable) {
public PageData<LiteOrder>
findByPage(Query query, Pageable pageable) {
int totalCount = liteOrderDao.countByQuery(query);
List<LiteOrder> list = liteOrderDao.findByQuery(query, pageable);
return new PageData<LiteOrder>(list,totalCount);
......
......@@ -7,6 +7,7 @@ import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.outList.service.manager.IOutListItemManager;
......@@ -55,7 +56,7 @@ public class OutListCache implements ITaskListener {
//只有任务完成或取消时才处理,任务未完成直接返回
if (task.isFinished() || task.isCancel()) {
//判断是否是转储单任务
if(OP.CHECKOUT == task.getType()&&(task.getOutType()==3||task.getOutType()==4)) {
if(task.isOutListTask()) {
finishedOrderTask(task);
}
}
......@@ -321,12 +322,18 @@ public class OutListCache implements ITaskListener {
task.setStatus(OP_STATUS.WAIT.name());
//判断出库类型
if(outList.getDocType().equals(0)){
task.setOutType(3);//转储出库类型为3
}
else{
Integer docType = outList.getDocType();
if(docType == 0){
task.setOutType(IN_OUT_TYPE.OUT_BETWEEN);//线边仓间转储出库为3
}else if(docType == 1){
//转外协出库,发运单出库,成本中心领料:对应4,预留单出库
task.setOutType(IN_OUT_TYPE.OUT_TRANSFER);//转外协出库
}else if(docType == 2){
//转外协出库,,:对应4,预留单出库
task.setOutType(IN_OUT_TYPE.OUT_SENDER);//发运单出库
}else if(docType == 3){
//转外协出库,发运单出库,成本中心领料:对应4,预留单出库
task.setOutType(4);
task.setOutType(IN_OUT_TYPE.OUT_CENTRAL);//成本中心领料
}
task.setLightColor(ORDER_COLOR.FIREBRICK.getRgb());//普通转储出库单 颜色:FIREBRICK
......
......@@ -21,7 +21,7 @@ public class StoragePosQueryCriteria {
@QueryCondition(isDBId =true)
private String storageId;
@QueryCondition(blurry = "barcode.barcode")
@QueryCondition(propName = "barcode.barcode")
private String barcode;
@QueryCondition
private String posName;
......
......@@ -7,6 +7,7 @@ import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.MSDAppendInfo;
......@@ -209,7 +210,7 @@ public class DataLog extends BasePo implements Serializable {
*/
private Date putInDate;
/**
* 入库类型:1=普通入库,2=并盘入库,3=截料入库,4=退料入库
* 入库类型:1=普通入库,2=并盘入库,3=截料入库,4=退料入库, 5=转储单入库
*/
private int inType;
/**
......@@ -337,8 +338,19 @@ public class DataLog extends BasePo implements Serializable {
* 是否是工单出库任务
*/
public boolean isOrderTask(){
if(OP.CHECKOUT==type&&outType==10){
return true;
if(OP.CHECKOUT==type){
if(outType == IN_OUT_TYPE.OUT_ORDER || outType == IN_OUT_TYPE.OUT_REPLE){
return true;
}
}
return false;
}
public boolean isOutListTask(){
if(OP.CHECKOUT==type){
if(outType == IN_OUT_TYPE.OUT_BETWEEN || outType == IN_OUT_TYPE.OUT_LIST || outType == IN_OUT_TYPE.OUT_TRANSFER || outType == IN_OUT_TYPE.OUT_SENDER || outType == IN_OUT_TYPE.OUT_CENTRAL){
return true;
}
}
return false;
}
......@@ -469,31 +481,8 @@ public class DataLog extends BasePo implements Serializable {
public String getDetailTypeStr(){
int detailType = getDetailType();
String detailTypeStr = "";
//1=普通入库,2=并盘入库,3=截料入库,4=退料入库
if(detailType == 1){
detailTypeStr = "普通入库";
}else if(detailType == 2){
detailTypeStr = "并盘入库";
}else if(detailType == 3){
detailTypeStr = "截料入库";
}else if(detailType == 4){
detailTypeStr = "退料入库";
}else if(detailType == 100){
//0普通出库,1并盘出库 ,2湿敏出库 3线边仓间转储出库 ,10=工单出库
// * 4=转外协出库,发运单出库,成本中心领料:对应4,预留单出库;
detailTypeStr = "普通出库";
}else if(detailType == 101){
detailTypeStr = "并盘出库";
}else if(detailType == 102){
detailTypeStr = "湿敏出库";
}else if(detailType == 103){
detailTypeStr = "线边仓间转储出库";
}else if(detailType == 104){
detailTypeStr = "预留单出库";
}else if(detailType == 110){
detailTypeStr = "工单出库";
}
String detailTypeStr = IN_OUT_TYPE.getDetailTypeStr(detailType);
return detailTypeStr;
}
......
......@@ -16,6 +16,7 @@ import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
......@@ -114,7 +115,7 @@ public class TaskService {
DataLog task = new DataLog(storage, pos.getBarcode(), pos);
task.setType(OP.CHECKOUT);
if(pos.getBarcode().isLockMsl()){
task.setOutType(2);//湿敏物料出库
task.setOutType(IN_OUT_TYPE.OUT_MSL);//湿敏物料出库
}
task.setPutInDate(pos.getBarcode().getPutInDate());
task.setStatus(OP_STATUS.WAIT.name());
......@@ -141,7 +142,7 @@ public class TaskService {
}
DataLog task = new DataLog(storage, pos.getBarcode(), pos);
task.setType(OP.CHECKOUT);
task.setOutType(1);//并盘出库
task.setOutType(IN_OUT_TYPE.OUT_MERGE);//并盘出库
task.setPutInDate(pos.getBarcode().getPutInDate());
task.setStatus(OP_STATUS.WAIT.name());
task.setSingleOut(isSingleOut);
......
......@@ -19,6 +19,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author ZhangHouYing
* @date 2019-08-10 9:55
......@@ -27,6 +29,12 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
public class SocketMsg {
/**
* 要通知的用户名称列表
*/
private List<String> users;
private String msg;
private MsgType msgType;
......
......@@ -58,7 +58,7 @@ public class WebSocketServer {
@OnOpen
public void onOpen(Session session, @PathParam("sid") String sid) {
String psid=sid.length()>20? sid.substring(0,20):sid;
log.info("["+psid+"]的webSocket已连接:" + session.getId());
log.info("["+psid+"]的webSocket已连接,ID为:" + session.getId());
this.session = session;
this.sid=sid;
//如果存在就先删除一个,防止重复推送消息
......@@ -69,6 +69,7 @@ public class WebSocketServer {
}
}
webSocketSet.add(this);
log.info("WebSocket已连接数量:" + webSocketSet.size());
// for (int i =0;i<10;i++){
......
......@@ -197,10 +197,11 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
if(respCommand.isOkResp()){
ResultBean okResult = ResultBean.newOkResult("smfcore.loadMaterialFinished","loading material is finished: {0}" ,new String[]{messageText},"");
WebSocketServer.sendMsg(requestCommand.getToken(),new SocketMsg(okResult.getMsg(), MsgType.INFO,"smfclient.loadMaterialFinished",new String[]{messageText}));
WebSocketServer.sendMsg(requestCommand.getToken(),new SocketMsg(null, okResult.getMsg(), MsgType.INFO,"smfclient.loadMaterialFinished",new String[]{messageText}));
}else{
ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"smfcore.loadMaterialFailed","loading material failed:{0}",new String[]{messageText} );
WebSocketServer.sendMsg(requestCommand.getToken(),new SocketMsg(ngResult.getMsg(), MsgType.ERROR,"smfclient.loadMaterialFailed",new String[]{messageText}));
WebSocketServer.sendMsg(requestCommand.getToken(),new SocketMsg(null, ngResult.getMsg(), MsgType.ERROR,"smfclient.loadMaterialFailed",new String[]{messageText}));
}
commandMap.remove(respCommand.getEventId());
}else if(respCommand.isUnloadMaterialCmd()){
......@@ -422,15 +423,15 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
try{
taskService.addTaskToExecute(dataLog);
ResultBean okResult = ResultBean.newOkResult("checking material is ok: " + messageText);
WebSocketServer.sendMsg(token,new SocketMsg(okResult.getMsg(), MsgType.INFO,"smfclient.checkingMaterialOk",new String[]{messageText}));
WebSocketServer.sendMsg(token,new SocketMsg(null, okResult.getMsg(), MsgType.INFO,"smfclient.checkingMaterialOk",new String[]{messageText}));
}catch(Exception e){
WebSocketServer.sendMsg(token,new SocketMsg(e.getMessage(), MsgType.INFO,"smfclient.nlp.error",new String[]{e.getMessage()}));
WebSocketServer.sendMsg(token,new SocketMsg(null, e.getMessage(), MsgType.INFO,"smfclient.nlp.error",new String[]{e.getMessage()}));
}
}else{
//NG,需要在界面上进行提示
ResultBean ngResult = ResultBean.newErrorResult(Integer.valueOf(returnCode),"smfcore.checkNg","checking material is ng:{0}" ,new String[]{messageText} );
WebSocketServer.sendMsg(token,new SocketMsg(ngResult.getMsg(), MsgType.ERROR,"smfclient.checkNg",new String[]{messageText}));
WebSocketServer.sendMsg(token,new SocketMsg(null, ngResult.getMsg(), MsgType.ERROR,"smfclient.checkNg",new String[]{messageText}));
}
commandMap.remove(respCommand.getEventId());
}
......
......@@ -66,6 +66,8 @@ public interface IUserManager extends IBaseManager<User> {
List<User> findByRoleId(String roleId);
List<String> findByDeviceGroupId(String deviceGroupId);
void download(List<User> users, HttpServletResponse response, Locale locale) throws IOException;
void updateEmail(String username, String email);
......
package com.neotel.smfcore.security.service.manager.impl;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.security.rest.bean.dto.RoleSmallDto;
import com.neotel.smfcore.security.rest.bean.dto.UserDto;
import com.neotel.smfcore.security.rest.bean.mapstruct.RoleMapper;
import com.neotel.smfcore.security.rest.bean.mapstruct.UserMapper;
import com.neotel.smfcore.security.service.dao.IUserDao;
import com.neotel.smfcore.security.service.manager.IRoleManager;
......@@ -17,7 +13,6 @@ import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
......@@ -28,7 +23,6 @@ import org.springframework.util.ObjectUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by kangmor on 2015/12/1.
......@@ -168,6 +162,21 @@ public class UserManagerImpl implements IUserManager {
List<User> users = userDao.findByQuery(query);
return users;
}
@Override
public List<String> findByDeviceGroupId(String deviceGroupId){
List<String> userNames = new ArrayList<>();
if(deviceGroupId == null || deviceGroupId.isEmpty()){
return userNames;
}
Query query=new Query(Criteria.where("groups").is(deviceGroupId));
List<User> users = userDao.findByQuery(query);
for (User user : users) {
userNames.add(user.getUsername());
}
return userNames;
}
@Override
public void download(List<User> queryAll, HttpServletResponse response,Locale locale) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
......
......@@ -86,7 +86,7 @@ spring:
freemarker:
check-template-location: false
profiles:
active: '@package.environment@'
active: 'dev'
jackson:
time-zone: GMT+8
data:
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!