|
|
@ -18,22 +18,28 @@ package com.logpm.basicdata.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
|
|
|
|
|
|
|
import com.logpm.basicdata.entity.BasicdataClientUserEntity; |
|
|
|
|
|
|
|
import com.logpm.basicdata.entity.BasicdataStorageServicesEntity; |
|
|
|
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; |
|
|
|
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; |
|
|
|
import com.logpm.basicdata.excel.BasicdataWarehouseExcel; |
|
|
|
import com.logpm.basicdata.excel.BasicdataWarehouseExcel; |
|
|
|
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
|
|
|
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
|
|
|
import com.logpm.basicdata.mapper.BasicdataGoodsAreaMapper; |
|
|
|
import com.logpm.basicdata.mapper.BasicdataGoodsAreaMapper; |
|
|
|
|
|
|
|
import com.logpm.basicdata.mapper.BasicdataStorageServicesMapper; |
|
|
|
import com.logpm.basicdata.mapper.BasicdataWarehouseMapper; |
|
|
|
import com.logpm.basicdata.mapper.BasicdataWarehouseMapper; |
|
|
|
|
|
|
|
import com.logpm.basicdata.service.IBasicdataClientUserService; |
|
|
|
import com.logpm.basicdata.service.IBasicdataWarehouseService; |
|
|
|
import com.logpm.basicdata.service.IBasicdataWarehouseService; |
|
|
|
import com.logpm.basicdata.vo.BasicdataWarehouseVO; |
|
|
|
import com.logpm.basicdata.vo.BasicdataWarehouseVO; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.log4j.Log4j2; |
|
|
|
import lombok.extern.log4j.Log4j2; |
|
|
|
import org.springblade.common.cache.CacheNames; |
|
|
|
import org.springblade.common.cache.CacheNames; |
|
|
|
|
|
|
|
import org.springblade.common.constant.DictBizConstant; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
import org.springblade.core.redis.cache.BladeRedis; |
|
|
|
import org.springblade.core.redis.cache.BladeRedis; |
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
|
import org.springblade.core.secure.BladeUser; |
|
|
@ -41,12 +47,14 @@ import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
import org.springblade.core.tool.utils.Func; |
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
import org.springblade.core.tool.utils.StringUtil; |
|
|
|
|
|
|
|
import org.springblade.system.cache.DictBizCache; |
|
|
|
import org.springblade.system.entity.Dept; |
|
|
|
import org.springblade.system.entity.Dept; |
|
|
|
import org.springblade.system.feign.IDeptClient; |
|
|
|
import org.springblade.system.feign.IDeptClient; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 仓库 服务实现类 |
|
|
|
* 仓库 服务实现类 |
|
|
@ -69,6 +77,10 @@ public class BasicdataWarehouseServiceImpl extends BaseServiceImpl<BasicdataWare |
|
|
|
|
|
|
|
|
|
|
|
private final BladeRedis redis; |
|
|
|
private final BladeRedis redis; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final IBasicdataClientUserService basicdataClientUserService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final BasicdataStorageServicesMapper basicdataStorageServicesMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// private
|
|
|
|
// private
|
|
|
|
|
|
|
|
|
|
|
@ -149,23 +161,42 @@ public class BasicdataWarehouseServiceImpl extends BaseServiceImpl<BasicdataWare |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
1. 得到仓库列表 |
|
|
|
|
|
|
|
根据当前登录人 |
|
|
|
|
|
|
|
当前人部门 |
|
|
|
|
|
|
|
情况 |
|
|
|
|
|
|
|
1、登录人部门范围大 登录人 -- 仓库 -> 一对多 |
|
|
|
|
|
|
|
递归查询 |
|
|
|
|
|
|
|
2、登录人部门就是营业部节点 登录人 -- 仓库 -> 一对一 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public List<BasicdataWarehouseEntity> getMyWarehouseList() { |
|
|
|
public List<BasicdataWarehouseEntity> getMyWarehouseList() { |
|
|
|
Set<Long> deptIds = new HashSet<>(); |
|
|
|
Set<Long> deptIds = new HashSet<>(); |
|
|
|
// 获取当前登陆人
|
|
|
|
// 获取当前登陆人
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<BasicdataWarehouseEntity> results = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String defaultRoleId = DictBizCache.getValue(DictBizConstant.DEFAULT_MALL_ROLE_ID, DictBizConstant.DEFAULT_MALL_ROLE_ID); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (user.getRoleId().contains(defaultRoleId)) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 当前这登录的用户为商场用户
|
|
|
|
|
|
|
|
// 根据当前登录人查询商场信息
|
|
|
|
|
|
|
|
List<BasicdataClientUserEntity> basicdataClientUserEntityListByUserIds = basicdataClientUserService.getBasicdataClientUserEntityListByUserId(AuthUtil.getUserId()); |
|
|
|
|
|
|
|
List clientIds = null; |
|
|
|
|
|
|
|
if (Func.isNotEmpty(basicdataClientUserEntityListByUserIds)) { |
|
|
|
|
|
|
|
clientIds = basicdataClientUserEntityListByUserIds.stream().map(BasicdataClientUserEntity::getClientId).collect(Collectors.toList()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 根据商场信息查询商场的服务仓库
|
|
|
|
|
|
|
|
LambdaQueryWrapper<BasicdataStorageServicesEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
|
|
lambdaQueryWrapper.in(BasicdataStorageServicesEntity::getClientId, clientIds); |
|
|
|
|
|
|
|
// 得到仓库列表
|
|
|
|
|
|
|
|
List<BasicdataStorageServicesEntity> basicdataStorageServicesEntities = basicdataStorageServicesMapper.selectList(lambdaQueryWrapper); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (basicdataStorageServicesEntities != null && !basicdataStorageServicesEntities.isEmpty()) { |
|
|
|
|
|
|
|
results = new ArrayList<>(); |
|
|
|
|
|
|
|
for (BasicdataStorageServicesEntity basicdataStorageServicesEntity : basicdataStorageServicesEntities) { |
|
|
|
|
|
|
|
BasicdataWarehouseEntity basicdataWarehouseEntity = new BasicdataWarehouseEntity(); |
|
|
|
|
|
|
|
basicdataWarehouseEntity.setId(basicdataStorageServicesEntity.getServeWarehouseId()); |
|
|
|
|
|
|
|
basicdataWarehouseEntity.setName(basicdataStorageServicesEntity.getServeWarehouseName()); |
|
|
|
|
|
|
|
results.add(basicdataWarehouseEntity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
//查询出部门表
|
|
|
|
//查询出部门表
|
|
|
|
String deptId = user.getDeptId(); |
|
|
|
String deptId = user.getDeptId(); |
|
|
|
String[] split = deptId.split(","); |
|
|
|
String[] split = deptId.split(","); |
|
|
@ -182,50 +213,13 @@ public class BasicdataWarehouseServiceImpl extends BaseServiceImpl<BasicdataWare |
|
|
|
if (deptIds.isEmpty()) { |
|
|
|
if (deptIds.isEmpty()) { |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
return baseMapper.selectList(Wrappers.<BasicdataWarehouseEntity>query().lambda().in(BasicdataWarehouseEntity::getDepartment, deptIds)); |
|
|
|
results = baseMapper.selectList(Wrappers.<BasicdataWarehouseEntity>query().lambda().in(BasicdataWarehouseEntity::getDepartment, deptIds)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public BasicdataWarehouseEntity getMyWarehouseList(String deptId, String tenantId, Long userId) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询出部门表
|
|
|
|
|
|
|
|
// List<Dept> userDeptNode = deptClient.getUserDeptNode(Long.parseLong(deptId));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set<Long> deptIds = new HashSet<>(); |
|
|
|
|
|
|
|
// String deptId = user.getDeptId();
|
|
|
|
|
|
|
|
String[] split = deptId.split(","); |
|
|
|
|
|
|
|
for (String s : split) { |
|
|
|
|
|
|
|
List<Dept> userDeptNode = deptClient.getUserDeptNode(Long.parseLong(s)); |
|
|
|
|
|
|
|
if (Func.isEmpty(userDeptNode)) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
userDeptNode.forEach(u -> { |
|
|
|
|
|
|
|
deptIds.add(u.getId()); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return results; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if (Func.isEmpty(userDeptNode)) {
|
|
|
|
|
|
|
|
// log.error("userDeptNode用户部门信息有误+{" + userDeptNode + "}");
|
|
|
|
|
|
|
|
// return null;
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// userDeptNode.forEach(u -> {
|
|
|
|
|
|
|
|
// deptIds.add(u.getId());
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
BasicdataWarehouseEntity warehouseEntity = null; |
|
|
|
|
|
|
|
List<BasicdataWarehouseEntity> warehouseEntityList = baseMapper.selectList(Wrappers.<BasicdataWarehouseEntity>query().lambda().in(BasicdataWarehouseEntity::getDepartment, deptIds)); |
|
|
|
|
|
|
|
if(warehouseEntityList.isEmpty()){ |
|
|
|
|
|
|
|
return warehouseEntity; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// String json = redis.get(CacheNames.tenantKeyObj(user.getTenantId(), CacheNames.USER_WAREHOUSE_KEY, user.getUserId()));
|
|
|
|
|
|
|
|
if (warehouseEntityList.size() <= 1) { |
|
|
|
|
|
|
|
warehouseEntity = warehouseEntityList.get(0); |
|
|
|
|
|
|
|
String json = JSONObject.toJSONString(warehouseEntity); |
|
|
|
|
|
|
|
redis.setEx(CacheNames.tenantKeyObj(tenantId, CacheNames.USER_WAREHOUSE_KEY, userId), json, 30 * 24 * 60 * 60L); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return warehouseEntity; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -246,10 +240,16 @@ public class BasicdataWarehouseServiceImpl extends BaseServiceImpl<BasicdataWare |
|
|
|
// 2、用户没有选择仓库的动作,返回null
|
|
|
|
// 2、用户没有选择仓库的动作,返回null
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public BasicdataWarehouseEntity getMyCurrentWarehouse() { |
|
|
|
public BasicdataWarehouseEntity getMyCurrentWarehouse() { |
|
|
|
|
|
|
|
// 根据当前登陆人的信息和角色判断查询是所属仓库 还是服务仓库
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
String json = redis.get(CacheNames.tenantKeyObj(user.getTenantId(), CacheNames.USER_WAREHOUSE_KEY, user.getUserId())); |
|
|
|
String json = redis.get(CacheNames.tenantKeyObj(user.getTenantId(), CacheNames.USER_WAREHOUSE_KEY, user.getUserId())); |
|
|
|
if (StringUtil.isBlank(json)) { |
|
|
|
if (StringUtil.isBlank(json)) { |
|
|
|
return getMyWarehouseList(user.getDeptId(),user.getTenantId(),user.getUserId()); |
|
|
|
List<BasicdataWarehouseEntity> myWarehouseList = getMyWarehouseList(); |
|
|
|
|
|
|
|
if (myWarehouseList != null) { |
|
|
|
|
|
|
|
if (myWarehouseList.size() == 1) { |
|
|
|
|
|
|
|
return myWarehouseList.get(0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
BasicdataWarehouseEntity o = JSONObject.parseObject(json, BasicdataWarehouseEntity.class); |
|
|
|
BasicdataWarehouseEntity o = JSONObject.parseObject(json, BasicdataWarehouseEntity.class); |
|
|
|
return o; |
|
|
|
return o; |
|
|
|