Commit 55018085 LN

修改组管理功能。看板查询修改。默认不创建组。

1 个父辈 0746e476
......@@ -38,8 +38,8 @@ public class DataInitManager {
IRoleManager roleManager;
@Autowired
IMenuManager menuManager;
@Autowired
IGroupManager groupManager;
// @Autowired
// IGroupManager groupManager;
@Autowired
TaskService taskService;
......@@ -58,11 +58,11 @@ public class DataInitManager {
log.info("开始创建默认菜单...");
Set<String> menuIdSet = MenuInitNew() ;
Group group=new Group("未分组");
group=groupManager.save(group);
log.info("创建默认组:" + group.toString());
// Group group=new Group("未分组");
// group=groupManager.save(group);
// log.info("创建默认组:" + group.toString());
Set<String> groupIds= new HashSet<>();
groupIds.add(group.getId());
// groupIds.add(group.getId());
Role role = new Role(menuIdSet,"admin","管理员");
role= roleManager.save(role);
......@@ -172,18 +172,18 @@ public class DataInitManager {
List<Menu> menus = new ArrayList<Menu>();
//料架分组
Menu menukanban = new Menu(new ArrayList<Menu>(), 1, "boxkanban", "设备看板", 1, "lockMaterial", "lockMaterial/material/index", "", 0, "app");
Menu menukanban = new Menu(new ArrayList<Menu>(), 1, "boxkanban", "设备看板", 1, "lockMaterial", "lockMaterial/material/index", "", 0, "kanban");
// menukanban.setHidden(true);
menus.addAll(createMenus(menukanban));
//料架分组
Menu menuShelf = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "list");
Menu menuShelf = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "neo1");
// menuShelf.setHidden(true);
menus.addAll(createMenus(menuShelf));
//出库:工单,查找出库
Menu poutOut = Menu.CreatePMenu("工单管理", 20, "order", 2, "zujian");
Menu menuOrder = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 1, "workOrder", "neolight/workOrder/index", "", 0, "icon");
Menu menuOut = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 1, "singleOuput", "neolight/singleOuput/index", "", 0, "search");
Menu poutOut = Menu.CreatePMenu("工单管理", 20, "order", 2, "workOrder");
Menu menuOrder = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 1, "workOrder", "neolight/workOrder/index", "", 0, "workOrder");
Menu menuOut = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 1, "singleOuput", "neolight/singleOuput/index", "", 0, "export1");
menus.addAll(createMenus(poutOut, menuOrder, menuOut));
//设置:料仓管理,菜单管理
......@@ -198,7 +198,7 @@ public class DataInitManager {
//物料管理:元器件管理,条形码管理
Menu pMenuWl = Menu.CreatePMenu("物料管理", 30, "materiel ", 2, "redis");
Menu pMenuWl = Menu.CreatePMenu("物料管理", 30, "materiel ", 2, "materiel");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 1, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
menus.addAll(createMenus(pMenuWl, menucom, menubarcode));
......
package com.neotel.smfcore.core.device.util;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
......@@ -23,6 +24,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.util.ObjectUtils;
import javax.annotation.PostConstruct;
import java.util.*;
......@@ -458,5 +460,22 @@ public class DataCache {
storageInventory.put(inventoryItem.getPartNumber(), inventoryItem);
inventoryMap.put(cid, storageInventory);
}
public List<String> getCidsByGroupId(String groupId,boolean nullReturnAll){
List<String> cidList = Lists.newArrayList();
for (Storage storage : getAllStorage().values()) {
if (groupId!=null) {
String storageGroupId = storage.getGroupId();
if(ObjectUtils.isEmpty(storageGroupId)){
storageGroupId="";
}
if ( storageGroupId.equals(groupId)) {
cidList.add(storage.getCid());
}
} else if(nullReturnAll){
cidList.add(storage.getCid());
}
}
return cidList;
}
}
......@@ -78,14 +78,23 @@ public class BoxKanbanController {
String userId = SecurityUtils.getCurrentUserId();
User user = userManager.get(userId);
Set<String> mygroups = user.getGroups();
mygroups.add("");
ArrayList<GroupStatusDto> groupStatusDtos = new ArrayList<>();
for (String groupid : mygroups) {
Group group = groupManager.get(groupid);
if (group == null) {
if(groupid.equals("")){
group=new Group("" );
group.setId("");
group.setCreateDate(new Date());
group.setUpdateDate(new Date());
}else
{
continue;
}
}
List<BoxStatusDto> boxStatusDtos = new ArrayList<>();
List<String> cidList = getCidsByGroupId(groupid, false);
List<String> cidList =dataCache. getCidsByGroupId(groupid, false);
for (String cid : cidList) {
Storage storage=dataCache.getStorage(cid);
if(storage==null){
......@@ -93,9 +102,11 @@ public class BoxKanbanController {
}
boxStatusDtos.add(getBoxDto(storage,allTasks));
}
if(boxStatusDtos.size()>0){
GroupStatusDto groupStatusDto = new GroupStatusDto(group.getId(),group.getGroupName(),boxStatusDtos);
groupStatusDtos.add(groupStatusDto);
}
}
boxKanbanDto.setGroupList(groupStatusDtos);
return boxKanbanDto;
}
......@@ -104,27 +115,30 @@ public class BoxKanbanController {
@GetMapping("/task")
@PreAuthorize("@el.check('boxkanban:list')")
public PageData<BoxTaskDto> info(BoxTaskQueryCriter criteria, Pageable pageable) {
if(criteria.getType()!=null &&criteria.getType().equals(0) ){
criteria.setType(null);
}
Query query = QueryHelp.getQuery(criteria);
String groupId = criteria.getGroupId();
List<String> cidList = getCidsByGroupId(groupId,true);
List<String> cidList = dataCache. getCidsByGroupId(groupId,true);
query.addCriteria(Criteria.where("cid").in(cidList));
//只查找近12个小时未完成的任务
//暂时改成48小时
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -48);
query.addCriteria(Criteria.where("createDate").gte(calendar.getTime()));
query.addCriteria(Criteria.where("updateDate").gte(calendar.getTime()));
Calendar ca2 = Calendar.getInstance();
ca2.add(Calendar.MINUTE, -10);
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000);
//正常
if(criteria.getTaskStatus()==1){
Date lastUpdateTime=new Date((new Date().getTime())-10 * 60 * 1000);
query.addCriteria(Criteria.where("updateDate").gte(lastUpdateTime).and("status").is(OP_STATUS.EXECUTING.name()));
query.addCriteria(Criteria.where("updateDate").gte(ca2.getTime()).and("status").is(OP_STATUS.EXECUTING.name()));
}//异常
else if(criteria.getTaskStatus()==2){
query.addCriteria(Criteria.where("updateDate").lte(ca2).and("status").in(OP_STATUS.EXECUTING.name()));
query.addCriteria(Criteria.where("updateDate").lte(ca2.getTime()).and("status").is(OP_STATUS.EXECUTING.name()));
}//等待
else if(criteria.getTaskStatus()==3){
query.addCriteria(Criteria.where("status").is(OP_STATUS.WAIT.name()));
......@@ -138,24 +152,24 @@ public class BoxKanbanController {
}
private List<String> getCidsByGroupId(String groupId,boolean nullReturnAll){
List<String> cidList = Lists.newArrayList();
for (Storage storage : dataCache.getAllStorage().values()) {
if (!ObjectUtils.isEmpty(groupId)) {
String storageGroupId = storage.getGroupId();
if(ObjectUtils.isEmpty(storageGroupId)){
storageGroupId="1";
}
if ( storageGroupId.equals(groupId)) {
cidList.add(storage.getCid());
}
} else if(nullReturnAll){
cidList.add(storage.getCid());
}
}
return cidList;
}
// private List<String> getCidsByGroupId(String groupId,boolean nullReturnAll){
// List<String> cidList = Lists.newArrayList();
//
// for (Storage storage : dataCache.getAllStorage().values()) {
// if (groupId!=null) {
// String storageGroupId = storage.getGroupId();
// if(ObjectUtils.isEmpty(storageGroupId)){
// storageGroupId="";
// }
// if ( storageGroupId.equals(groupId)) {
// cidList.add(storage.getCid());
// }
// } else if(nullReturnAll){
// cidList.add(storage.getCid());
// }
// }
// return cidList;
// }
private BoxKanbanDto getKanBan(List<DataLog> allTasks) {
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.kanban.rest.bean.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
......@@ -91,4 +92,9 @@ public class BoxTaskDto {
@ApiModelProperty("亮灯料架颜色")
private String lightColor = "";
@ApiModelProperty("创建时间")
private Date createDate = new Date();
@ApiModelProperty("更新时间")
private Date updateDate=new Date();
}
......@@ -83,13 +83,21 @@ public class StorageController {
PageData<Storage> pages=storageManager.findByPage(query,pageable);
List<StorageDto> StorageDtos=storageMapper.toDto(pages.getContent());
for (int i=0;i<StorageDtos.size();i++){
String groupId="1";
String groupId="";
if(StorageDtos.get(i).getGroupId()!=null&&(!StorageDtos.get(i).getGroupId().isEmpty())){
groupId=StorageDtos.get(i).getGroupId();
}
Group group=groupManager.get(groupId);
if(group!=null){
StorageDtos.get(i).setGroupName(group.getGroupName());
}else{
//此料仓未分组
StorageDtos.get(i).setGroupName("");
if(!StorageDtos.get(i).getGroupId().equals("")){
storageManager.updateStorageGroup(StorageDtos.get(i).getId(),"");
log.info("料仓["+StorageDtos.get(i).getId()+"]["+StorageDtos.get(i).getName()+"]的组不存在,修改组为空");
}
}
}
return new PageData(StorageDtos,pages.getTotalElements());
......@@ -207,7 +215,7 @@ public class StorageController {
storage.setSourcePath("");
}
if(storage.getGroupId()==null|| storage.getGroupId().isEmpty()){
storage.setGroupId("1");
storage.setGroupId("");
}
storage= storageDao.save(storage);
......
......@@ -84,7 +84,7 @@ public class StoragePosController {
}
@ApiOperation("除指定料仓所有库位")
@ApiOperation("除指定料仓所有库位")
@PutMapping("/removeAllPos")
@PreAuthorize("@el.check('storage:edit')")
public ResponseEntity<Object> clearAllPos(@RequestBody String cid) {
......@@ -99,6 +99,42 @@ public class StoragePosController {
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("清空指定料仓所有库位")
@PutMapping("/clearStoragePos")
@PreAuthorize("@el.check('storage:edit')")
public ResultBean clearStoragePos(@RequestBody String cid) {
Storage storage = dataCache.getStorage(cid);
if(storage==null){
throw new ValidateException("smfcode.valueNotFind","未找到{0}[{1}]" ,new String[]{"cid", cid});
}
log.info("开始手动清空料仓["+storage.getName()+"_"+storage.getCid()+"]的所有库位");
List<StoragePos> allPos=storagePosManager.findByStorage(storage.getId());
for (StoragePos storagePos:allPos
) {
if (storagePos != null) {
try {
// QisdaApi.ClearStockBy(storagePos.getPosName());
Barcode barcode = storagePos.getBarcode();
if (barcode != null) {
log.info("清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
String opUser = SecurityUtils.getCurrentUsername();
log.info(opUser + "清理库位[" + storagePos.getPosName() + "]中的库存" + barcode.getBarcode());
taskService.addTaskToFinished(storagePos, null, opUser + "-clear");
}
} catch (Exception e) {
throw new ValidateException("smfcore.error","出错{0}",new String[]{"["+storagePos.getPosName()+"]"+ e.toString()});
}
}
}
return ResultBean.newOkResult("");
}
@ApiOperation("清空指定库位")
@PutMapping("/clearPos")
@PreAuthorize("@el.check('storage:edit')")
......
......@@ -9,4 +9,7 @@ import java.util.Set;
public interface IStorageManager extends IBaseManager<Storage> {
List<Storage> findAll();
void updateStorageGroup(String storageId, String groupId);
void clearStorageGroup(String groupId);
}
......@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
......@@ -60,5 +61,16 @@ public class StorageManagerImpl implements IStorageManager {
return storageDao.findAll();
}
@Override
public void updateStorageGroup(String id, String groupId) {
storageDao.updateFirst(id, Update.update("groupId",groupId));
}
@Override
public void clearStorageGroup(String groupId ){
Query query = new Query(Criteria.where("groupId").is(groupId));
storageDao.updateMulti(query,Update.update("groupId",""));
}
}
......@@ -23,6 +23,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.http.HttpStatus;
......@@ -78,6 +79,7 @@ public class TaskController {
if (unEnd) {
query.addCriteria(Criteria.where("status").nin(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
}
query.with(Sort.by(Sort.Direction.DESC,"updateDate","createDate"));
PageData<DataLog> taskList = dataLogManager.findByPage(query, pageable);
PageData<TaskDto> result= taskMapper.toDto(taskList);
return result;
......@@ -108,7 +110,7 @@ public class TaskController {
for (Storage storage : dataCache.getAllStorage().values()) {
String storageGroupId = storage.getGroupId();
if (ObjectUtils.isEmpty(storageGroupId)) {
storageGroupId = "1";
storageGroupId = "";
}
if (storageGroupId != null && storageGroupId.equals(groupId)) {
cidList.add(storage.getCid());
......@@ -138,13 +140,15 @@ public class TaskController {
String cid = task.getCid();
if(cidList.contains(cid)){
resultTasks.add(task);
}else if(!ObjectUtils.isEmpty(groupId)){
if(task.getGroupId().equals(groupId)){
}else if(!ObjectUtils.isEmpty(groupId)) {
if (task.getGroupId() != null) {
if (task.getGroupId().equals(groupId)) {
resultTasks.add(task);
}
}
}
}else{
}
}else {
resultTasks = allTasks;
}
......
......@@ -26,9 +26,7 @@ public class TaskQueryCondition {
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> updateDate;
// @QueryCondition(type = QueryCondition.Type.IN, propName = "status")
// @ApiModelProperty("任务状态")
// private List<String> statusList;
@QueryCondition
@ApiModelProperty("任务状态")
......
......@@ -54,8 +54,8 @@ public class DataLogManagerImpl implements IDataLogManager {
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());
calendar.add(Calendar.HOUR_OF_DAY,-48);
c.and("updateDate").gte(calendar.getTime());
Query query = Query.query(c);
List<DataLog> unFinishedTasks = findByQuery(query);
if(unFinishedTasks == null){
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.security.rest;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.security.rest.bean.dto.GroupDto;
......@@ -32,10 +33,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.regex.Pattern;
@RestController
......@@ -53,6 +51,9 @@ public class GroupController {
@Autowired
IUserManager userManager;
@Autowired
DataCache dataCache;
@ApiOperation("导出分组数据")
@GetMapping(value = "/download")
......@@ -79,6 +80,23 @@ public class GroupController {
List<Group> groups = groupManager.findByQuery(query);
return new ResponseEntity<>(groupMapper.toDto(groups), HttpStatus.OK);
}
@ApiOperation("料架分组界面的组列表")
@GetMapping(value = "/lightGroups")
@PreAuthorize("@el.check('group:list','user:add','user:edit')")
public ResponseEntity<Object> lightGroup() {
Query query = new Query();
List<Group> groups = groupManager.findByQuery(query);
Group group = Group.defaulGroup();
groups.add(group);
List<Group> resultGroups = new ArrayList<>();
for (Group g :
groups) {
if (dataCache.getCidsByGroupId(g.getId(), true).size() > 0) {
resultGroups.add(group);
}
}
return new ResponseEntity<>(groupMapper.toDto(resultGroups), HttpStatus.OK);
}
@ApiOperation("新增分组")
@PostMapping
......@@ -111,22 +129,31 @@ public class GroupController {
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"ID"} );
}
Group group = groupManager.get(id);
//查找组下是否有设备
Query query = new Query(Criteria.where("groupId").is(id));
List<Storage> storages = storageManager.findByQuery(query);
if (storages != null && storages.size() >= 1) {
throw new ValidateException("smfcode.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
}
Query userQuery = new Query(Criteria.where("groups").all(id));
List<User> users = userManager.findByQuery(userQuery);
if (users != null && users.size() >= 1) {
throw new ValidateException("smfcode.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
// throw new ValidateException("删除失败,组[" + group.getGroupName() + "]已和用户关联");
if(group==null){
throw new ValidateException("smfcode.valueCanotNull","{0}不能为空",new String[]{"group"} );
}
// //查找组下是否有设备
// Query query = new Query(Criteria.where("groupId").is(id));
// List<Storage> storages = storageManager.findByQuery(query);
// if (storages != null && storages.size() >= 1) {
// throw new ValidateException("smfcode.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
// }
//
// Query userQuery = new Query(Criteria.where("groups").all(id));
// List<User> users = userManager.findByQuery(userQuery);
// if (users != null && users.size() >= 1) {
// throw new ValidateException("smfcode.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
//// throw new ValidateException("删除失败,组[" + group.getGroupName() + "]已和用户关联");
// }
//删除关联
log.info("手动删除组:"+group.getId()+"-"+group.getGroupName()+",先删除料仓关联,用户关联");
storageManager.clearStorageGroup(group.getId());
userManager.clearUserGroup(group.getId());
groupManager.delete(group);
}
return new ResponseEntity<>(HttpStatus.OK);
}
}
......@@ -72,4 +72,6 @@ public interface IUserManager extends IBaseManager<User> {
List<UserDto> listToDto(List<User> users);
void updateGroups(User resources);
void clearUserGroup(String groupId);
}
......@@ -217,6 +217,20 @@ public class UserManagerImpl implements IUserManager {
userDao.updateFirst(query,update);
}
@Override
public void clearUserGroup(String groupId) {
Query userQuery = new Query(Criteria.where("groups").all(groupId));
List<User> users = findByQuery(userQuery);
if (users != null && users.size() >= 1) {
for (User user :
users) {
Set<String> groups= user.getGroups();
groups.remove(groupId);
save(user);
}
}
}
}
......@@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
......@@ -13,6 +15,14 @@ public class Group extends BasePo implements Serializable {
private String groupName;
public static Group defaulGroup() {
Group group=new Group("");
group.setId("");
group.setUpdateDate(new Date());
group.setCreateDate(new Date());
return group;
}
public String getLabel() {
return groupName;
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!