Commit 03cae851 sunke

1 物料日志查询增加类型

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