bug修改

This commit is contained in:
guoshengxiong 2024-04-21 22:10:00 +08:00
parent e3ca372c86
commit aed6febfd6
6 changed files with 95 additions and 66 deletions

View File

@ -69,6 +69,8 @@ public interface ISystemUserService extends IService<SystemUser> {
void delete(Map<String, Object> map);
public void deleteTenantOrSupplier(String userId, String projectSn);
boolean isSubProject();
List<SystemUser> getSystemUserList(Map<String, Object> map);

View File

@ -1214,62 +1214,69 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
}
if (systemUser.getAccountType() == 10) {
//新用户
//查tree
if (StrUtil.isBlank(projectSn)) {
throw new OpenAlertException("projectSn不能为空");
}
HashMap<String, Object> companyMap = new HashMap<>();
HashMap<String, Object> getHeadMap = new HashMap<>();
getHeadMap.put("companyType", 4);
getHeadMap.put("sn", projectSn);
Company headquarterCompany = companyMapper.getHeadquarterCompany(getHeadMap);
if (headquarterCompany == null) {
throw new OpenAlertException("总公司为空");
}
companyMap.put("headquartersSn", headquarterCompany.getHeadquartersSn());
companyMap.put("userId", systemUser.getUserId());
JSONArray snTreeJa = companyService.getTenantOrgTreeList(companyMap);
if (snTreeJa == null) {
throw new OpenAlertException("组织架构为空");
}
//往上删除
List<String> deleteSnList = new ArrayList<>();
deleteSnList.add(projectSn);
List<Object> objects = ListUtils.treeToListWithChildren(snTreeJa, "companyId", "parentId", "list", "0");
List<JSONObject> snList = objects.stream().map(o -> ((JSONObject) o)).collect(Collectors.toList());
JSONObject projectSnJo = snList.stream().filter(o -> Objects.equals(o.getString("projectSn"), projectSn)).findFirst().get();
JSONArray jsonArray = new JSONArray();
String companySn = projectSnJo.getString("companySn");
JSONObject companyJo;
companyJo = snList.stream().filter(o -> Objects.equals(o.getString("companySn"), companySn)).findFirst().get();
if (companyJo.getJSONArray("list").size() <= 1) {
do {
deleteSnList.add(companyJo.getString("sn"));
String parentId = companyJo.getString("parentId");
Optional<JSONObject> companyOp = snList.stream().filter(o -> Objects.equals(o.getString("companyId"), parentId)).findFirst();
if (!companyOp.isPresent()) {
break;
}
companyJo = companyOp.get();
jsonArray = companyJo.getJSONArray("list");
} while (jsonArray.size() <= 1);
}
//再查一次无结果就删除账号
xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper<XzSystemUserToCompanyProject>()
.in(XzSystemUserToCompanyProject::getSn, deleteSnList)
.eq(XzSystemUserToCompanyProject::getUserId, systemUser.getUserId())
);
Integer count = xzSystemUserToCompanyProjectMapper.selectCount(new LambdaQueryWrapper<XzSystemUserToCompanyProject>()
.eq(XzSystemUserToCompanyProject::getUserId, systemUser.getUserId())
);
if (count == 0) {
deleteUser(id);
}
deleteTenantOrSupplier(id, projectSn);
} else {
deleteUser(id);
}
}
public void deleteTenantOrSupplier(String userId, String projectSn) {
//查tree
if (StrUtil.isBlank(projectSn)) {
throw new OpenAlertException("projectSn不能为空");
}
HashMap<String, Object> companyMap = new HashMap<>();
HashMap<String, Object> getHeadMap = new HashMap<>();
getHeadMap.put("companyType", 4);
getHeadMap.put("sn", projectSn);
Company headquarterCompany = companyMapper.getHeadquarterCompany(getHeadMap);
if (headquarterCompany == null) {
throw new OpenAlertException("总公司为空");
}
companyMap.put("headquartersSn", headquarterCompany.getHeadquartersSn());
companyMap.put("userId", userId);
JSONArray snTreeJa = companyService.getTenantOrgTreeList(companyMap);
if (snTreeJa == null) {
throw new OpenAlertException("组织架构为空");
}
//往上删除
List<String> deleteSnList = new ArrayList<>();
deleteSnList.add(projectSn);
List<Object> objects = ListUtils.treeToListWithChildren(snTreeJa, "companyId", "parentId", "list", "0");
List<JSONObject> snList = objects.stream().map(o -> ((JSONObject) o)).collect(Collectors.toList());
JSONObject projectSnJo = snList.stream().filter(o -> Objects.equals(o.getString("projectSn"), projectSn)).findFirst().get();
JSONArray jsonArray = new JSONArray();
String companySn = projectSnJo.getString("companySn");
JSONObject companyJo;
companyJo = snList.stream().filter(o -> Objects.equals(o.getString("companySn"), companySn)).findFirst().get();
if (companyJo.getJSONArray("list").size() <= 1) {
do {
deleteSnList.add(companyJo.getString("sn"));
String parentId = companyJo.getString("parentId");
Optional<JSONObject> companyOp = snList.stream().filter(o -> Objects.equals(o.getString("companyId"), parentId)).findFirst();
if (!companyOp.isPresent()) {
break;
}
companyJo = companyOp.get();
jsonArray = companyJo.getJSONArray("list");
} while (jsonArray.size() <= 1);
}
//再查一次无结果就删除账号
xzSystemUserToCompanyProjectMapper.delete(new LambdaQueryWrapper<XzSystemUserToCompanyProject>()
.in(XzSystemUserToCompanyProject::getSn, deleteSnList)
.eq(XzSystemUserToCompanyProject::getUserId, userId)
);
Integer count = xzSystemUserToCompanyProjectMapper.selectCount(new LambdaQueryWrapper<XzSystemUserToCompanyProject>()
.eq(XzSystemUserToCompanyProject::getUserId, userId)
);
SystemUser systemUser = baseMapper.selectById(userId);
if (count == 0) {
if (systemUser.getAccountType() == 10) {
deleteUser(String.valueOf(userId));
}
}
}
private void deleteUser(String id) {
removeById(id);
qualityRegionMapper.updateDutyNull(id);

View File

@ -210,7 +210,7 @@ public class EnterpriseInfoController {
@ApiOperation(value = "统计企业的供应商信息", notes = "统计企业的供应商信息", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "sn", value = "企业sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "body", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"),
})

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wflow.bean.vo.OrgTreeVo;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.project.entity.XzUserToSupplier;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -62,4 +63,6 @@ public interface EnterpriseInfoMapper extends BaseMapper<EnterpriseInfo> {
List<OrgTreeVo> selectByPy(@Param("py") String py, @Param("projectSn") String projectSn);
Page<EnterpriseInfo> countSupplier(Page page, @Param("param") Map<String, Object> paramMap);
List<XzUserToSupplier> getSupplierUserIdByProjectSnAndEnterpriseId(@Param("projectSn") String projectSn, @Param("enterpriseId") String enterpriseId);
}

View File

@ -175,31 +175,41 @@
</select>
<select id="countSupplier" resultType="com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo">
SELECT distinct ei.*,(SELECT count(*) projectNum,pe.enterprise_id from project_enterprise pe join project p on
p.project_sn=pe.project_sn group by pe.enterprise_id) projectNum
SELECT distinct ei.*,(SELECT
count(*) projectNum
FROM
project_enterprise pe
WHERE pe.enterprise_id = ei.id and a.project_sn=pe.project_sn) projectNum
FROM enterprise_info ei
join project_enterprise pe on pe.enterprise_id = ei.id
join project a on pe.project_sn = ei.id
join project a on pe.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id
LEFT JOIN company f ON b.parent_id = f.company_id
<!--1总部2区域3城市4一个项目5项目部-->
<where>
<if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn}
<if test="param.companyType == '1'.toString()">
and f.headquarters_sn = #{param.sn}
</if>
<if test="companyType == '2'.toString()">
and f.company_sn = #{sn}
<if test="param.companyType == '2'.toString()">
and f.company_sn = #{param.sn}
</if>
<if test="companyType == '3'.toString()">
and b.company_sn = #{sn}
<if test="param.companyType == '3'.toString()">
and b.company_sn = #{param.sn}
</if>
<if test="companyType == '4'.toString()">
and a.project_sn = #{sn}
<if test="param.companyType == '4'.toString()">
and a.project_sn = #{param.sn}
</if>
<if test="companyType == '5'.toString()">
and cp.company_sn = #{sn}
<if test="param.companyType == '5'.toString()">
and cp.company_sn = #{param.sn}
</if>
</where>
</select>
<select id="getSupplierUserIdByProjectSnAndEnterpriseId"
resultType="com.zhgd.xmgl.modules.project.entity.XzUserToSupplier">
select distinct ts.* from xz_user_to_supplier ts
join xz_system_user_to_company_project xsutcp on ts.user_id = xsutcp.user_id
where ts.xz_supplier_id =#{enterpriseId} and xsutcp.sn = #{projectSn}
</select>
</mapper>

View File

@ -18,6 +18,7 @@ import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.basicdata.service.impl.CompanyServiceImpl;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
import com.zhgd.xmgl.modules.project.entity.XzUserToSupplier;
import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
@ -177,7 +178,9 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
throw new OpenAlertException(MessageUtil.get("notDeleteEnterpriseErr"));
}
Integer dCount = departmentInfoMapper.selectCount(new LambdaQueryWrapper<DepartmentInfo>()
.eq(DepartmentInfo::getEnterpriseId, enterpriseId));
.eq(DepartmentInfo::getEnterpriseId, enterpriseId)
.eq(DepartmentInfo::getProjectSn, projectSn)
);
if (dCount > 0) {
throw new OpenAlertException("企业下存在部门,不允许删除");
}
@ -190,6 +193,10 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
asyncWorker.removeEnterpriseInfo(projectEnterprise);
asyncJiLianDa.removeEnterpriseInfo(projectEnterprise);
}
List<XzUserToSupplier> xzUserToSuppliers = baseMapper.getSupplierUserIdByProjectSnAndEnterpriseId(projectSn, enterpriseId);
for (XzUserToSupplier xzUserToSupplier : xzUserToSuppliers) {
systemUserService.deleteTenantOrSupplier(String.valueOf(xzUserToSupplier.getUserId()), projectSn);
}
//同步海康
asyncHikvision.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn);