Commit cd08bb20 LN

接口调试修改。

1 个父辈 05193f0c
...@@ -20,6 +20,9 @@ ...@@ -20,6 +20,9 @@
*/ */
package com.neotel.smfcore.common.csv; package com.neotel.smfcore.common.csv;
import com.neotel.smfcore.common.exception.ValidateException;
import lombok.extern.slf4j.Slf4j;
import java.io.*; import java.io.*;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.NumberFormat; import java.text.NumberFormat;
...@@ -29,6 +32,7 @@ import java.util.HashMap; ...@@ -29,6 +32,7 @@ import java.util.HashMap;
* A stream based parser for parsing delimited text data from a file or a * A stream based parser for parsing delimited text data from a file or a
* stream. * stream.
*/ */
@Slf4j
public class CsvReader { public class CsvReader {
private Reader inputStream = null; private Reader inputStream = null;
...@@ -233,6 +237,21 @@ public class CsvReader { ...@@ -233,6 +237,21 @@ public class CsvReader {
} }
/** /**
* 获取指定列所在的索引
* @param titleName
* @param titleNameEn
* @return
*/
public int getCsvIndex(String titleName,String titleNameEn){
int index = getIndex(titleName,titleNameEn);
if(index == -1){
log.info("未包含【"+titleName+"】或【"+titleNameEn+"】列");
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw new ValidateException("smfcode.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
/**
* Gets whether leading and trailing whitespace characters are being trimmed * Gets whether leading and trailing whitespace characters are being trimmed
* from non-textqualified column data. Default is true. * from non-textqualified column data. Default is true.
* *
......
...@@ -2,6 +2,9 @@ package com.neotel.smfcore.common.init; ...@@ -2,6 +2,9 @@ package com.neotel.smfcore.common.init;
import com.neotel.smfcore.common.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.UserCodeUtil; import com.neotel.smfcore.common.utils.UserCodeUtil;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IMenuManager; import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager; import com.neotel.smfcore.security.service.manager.IRoleManager;
...@@ -21,6 +24,7 @@ import org.springframework.stereotype.Component; ...@@ -21,6 +24,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
@Component @Component
...@@ -34,6 +38,11 @@ public class DataInitManager { ...@@ -34,6 +38,11 @@ public class DataInitManager {
IMenuManager menuManager; IMenuManager menuManager;
@Autowired @Autowired
IGroupManager groupManager; IGroupManager groupManager;
@Autowired
TaskService taskService;
@Autowired
IDataLogManager dataLogManager;
@PostConstruct @PostConstruct
public void DataInit() { public void DataInit() {
...@@ -44,6 +53,7 @@ public class DataInitManager { ...@@ -44,6 +53,7 @@ public class DataInitManager {
User admin = userManager.findByUserName(userName); User admin = userManager.findByUserName(userName);
if (admin == null) { if (admin == null) {
log.info("开始创建默认菜单...");
Set<String> menuIdSet = MenuInitNew() ; Set<String> menuIdSet = MenuInitNew() ;
Group group=new Group("未分组"); Group group=new Group("未分组");
...@@ -60,80 +70,34 @@ public class DataInitManager { ...@@ -60,80 +70,34 @@ public class DataInitManager {
userManager.save(admin); userManager.save(admin);
log.info("创建默认用户:" + admin.toString()); log.info("创建默认用户:" + admin.toString());
log.info("创建默认菜单完成...");
} else { } else {
log.info("初始化环境完成..."); log.info("初始化环境完成...");
} }
initTask();
} catch (Exception exception) { } catch (Exception exception) {
log.error("初始化环境出错..." + exception.toString()); log.error("初始化环境出错..." + exception.toString());
} }
} }
private Set<String> MenuInitOld(){ private void initTask() {
log.info("开始加载未完成的任务...");
Set<String> menuIdSet = new HashSet<String>() ; List<DataLog> unExecuteTasks = dataLogManager.findUnFinishedTasks();
List<Menu> menus=new ArrayList<Menu>(); for (DataLog unExecuteTask : unExecuteTasks) {
Menu menu1 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "menu"); if (unExecuteTask.isExecuting() || unExecuteTask.isWait()) {
Menu menu2 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, "menu"); try {
Menu menu3 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 3, "singleOuput", "neolight/singleOuput/index", "", 0, "menu"); taskService.addTaskToExecute(unExecuteTask);
Menu menu4 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "分组管理", 4, "groupManager", "neolight/groupManager/index", "", 0, "menu"); }catch (Exception e){
// Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu"); log.error("初始化任务["+unExecuteTask+"]出错:"+e);
menus.add(menuManager.save(menu1));
menus.add(menuManager.save(menu2));
menus.add(menuManager.save(menu3));
menus.add(menuManager.save(menu4));
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 11, "peoples", "system/user/index", "", 0, "peoples");
menuUser=menuManager.save(menuUser);
Menu menuUser1 =menuManager.save(new Menu( "user:edit", "用户编辑", 12, menuUser.getId())) ;
Menu menuUser2 = menuManager.save(new Menu( "user:del", "用户删除", 13, menuUser.getId()));
Menu menuUser3 =menuManager.save( new Menu( "user:add", "用户新增", 13, menuUser.getId()));
menus.add(menuUser);
menus.add(menuUser1);
menus.add(menuUser2);
menus.add(menuUser3);
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 21, "role", "system/role/index", "", 0, "role");
menuUser=menuManager.save(menuRole);
Menu menuRole1 =menuManager.save(new Menu( "role:edit", "角色编辑", 22, menuRole.getId())) ;
Menu menuRole2 = menuManager.save(new Menu( "role:del", "角色删除", 23, menuRole.getId()));
Menu menuRole3 =menuManager.save( new Menu( "role:add", "角色新增", 23, menuRole.getId()));
menus.add(menuRole);
menus.add(menuRole1);
menus.add(menuRole2);
menus.add(menuRole3);
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 31, "menu", "system/menu/index", "", 0, "menu");
menuMenu=menuManager.save(menuMenu);
Menu menuMenu1 =menuManager.save(new Menu( "menu:edit", "菜单编辑", 32, menuMenu.getId())) ;
Menu menuMenu2 = menuManager.save(new Menu( "menu:del", "菜单删除", 33, menuMenu.getId()));
Menu menuMenu3 =menuManager.save( new Menu( "menu:add", "菜单新增", 33, menuMenu.getId()));
menus.add(menuMenu);
menus.add(menuMenu1);
menus.add(menuMenu2);
menus.add(menuMenu3);
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog:list", "出库日志", 41, "taskLog", "neolight/taskLog/index", "", 0, "database");
Menu menuStorage = new Menu(new ArrayList<Menu>(), 1, "storagePos:list", "库位管理", 51, "storagePos", "storagePos/storagePos/index", "", 0, "tree-table");
Menu menuStoragePos = new Menu(new ArrayList<Menu>(), 1, "storage:list", "料仓管理", 61, "bunker", "storage/storage/index", "", 0, "database");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件管理", 71, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条码管理", 81, "barcode", "barcode/barcode/index", "", 0, "menu");
menus.add( menuManager.save(menuLog));
menus.add( menuManager.save(menuStorage));
menus.add( menuManager.save(menuStoragePos));
menus.add( menuManager.save(menucom));
menus.add( menuManager.save(menubarcode));
for (Menu menu: menus ) {
log.info("创建默认菜单:" + menu.toString());
menuIdSet.add(menu.getId());
} }
return menuIdSet;
} }
}
log.info("加载未完成的任务完成,共[" + unExecuteTasks.size() + "]条数据...");
}
private int sortValue=0; private int sortValue=0;
private List<Menu> createMenus(Menu pMenu,Menu... subMenus) { private List<Menu> createMenus(Menu pMenu,Menu... subMenus) {
......
...@@ -43,10 +43,7 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -43,10 +43,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Set;
@Slf4j @Slf4j
...@@ -111,24 +108,25 @@ public class BoxKanbanController { ...@@ -111,24 +108,25 @@ public class BoxKanbanController {
String groupId = criteria.getGroupId(); String groupId = criteria.getGroupId();
List<String> cidList = getCidsByGroupId(groupId,true); List<String> cidList = getCidsByGroupId(groupId,true);
query.addCriteria(Criteria.where("cid").in(cidList)); query.addCriteria(Criteria.where("cid").in(cidList));
PageData<DataLog> dataLogPageData=dataLogManager.findByPage(query,pageable);
List<BoxTaskDto> boxTaskDtos=boxTaskMapper.toDto(dataLogPageData.getContent());
//正常 //正常
if(criteria.getStatus()==1){ if(criteria.getTaskStatus()==1){
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000); Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000);
query.addCriteria(Criteria.where("updateDate").gt(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING)); query.addCriteria(Criteria.where("updateDate").gt(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING.name()));
}//异常 }//异常
else if(criteria.getStatus()==2){ else if(criteria.getTaskStatus()==2){
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000); Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000);
query.addCriteria(Criteria.where("updateDate").lte(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING)); query.addCriteria(Criteria.where("updateDate").lte(lastUpdateTime).and("status").in(OP_STATUS.EXECUTING.name(),OP_STATUS.WAIT.name()));
}else{ }else {
List<String> sList=new ArrayList<>(); //只查找近12个小时未完成的任务
sList.add(OP_STATUS.WAIT.toString()); Calendar calendar = Calendar.getInstance();
sList.add(OP_STATUS.EXECUTING.toString()); calendar.add(Calendar.HOUR_OF_DAY, -12);
query.addCriteria(Criteria.where("status").in(sList)); query.addCriteria(Criteria.where("createDate").gte(calendar.getTime()));
query.addCriteria(Criteria.where("status").nin(OP_STATUS.CANCEL.name(), OP_STATUS.FINISHED.name()));
} }
PageData<DataLog> dataLogPageData=dataLogManager.findByPage(query,pageable);
List<BoxTaskDto> boxTaskDtos=boxTaskMapper.toDto(dataLogPageData.getContent());
return new PageData(boxTaskDtos, boxTaskDtos.size()); return new PageData(boxTaskDtos, boxTaskDtos.size());
} }
...@@ -157,13 +155,18 @@ public class BoxKanbanController { ...@@ -157,13 +155,18 @@ public class BoxKanbanController {
int allCount = allTasks.size(); int allCount = allTasks.size();
int abnormal = 0; int abnormal = 0;
int normal = 0; int normal = 0;
int allcount=0;
for (DataLog data : allTasks) { for (DataLog data : allTasks) {
if (data.isFinished() || data.isCancel()) {
continue;
}
//超过10分钟未更新为异常 //超过10分钟未更新为异常
if (data.isAbnormal()) { if ((!data.isAbnormal()) && data.getStatus().equals(OP_STATUS.EXECUTING)) {
abnormal++;
} else if (data.getStatus().equals(OP_STATUS.EXECUTING)) {
normal++; normal++;
} else if (data.isAbnormal()) {
abnormal++;
} }
allcount++;
} }
BoxKanbanDto kanbanDto = new BoxKanbanDto(allCount, normal, abnormal, new ArrayList<>()); BoxKanbanDto kanbanDto = new BoxKanbanDto(allCount, normal, abnormal, new ArrayList<>());
return kanbanDto; return kanbanDto;
......
...@@ -8,10 +8,13 @@ import java.util.List; ...@@ -8,10 +8,13 @@ import java.util.List;
@Data @Data
public class BoxTaskDto { public class BoxTaskDto {
@ApiModelProperty("ID")
private String id;
@ApiModelProperty("是否是单盘出库(联电指出库项目,默认为false即默认批量出库)") @ApiModelProperty("是否是单盘出库(联电指出库项目,默认为false即默认批量出库)")
private boolean singleOut = false; private boolean singleOut = false;
@ApiModelProperty("所属料仓") @ApiModelProperty("料仓名称")
private String storageName; private String storageName;
@ApiModelProperty(value="料仓 cid") @ApiModelProperty(value="料仓 cid")
...@@ -20,10 +23,10 @@ public class BoxTaskDto { ...@@ -20,10 +23,10 @@ public class BoxTaskDto {
@ApiModelProperty("料仓 ID") @ApiModelProperty("料仓 ID")
private String storageId; private String storageId;
@ApiModelProperty("料仓 ID") @ApiModelProperty("库位号ID")
private String posId; private String posId;
@ApiModelProperty("仓位名称") @ApiModelProperty("库位号")
private String posName; private String posName;
@ApiModelProperty("二维码(Reel ID)") @ApiModelProperty("二维码(Reel ID)")
...@@ -32,79 +35,60 @@ public class BoxTaskDto { ...@@ -32,79 +35,60 @@ public class BoxTaskDto {
@ApiModelProperty("物料编号") @ApiModelProperty("物料编号")
private String partNumber; private String partNumber;
/**
*数量(从 barCode 中读取) @ApiModelProperty("数量")
*/
@ApiModelProperty("物料编号")
private int num; private int num;
/**
* 类型:入库OP.PUT_IN,出库OP.CHECKOUT
*/
@ApiModelProperty("出入库类型") @ApiModelProperty("出入库类型")
private int type; private int type;
/** private String status;
* 状态:OP_STATUS
*/ @ApiModelProperty("状态:OP_STATUS")
private String taskStatus; private String taskStatus;
/** public String getTaskStatus(){return status;}
* 指定批次Id
*/ @ApiModelProperty("指定批次Id")
private String batchId; private String batchId;
/**
* 批次显示内容 @ApiModelProperty("批次显示内容")
*/
private String batchInfo; private String batchInfo;
/**
* 指令来源:站位列表 指定订单工单 MES @ApiModelProperty("指令来源:站位列表 指定订单工单 MES")
*/
private String sourceType; private String sourceType;
/**
* 来源 id, @ApiModelProperty("来源 id")
*/
private String sourceId; private String sourceId;
/**
* 来源名称 @ApiModelProperty("来源名称")
*/
private String sourceName; private String sourceName;
/**
* 子来源 ID(单个站位) @ApiModelProperty("子来源 ID(单个站位)")
*/
private String subSourceId; private String subSourceId;
/**
* 子来源名称 @ApiModelProperty("子来源名称")
*/
private String subSourceInfo; private String subSourceInfo;
/** @ApiModelProperty("创建人")
* 创建人
*/
private String creator; private String creator;
/**
* 操作人 @ApiModelProperty("操作人")
*/
private String operator; private String operator;
/**
* 关联条码,夹具时关联相关的物料,用于入库完成时插入相关物料 @ApiModelProperty("关联条码,夹具时关联相关的物料,用于入库完成时插入相关物料")
*/
private List<String> relationCodes; private List<String> relationCodes;
private String memo; private String memo;
/** @ApiModelProperty("搅拌时间(锡膏搅拌任务使用)")
* 搅拌时间(锡膏搅拌任务使用)
*/
private int mixTime; private int mixTime;
/** @ApiModelProperty("亮灯料架颜色")
* 亮灯料架颜色
*/
private String lightColor = ""; private String lightColor = "";
} }
...@@ -45,7 +45,7 @@ public class BoxTaskQueryCriter { ...@@ -45,7 +45,7 @@ public class BoxTaskQueryCriter {
private String sourceName; private String sourceName;
@ApiModelProperty("任务状态:0=所有,1=正常,2=异常") @ApiModelProperty("任务状态:0=所有,1=正常,2=异常")
private int status=0 ; private int taskStatus=0 ;
@ApiModelProperty("任务类型:0=所有,1=入库,2=出库") @ApiModelProperty("任务类型:0=所有,1=入库,2=出库")
@QueryCondition @QueryCondition
......
...@@ -178,15 +178,6 @@ public class OrderController { ...@@ -178,15 +178,6 @@ public class OrderController {
return orderMapper.toDto(orderList); return orderMapper.toDto(orderList);
} }
private int getCsvIndex(CsvReader csvReader, String titleName, String titleNameEn) {
int index = csvReader.getIndex(titleName, titleNameEn);
if (index == -1) {
log.info("未包含【" + titleName + "】或【" + titleNameEn + "】列");
// throw new ValidateException("必须包含[" + titleNameEn + "]列");
throw new ValidateException("smfcode.error.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
protected List<LiteOrderItem> handleOrderCsv(String fileURL) { protected List<LiteOrderItem> handleOrderCsv(String fileURL) {
try { try {
......
...@@ -211,16 +211,6 @@ public class StorageController { ...@@ -211,16 +211,6 @@ public class StorageController {
} }
private int getCsvIndex(CsvReader csvReader, String titleName, String titleNameEn) {
int index = csvReader.getIndex(titleName, titleNameEn);
if (index == -1) {
log.info("未包含【" + titleName + "】或【" + titleNameEn + "】列");
// throw new ValidateException("必须包含[" + titleNameEn + "]列");
throw new ValidateException("smfcode.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
protected String handleStoragePos(String fileURL, String storageId) throws Exception protected String handleStoragePos(String fileURL, String storageId) throws Exception
{ {
log.info("开始更新料仓【"+storageId+"】的位置信息"); log.info("开始更新料仓【"+storageId+"】的位置信息");
...@@ -239,10 +229,10 @@ public class StorageController { ...@@ -239,10 +229,10 @@ public class StorageController {
csvRead.setSkipEmptyRecords(true);//忽略空行 csvRead.setSkipEmptyRecords(true);//忽略空行
csvRead.setTrimWhitespace(true);//去除空格 csvRead.setTrimWhitespace(true);//去除空格
csvRead.readHeaders(); csvRead.readHeaders();
int posIndex =getCsvIndex(csvRead, "位置","pos"); int posIndex =csvRead.getCsvIndex( "位置","pos");
int priIndex = getCsvIndex(csvRead,"优先级","pri"); int priIndex = csvRead.getCsvIndex("优先级","pri");
int hIndex = getCsvIndex(csvRead,"高度","h"); int hIndex = csvRead.getCsvIndex("高度","h");
int wIndex = getCsvIndex(csvRead,"宽度","w"); int wIndex = csvRead.getCsvIndex("宽度","w");
int row = 1; int row = 1;
int newRowCount = 0; int newRowCount = 0;
......
package com.neotel.smfcore.core.system.rest; package com.neotel.smfcore.core.system.rest;
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;
...@@ -73,8 +74,9 @@ public class TaskController { ...@@ -73,8 +74,9 @@ public class TaskController {
@ApiOperation("获取队列中的任务") @ApiOperation("获取队列中的任务")
@GetMapping @GetMapping
@PreAuthorize("@el.check('task:inQueue','task:list')") @PreAuthorize("@el.check('task:inQueue','task:list')")
public List<TaskDto> filterTask(String groupId, String[] cids){ public PageData<TaskDto> filterTask(String groupId, String[] cids){
return getTaskList(groupId,cids); List<TaskDto> taskDtos= getTaskList(groupId,cids);
return new PageData<TaskDto>(taskDtos,taskDtos.size());
} }
private List<TaskDto> getTaskList(String groupId, String[] cids){ private List<TaskDto> getTaskList(String groupId, String[] cids){
......
...@@ -11,6 +11,8 @@ import java.util.List; ...@@ -11,6 +11,8 @@ import java.util.List;
@Setter @Setter
public class TaskDto implements Serializable { public class TaskDto implements Serializable {
@ApiModelProperty("ID")
private String id;
/** /**
* 是否是单盘出库(联电指出库项目,默认为false即默认批量出库) * 是否是单盘出库(联电指出库项目,默认为false即默认批量出库)
*/ */
......
...@@ -3,5 +3,8 @@ package com.neotel.smfcore.core.system.service.manager; ...@@ -3,5 +3,8 @@ package com.neotel.smfcore.core.system.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import java.util.List;
public interface IDataLogManager extends IBaseManager<DataLog> { public interface IDataLogManager extends IBaseManager<DataLog> {
List<DataLog> findUnFinishedTasks();
} }
...@@ -2,14 +2,18 @@ package com.neotel.smfcore.core.system.service.manager.impl; ...@@ -2,14 +2,18 @@ package com.neotel.smfcore.core.system.service.manager.impl;
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.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.system.service.dao.IDataLogDao; import com.neotel.smfcore.core.system.service.dao.IDataLogDao;
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 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.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List; import java.util.List;
@Service @Service
...@@ -44,4 +48,19 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -44,4 +48,19 @@ public class DataLogManagerImpl implements IDataLogManager {
public List<DataLog> findByQuery(Query query) { public List<DataLog> findByQuery(Query query) {
return dataLogDao.findByQuery(query); return dataLogDao.findByQuery(query);
} }
@Override
public List<DataLog> findUnFinishedTasks() {
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 query = Query.query(c);
List<DataLog> unFinishedTasks = findByQuery(query);
if(unFinishedTasks == null){
unFinishedTasks = new ArrayList<>();
}
return unFinishedTasks;
}
} }
package com.neotel.smfcore.hella.rest; package com.neotel.smfcore.hella.rest;
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.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
...@@ -19,6 +20,7 @@ import org.springframework.http.HttpStatus; ...@@ -19,6 +20,7 @@ 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.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -56,18 +58,28 @@ public class HellaSensorShelfController { ...@@ -56,18 +58,28 @@ public class HellaSensorShelfController {
@ApiOperation("扫码入库") @ApiOperation("扫码入库")
@PostMapping("/codeIn") @PostMapping("/codeIn")
@PreAuthorize("@el.check('sensorShelf:putIn')") @PreAuthorize("@el.check('sensorShelf:putIn')")
public ResponseEntity<ResultBean> codeIn(String code, String group){ public ResponseEntity<ResultBean> codeIn( @RequestBody Map<String, String> mapValues) {
String code = mapValues.get("code");
String group = mapValues.get("group");
if(ObjectUtils.isEmpty(code)){
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"code"});
}
if(ObjectUtils.isEmpty(group)){
throw new ValidateException("smfcode.valueCanotNull", "{0}不能为空", new String[]{"group"});
}
String loginUser = SecurityUtils.getLoginUsername(); String loginUser = SecurityUtils.getLoginUsername();
Collection<DataLog> queueTasks = taskService.getQueueTasks(); Collection<DataLog> queueTasks = taskService.getQueueTasks();
ResultBean resultBean = null; ResultBean resultBean = null;
for (DataLog queueTask : queueTasks) { for (DataLog queueTask : queueTasks) {
if(queueTask.isPutInTask() && queueTask.getSourceName().equals(group)){ if (queueTask.isPutInTask() && queueTask.getSourceName().equals(group)) {
resultBean = ResultBean.newErrorResult(-1, "the task of ["+queueTask.getBarcode()+"] is unfinished."); log.info("codeIn ["+code+"]["+group+"]入库失败:条码["+queueTask.getBarcode()+"]的任务还未结束 ");
return new ResponseEntity<ResultBean>(resultBean,HttpStatus.OK); throw new ValidateException("smfcore.unfinished","the task of [{0}] is unfinished",new String[]{queueTask.getBarcode()});
// resultBean = ResultBean.newErrorResult(-1, "the task of [" + queueTask.getBarcode() + "] is unfinished.");
// return new ResponseEntity<ResultBean>(resultBean, HttpStatus.OK);
} }
} }
resultBean = hellaServiceHandler.checkMaterial(loginUser, group, code); resultBean = hellaServiceHandler.checkMaterial(loginUser, group, code);
return new ResponseEntity<ResultBean>(resultBean,HttpStatus.OK); return new ResponseEntity<ResultBean>(resultBean, HttpStatus.OK);
} }
......
...@@ -152,12 +152,7 @@ public class UserController { ...@@ -152,12 +152,7 @@ public class UserController {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"roleId"} ); throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"roleId"} );
// throw new ValidateException("修改用户:角色ID不能为空"); // throw new ValidateException("修改用户:角色ID不能为空");
} }
if (resources.getUsername().equals(Constants.SUPER_USERNAME)) {
if (!resources.getId().equals(SecurityUtils.getCurrentUserId())) {
throw new ValidateException("smfcode.hasNoAccess","无权限修改此用户信息" );
// throw new ValidateException("无权限修改此用户信息");
}
}
userManager.update(resources); userManager.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
...@@ -255,15 +250,7 @@ public class UserController { ...@@ -255,15 +250,7 @@ public class UserController {
String resultMsg = handleUserUpload(file.getAbsolutePath()); String resultMsg = handleUserUpload(file.getAbsolutePath());
return ResultBean.newOkResult(resultMsg); return ResultBean.newOkResult(resultMsg);
} }
private int getCsvIndex(CsvReader csvReader,String titleName,String titleNameEn){
int index = csvReader.getIndex(titleName,titleNameEn);
if(index == -1){
log.info("未包含【"+titleName+"】或【"+titleNameEn+"】列");
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw new ValidateException("smfcode.columnNotExist","必须包含[{0}列",new String[]{titleNameEn});
}
return index;
}
protected String handleUserUpload(String fileURL ) throws Exception protected String handleUserUpload(String fileURL ) throws Exception
{ {
...@@ -274,9 +261,9 @@ public class UserController { ...@@ -274,9 +261,9 @@ public class UserController {
csvRead.setTrimWhitespace(true);//去除空格 csvRead.setTrimWhitespace(true);//去除空格
csvRead.readHeaders(); csvRead.readHeaders();
int idIndex = getCsvIndex(csvRead,"用户ID","ID"); int idIndex = csvRead.getCsvIndex("用户ID","ID");
int usernameIndex = getCsvIndex(csvRead,"用户名","UserName"); int usernameIndex = csvRead.getCsvIndex("用户名","UserName");
int codeIndex = getCsvIndex(csvRead,"启用码","CheckCode"); int codeIndex = csvRead.getCsvIndex("启用码","CheckCode");
int row = 1; int row = 1;
......
...@@ -54,6 +54,8 @@ public class MenuDto implements Serializable { ...@@ -54,6 +54,8 @@ public class MenuDto implements Serializable {
@ApiModelProperty(value = "图标") @ApiModelProperty(value = "图标")
private String icon; private String icon;
@ApiModelProperty(value = "国际化资源的key")
private String titleKey;
public Boolean getHasChildren() { public Boolean getHasChildren() {
if(subCount==null){ if(subCount==null){
......
...@@ -3,10 +3,7 @@ package com.neotel.smfcore.security.service.manager.impl; ...@@ -3,10 +3,7 @@ package com.neotel.smfcore.security.service.manager.impl;
import com.google.common.base.Strings; 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.Constants; import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.storage.service.po.StoragePos; 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.RoleSmallDto;
import com.neotel.smfcore.security.rest.bean.dto.UserDto; import com.neotel.smfcore.security.rest.bean.dto.UserDto;
...@@ -85,6 +82,12 @@ public class UserManagerImpl implements IUserManager { ...@@ -85,6 +82,12 @@ public class UserManagerImpl implements IUserManager {
if(user.getCheckCode()==null){ if(user.getCheckCode()==null){
user.setCheckCode(""); user.setCheckCode("");
} }
if (user.getUsername().equals(Constants.SUPER_USERNAME)) {
if (!user.getId().equals(SecurityUtils.getCurrentUserId())) {
throw new ValidateException("smfcode.hasNoAccess","无权限修改此用户信息" );
// throw new ValidateException("无权限修改此用户信息");
}
}
//用户名admin不能修改 //用户名admin不能修改
if(dataUser.getUsername().equals(Constants.SUPER_USERNAME)) { if(dataUser.getUsername().equals(Constants.SUPER_USERNAME)) {
if(!user.getUsername().equals(dataUser.getUsername())){ if(!user.getUsername().equals(dataUser.getUsername())){
......
...@@ -90,6 +90,11 @@ public class Menu extends BasePo implements Serializable { ...@@ -90,6 +90,11 @@ public class Menu extends BasePo implements Serializable {
*/ */
private String icon; private String icon;
/**
* 国际化文本key
*/
private String titleKey;
public Boolean getHasChildren() { public Boolean getHasChildren() {
if(subCount==0){ if(subCount==0){
return false; return false;
...@@ -111,16 +116,6 @@ public class Menu extends BasePo implements Serializable { ...@@ -111,16 +116,6 @@ public class Menu extends BasePo implements Serializable {
/** /**
* 此方法用于构建一级菜单,type=1 * 此方法用于构建一级菜单,type=1
* @param children
* @param type
* @param permission
* @param title
* @param menuSort
* @param path
* @param component
* @param pid
* @param subCount
* @param icon
*/ */
public Menu(final List<Menu> children,final Integer type, final String permission, final String title, final Integer menuSort, final String path, final String component, final String pid, final Integer subCount, final String icon) { public Menu(final List<Menu> children,final Integer type, final String permission, final String title, final Integer menuSort, final String path, final String component, final String pid, final Integer subCount, final String icon) {
this.children = children; this.children = children;
...@@ -137,6 +132,7 @@ public class Menu extends BasePo implements Serializable { ...@@ -137,6 +132,7 @@ public class Menu extends BasePo implements Serializable {
this.hidden = false; this.hidden = false;
this.componentName = ""; this.componentName = "";
this.icon = icon; this.icon = icon;
this.titleKey=path;
} }
public Menu ( final String permission, final String title, final Integer menuSort, final String pid ) { public Menu ( final String permission, final String title, final Integer menuSort, final String pid ) {
...@@ -154,20 +150,22 @@ public class Menu extends BasePo implements Serializable { ...@@ -154,20 +150,22 @@ public class Menu extends BasePo implements Serializable {
this.hidden = false; this.hidden = false;
this.componentName = title; this.componentName = title;
this.icon = ""; this.icon = "";
this.titleKey=path;
} }
/** /**
* 此方法用于构建权限菜单,type=2 * 此方法用于构建权限菜单,type=2
*/ */
public static Menu CreatePerMenu( final String permission, final String title, final String pid ) { public static Menu CreatePerMenu( final String permission, final String title, final String pid ) {
Menu menu=new Menu(new ArrayList<Menu>(),2,permission,title,999,"","",pid,0,false,false,false,"",""); Menu menu=new Menu(new ArrayList<Menu>(),2,permission,title,999,"","",pid,0,false,false,false,"","","");
return menu; return menu;
} }
/** /**
* 此方法用户创建只用于显示的一级菜单,type=0 * 此方法用户创建只用于显示的一级菜单,type=0
*/ */
public static Menu CreatePMenu( final String title, final Integer menuSort, final String path, final Integer subCount, final String icon) { public static Menu CreatePMenu( final String title, final Integer menuSort, final String path, final Integer subCount, final String icon ) {
Menu menu = new Menu(new ArrayList<Menu>(), 0, "", title, menuSort, path, "", "", subCount, false, false, false, title, icon); String titleKey=path;
Menu menu = new Menu(new ArrayList<Menu>(), 0, "", title, menuSort, path, "", "", subCount, false, false, false, title, icon,titleKey);
return menu; return menu;
} }
} }
...@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9 ...@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9
smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25 smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
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
...@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9 ...@@ -49,3 +49,4 @@ smfcode.error.barcode.inQueue=\u4E8C\u7EF4\u7801[{0}]\u5DF2\u5728\u64CD\u4F5C\u9
smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25 smfcode.error.pos.inQueue=\u4F4D\u7F6E:[{0}}]\u5DF2\u5728\u64CD\u4F5C\u961F\u5217\u4E2D,\u64CD\u4F5C\u5931\u8D25
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
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!