diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml
index cfdcf7d87..5383ff41c 100644
--- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml
+++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml
@@ -199,11 +199,12 @@
diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java
index 087a7bd02..6b3629ac1 100644
--- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java
+++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java
@@ -92,4 +92,11 @@ public interface ISystemUserService extends IService {
Page getSystemUserBySnPage(Map map);
Map deviceLogin(Map map);
+
+ /**
+ * 判断是否为供应商
+ *
+ * @return
+ */
+ boolean isSupplier();
}
diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java
index 7ca6f62b0..ec938e82c 100644
--- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java
@@ -1445,6 +1445,12 @@ public class SystemUserServiceImpl extends ServiceImpl selectHiddenDangerInspectRegion(Map map) {
List list = hiddenDangerInspectRegionMapper.selectHiddenDangerInspectRegionList(map);
- List result = TreeUtil.buildTreeByMap(list, "id", "parentRegion", "children", 0L);
+ List result = ListUtils.buildTreeByMap(list, "id", "parentRegion", "children", 0L);
return result;
}
diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRegionServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRegionServiceImpl.java
index 1222fbef6..769e33f6a 100644
--- a/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRegionServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRegionServiceImpl.java
@@ -1,11 +1,11 @@
package com.zhgd.xmgl.modules.quality.service.impl;
+import cn.hutool.core.lang.tree.TreeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.quality.entity.QualityRegion;
import com.zhgd.xmgl.modules.quality.mapper.QualityRegionMapper;
import com.zhgd.xmgl.modules.quality.service.IQualityRegionService;
-import com.zhgd.xmgl.util.TreeUtil;
+import com.zhgd.xmgl.util.ListUtils;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -30,7 +30,7 @@ public class QualityRegionServiceImpl extends ServiceImpl selectQualityRegionList(Map map) {
List list = qualityRegionMapper.selectQualityRegionList(map);
- return TreeUtil.buildTreeByMap(list, "id", "parentRegion", "children", 0L);
+ return ListUtils.buildTreeByMap(list, "id", "parentRegion", "children", 0L);
}
private List groupList(List list, List childList) {
diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml
index ad15c3c6d..75d833787 100644
--- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml
+++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/EnterpriseInfoMapper.xml
@@ -114,7 +114,8 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java
index 55431ddc9..870f7f088 100644
--- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java
@@ -14,6 +14,7 @@ import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker;
import com.zhgd.xmgl.base.CompanyVo;
+import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper;
@@ -27,19 +28,20 @@ import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
import com.zhgd.xmgl.modules.worker.mapper.TeamInfoMapper;
import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService;
import com.zhgd.xmgl.modules.worker.service.IUserEnterpriseService;
+import com.zhgd.xmgl.modules.xz.service.impl.XzSupplierQualificationApplyServiceImpl;
+import com.zhgd.xmgl.security.entity.UserInfo;
+import com.zhgd.xmgl.security.util.SecurityUtils;
import com.zhgd.xmgl.util.ListUtils;
import com.zhgd.xmgl.util.MessageUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
/**
* @Description: 劳务公司
@@ -68,6 +70,10 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl getEnterpriseInfoList(Map map) {
@@ -78,7 +84,28 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl list = enterpriseInfoMapper.getEnterpriseInfoList(map);
+ if (systemUserService.isSupplier()) {
+ return getSupplierEnterprises(list);
+ } else {
+ return list;
+ }
+ }
+
+ @NotNull
+ public List getSupplierEnterprises(List list) {
+ UserInfo user = SecurityUtils.getUser();
+ EnterpriseInfo info = xzSupplierQualificationApplyService.getSupplierInfoByUserId(user.getUserId());
+ Optional optional = list.stream().filter(entityMap -> entityMap.get("id").equals(info.getId().toString())).findFirst();
+ if (!optional.isPresent()) {
+ return new ArrayList<>();
+ }
+ EntityMap infoMap = optional.get();
+ List childrenAsList = ListUtils.getChildrenAsList(infoMap, list, "id", "parentEnterpriseId");
+ ArrayList rtList = new ArrayList<>();
+ rtList.add(infoMap);
+ rtList.addAll(childrenAsList);
+ return list;
}
@Override
@@ -226,8 +253,25 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl list = enterpriseInfoMapper.getEnterpriseInfoList(map);
- JSONArray result = ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentEnterpriseId", "children");
- return result;
+ if (systemUserService.isSupplier()) {
+ UserInfo user = SecurityUtils.getUser();
+ EnterpriseInfo info = xzSupplierQualificationApplyService.getSupplierInfoByUserId(user.getUserId());
+ Optional optional = list.stream().filter(entityMap -> entityMap.get("id").equals(info.getId().toString())).findFirst();
+ if (!optional.isPresent()) {
+ return new JSONArray();
+ }
+ EntityMap infoMap = optional.get();
+ List childrenAsList = ListUtils.getChildrenAsList(infoMap, list, "id", "parentEnterpriseId");
+ JSONArray jsonArray = new JSONArray();
+ jsonArray.add(infoMap);
+ for (EntityMap entityMap : childrenAsList) {
+ jsonArray.add(entityMap);
+ }
+ return ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(jsonArray)), "id", "parentEnterpriseId", "children");
+ } else {
+ JSONArray result = ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentEnterpriseId", "children");
+ return result;
+ }
}
@Override
diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/TeamInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/TeamInfoServiceImpl.java
index 30ad7deab..720e053ca 100644
--- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/TeamInfoServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/TeamInfoServiceImpl.java
@@ -11,6 +11,7 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.async.AsyncJiLianDa;
import com.zhgd.xmgl.async.AsyncWorker;
+import com.zhgd.xmgl.modules.basicdata.service.impl.SystemUserServiceImpl;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
@@ -29,10 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* @Description: 人员班组
@@ -43,6 +42,10 @@ import java.util.UUID;
@Service
@Transactional(rollbackFor = Exception.class)
public class TeamInfoServiceImpl extends ServiceImpl implements ITeamInfoService {
+ @Autowired
+ private EnterpriseInfoServiceImpl enterpriseInfoService;
+ @Autowired
+ private SystemUserServiceImpl systemUserService;
@Autowired
private WorkerTypeMapper workerTypeMapper;
@Autowired
@@ -88,7 +91,17 @@ public class TeamInfoServiceImpl extends ServiceImpl i
@Override
public Map getTeamInfoList(Map map) {
Map data = new HashMap<>();
- List list = teamInfoMapper.getTeamInfoList(map);
+ List list = new ArrayList<>();
+ if (systemUserService.isSupplier()) {
+ List enterpriseInfoList = enterpriseInfoMapper.getEnterpriseInfoList(map);
+ List enterprises = enterpriseInfoService.getSupplierEnterprises(enterpriseInfoList);
+ if (CollUtil.isNotEmpty(enterprises)) {
+ map.put("enterpriseIds", enterprises.stream().map(entityMap -> entityMap.get("id")).collect(Collectors.toList()));
+ list = teamInfoMapper.getTeamInfoList(map);
+ }
+ } else {
+ list = teamInfoMapper.getTeamInfoList(map);
+ }
data.put("list", list);
int totalWorkerNum = 0;
for (TeamInfo teamInfo : list) {
diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java
index db67ea90a..5ef1caffe 100644
--- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzRegistryServiceImpl.java
@@ -1,7 +1,6 @@
package com.zhgd.xmgl.modules.xz.service.impl;
import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -168,28 +167,29 @@ public class XzRegistryServiceImpl extends ServiceImpl()
- .eq(SystemUser::getAccount, xz.getAccount()));
- if (su != null) {
- return;
- }
String projectSns = r.getProjectSns();
String companySns = r.getCompanySns();
if (StringUtils.isBlank(projectSns) && StringUtils.isBlank(companySns)) {
throw new OpenAlertException("审核通过的projectSns和companySns不能同时为空");
}
- SystemUser systemUser = new SystemUser();
- systemUser.setAccount(xz.getAccount());
- systemUser.setPassword(xz.getPw());
- systemUser.setRealName(xz.getAccount());
- systemUser.setAccountType(10);
- systemUser.setHeadquartersSn(null);//无关
+ SystemUser su = systemUserMapper.selectOne(new LambdaQueryWrapper()
+ .eq(SystemUser::getAccount, xz.getAccount()));
Long userId = null;
- try {
- userId = systemUserService.saveSystemUser(systemUser);
- } catch (DuplicateKeyException e) {
- e.printStackTrace();
- return;
+ if (su == null) {
+ SystemUser systemUser = new SystemUser();
+ systemUser.setAccount(xz.getAccount());
+ systemUser.setPassword(xz.getPw());
+ systemUser.setRealName(xz.getAccount());
+ systemUser.setAccountType(10);
+ systemUser.setHeadquartersSn(null);//无关
+ try {
+ userId = systemUserService.saveSystemUser(systemUser);
+ } catch (DuplicateKeyException e) {
+ e.printStackTrace();
+ return;
+ }
+ } else {
+ userId = su.getUserId();
}
//处理组织权限
HashMap map = new HashMap<>();
diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java
index 482b49e8b..9e1a40bbc 100644
--- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java
@@ -16,7 +16,10 @@ import com.zhgd.xmgl.modules.basicdata.entity.XzSystemUserToCompanyProject;
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.XzSystemUserToCompanyProjectMapper;
import com.zhgd.xmgl.modules.basicdata.service.impl.CompanyServiceImpl;
+import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
+import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
+import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualification;
import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualificationApply;
import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualificationRecord;
@@ -29,6 +32,7 @@ import com.zhgd.xmgl.modules.xz.service.IXzSupplierQualificationApplyService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.apache.commons.collections.MapUtils;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -47,6 +51,8 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl queryPageList(HashMap paramMap) {
@@ -116,7 +124,7 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl projectSnList = new HashSet<>();
projectSnList.add(projectSn);
@@ -140,10 +148,30 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl eiMap = new HashMap<>();
+ eiMap.put("userId", applyUserId);
+ EnterpriseInfo ei = enterpriseInfoMapper.getXzSupplierByUserId(eiMap);
+ if (ei == null) {
+ throw new OpenAlertException("请先填写供应商信息");
+ }
+ return ei;
+ }
+
@Override
public void delete(String id) {
XzSupplierQualificationApply xzSupplierQualificationApply = baseMapper.selectById(id);
diff --git a/src/main/java/com/zhgd/xmgl/util/ListUtils.java b/src/main/java/com/zhgd/xmgl/util/ListUtils.java
index 33d5d48bb..bf5957fcc 100644
--- a/src/main/java/com/zhgd/xmgl/util/ListUtils.java
+++ b/src/main/java/com/zhgd/xmgl/util/ListUtils.java
@@ -1,7 +1,19 @@
package com.zhgd.xmgl.util;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.zhgd.jeecg.common.mybatis.EntityMap;
+import org.apache.commons.lang3.StringUtils;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* @program: wisdomSite
@@ -14,8 +26,9 @@ public class ListUtils {
/**
* 数据归类
- * @param arr 需要归类的数据
- * @param id 本数据和父级关联的字段名
+ *
+ * @param arr 需要归类的数据
+ * @param id 本数据和父级关联的字段名
* @param pid 父级的字段名
* @param child 归类的的集合存放的字段
* @return
@@ -52,9 +65,181 @@ public class ListUtils {
hashVP.put(child, ch);
}
} else {
+ if (arr.size() == 1) {
+ aVal.put(child, new JSONArray());
+ }
r.add(aVal);
}
}
return r;
}
+
+
+ /**
+ * 通过Map方式构建树
+ *
+ * @param list 列表
+ * @return {@link List}<{@link T}>
+ */
+ public static List buildTreeByMap(List list) {
+ return buildTreeByMap(list, "id", "parentId", "children", "0");
+ }
+
+ /**
+ * 通过Map方式构建树
+ *
+ * @param list 列表
+ * @param idName id名称
+ * @param parentIdName 父id名称
+ * @param childrenName 子节点列表名称
+ * @param topParentIdVal 顶层节点父id的值
+ * @return {@link List}<{@link T}>
+ */
+ public static List buildTreeByMap(List list, String idName, String parentIdName, String childrenName, Object topParentIdVal) {
+ if (StringUtils.isBlank(idName) || StringUtils.isBlank(parentIdName) || StringUtils.isBlank(childrenName)) {
+ return new ArrayList<>();
+ }
+ //根据parentId进行分组
+ Map> mapList = list.stream().collect(Collectors.groupingBy(o -> getFieldValue(o, parentIdName).toString()));
+ //给每个节点设置子节点列表
+ list.forEach(node -> setFieldValue(node, mapList.get(getFieldValue(node, idName).toString()), childrenName));
+ return list.stream().filter(o -> topParentIdVal.equals(getFieldValue(o, parentIdName))).collect(Collectors.toList());
+ }
+
+ /**
+ * 获取属性值
+ *
+ * @param o 对象
+ * @param fieldName 属性名
+ * @return {@link String}
+ */
+ private static Object getFieldValue(Object o, String fieldName) {
+ try {
+ if (o instanceof EntityMap) {
+ return ((EntityMap) o).get(fieldName);
+ } else {
+ Class> oClass = o.getClass();
+ Field field = oClass.getDeclaredField(fieldName);
+ field.setAccessible(true);
+ return field.get(o);
+ }
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 设置字段值
+ *
+ * @param o 对象
+ * @param val 值
+ * @param fieldName 属性名
+ */
+ private static void setFieldValue(Object o, Object val, String fieldName) {
+ try {
+ if (o instanceof EntityMap) {
+ ((EntityMap) o).put(fieldName, val);
+ } else {
+ Class> oClass = o.getClass();
+ Field field = oClass.getDeclaredField(fieldName);
+ field.setAccessible(true);
+ field.set(o, val);
+ }
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+ /**
+ * 递归查询该节点的子节点列表(不包含自己)
+ *
+ * @param root 该节点
+ * @param allList 所有节点列表
+ */
+ public static List getChildrenAsList(T root, List allList, String idName, String parentIdName) {
+ List list = new ArrayList<>();
+ List childrenList = allList.stream()
+ .filter(m -> Objects.equals(getFieldValue(m, parentIdName), getFieldValue(root, idName)))
+ .peek(m -> list.addAll(getChildrenAsList(m, allList, idName, parentIdName)))
+ .collect(Collectors.toList());
+ list.addAll(childrenList);
+ return list;
+ }
+
+ /**
+ * 递归查询当前节点的子节点列表(包含自己)
+ *
+ * @param curNode
+ * @param rsList 返回结果
+ * @param idName
+ * @param parentIdName
+ * @param childrenName
+ * @param topParentIdVal
+ */
+ public static void reversionTreeToList(T curNode, List rsList, String idName, String parentIdName, String childrenName, String topParentIdVal) {
+ Class aClass = (Class) curNode.getClass();
+ rsList.add(BeanUtil.toBean(curNode, aClass));
+ List subCityList = (List) getFieldValue(curNode, childrenName);
+ if (subCityList != null && !subCityList.isEmpty()) {
+ for (T city : subCityList) { //递归寻找子节点的子节点们
+ reversionTreeToList(city, rsList, idName, parentIdName, childrenName, topParentIdVal);
+ }
+ }
+ }
+
+ /**
+ * tree转list
+ *
+ * @param treeList
+ * @param idName
+ * @param parentIdName
+ * @param childrenName
+ * @param topParentIdVal
+ */
+ public static List treeToList(List treeList, String idName, String parentIdName, String childrenName, String topParentIdVal) {
+ List list = new ArrayList<>();
+ //这一层for的目的是:遍历根节点
+ for (T t : treeList) {
+ reversionTreeToList(t, list, idName, parentIdName, childrenName, topParentIdVal);
+ }
+ for (T t : list) {
+ setFieldValue(t, null, childrenName);
+ }
+ return list;
+ }
+
+ /**
+ * 查询当前节点的祖级节点列表(不包含自己)
+ *
+ * @param allList 所有节点列表
+ * @param id 该节点id的值
+ * @param idName
+ * @param parentIdName
+ * @param childrenName
+ * @param topParentIdVal
+ * @param
+ * @return
+ */
+ public static List getParentList(List allList, Object id, String idName, String parentIdName, String childrenName, String topParentIdVal) {
+ List rsList = new ArrayList<>();
+ if (CollUtil.isEmpty(allList)) {
+ return rsList;
+ }
+ Map