package zy.cloud.wms.common.web; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.controller.AbstractBaseController; import com.core.exception.CoolException; import io.swagger.annotations.ApiModelProperty; import org.springframework.beans.factory.annotation.Autowired; import zy.cloud.wms.manager.entity.Node; import zy.cloud.wms.manager.entity.Tag; import zy.cloud.wms.manager.service.NodeService; import zy.cloud.wms.manager.service.TagService; import zy.cloud.wms.system.entity.User; import zy.cloud.wms.system.entity.UserLogin; import zy.cloud.wms.system.service.UserLoginService; import zy.cloud.wms.system.service.UserService; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.*; /** * Created by vincent on 2019-09-09 */ public class BaseController extends AbstractBaseController { protected static final String RANGE_TIME_LINK = " - "; @Autowired protected HttpServletRequest request; @Autowired private UserService userService; @Autowired private TagService tagService; @Autowired private NodeService nodeService; @Autowired private UserLoginService userLoginService; protected Long getHostId(){ if (getUserId() == 9527) { return null; } User user = getUser(); if (user.getRoleId() == 1) { String hostId = String.valueOf(request.getAttribute("hostId")); if (Cools.isEmpty(hostId)) { UserLogin userLogin = userLoginService.selectOne(new EntityWrapper().eq("user_id", user.getId())); if (userLogin != null) { return userLogin.getHostId(); } } return Long.parseLong(hostId); } else { return user.getHostId(); } } protected Long getHostId(String token){ UserLogin userLogin = userLoginService.selectOne(new EntityWrapper().eq("token", token)); if (userLogin == null) { return null; } return userLogin.getHostId(); } protected Long getUserId(){ return Long.parseLong(String.valueOf(request.getAttribute("userId"))); } protected User getUser(){ User user = userService.selectById(getUserId()); if (null == user) { throw new CoolException(BaseRes.DENIED); } return user; } protected String getComment(Class cls, String fieldName){ Field[] fields = Cools.getAllFields(cls); for (Field field : fields){ if (fieldName.equals(field.getName())){ return field.getAnnotation(ApiModelProperty.class).value(); } } return ""; } protected Tag getOriginTag(){ return tagService.getTop(); } protected Node getOriginNode(){ Node node = nodeService.getTop(); if (node == null) { throw new CoolException("库区数据错误"); } return node; } protected void hostEq(EntityWrapper wrapper){ Long hostId = getHostId(); if (hostId != null) { wrapper.eq("host_id", hostId); } } /** * 分页组装 * @param pageNumber * @param pageSize * @param map * @param cls * @param * @return */ protected Page toPage(Integer pageNumber, Integer pageSize, Map map, Class cls){ // 分页索引和单页数量组装 pageNumber = Optional.ofNullable(pageNumber).orElse(1); pageSize = Optional.ofNullable(pageSize).orElse(10); Page page = new Page<>(pageNumber, pageSize); map.put("pageNumber", pageNumber); map.put("pageSize", pageSize); // 全字段模糊搜索 todo if (!Cools.isEmpty(map.get("condition"))) { Set columns = new HashSet<>(); for (Field field : Cools.getAllFields(cls)){ if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers()) || Modifier.isTransient(field.getModifiers())){ continue; } String column = null; if (field.isAnnotationPresent(TableField.class)) { column = field.getAnnotation(TableField.class).value(); } if (Cools.isEmpty(column)) { column = field.getName(); } if (!map.keySet().contains(column)) { columns.add(column); } } columns.forEach(col->map.put(col, map.get("condition"))); } page.setCondition(map); return page; } /** * 全字段模糊搜索 * @param cls 模型类 * @param set 排除字段集合 * @param condition 搜索内容 */ protected void allLike(Class cls, Set set, EntityWrapper wrapper, String condition){ if (Cools.isEmpty(condition)) { return; } List columns = new ArrayList<>(); //如果变量包含Final,Static,transient修饰符, 跳过该变量 for (Field field :Cools.getAllFields(cls)){ if (Modifier.isFinal(field.getModifiers()) || Modifier.isStatic(field.getModifiers()) || Modifier.isTransient(field.getModifiers())){ continue; } String column = null; if (field.isAnnotationPresent(TableField.class)) { column = field.getAnnotation(TableField.class).value(); } if (Cools.isEmpty(column)) { column = field.getName(); } if (!set.contains(column)) { columns.add(column); } } if (columns.isEmpty()) { return; } for (int i=0;i