Merge branch 'dev_change_0814' into dev
# Conflicts: # web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.javadev
commit
b468eaf7df
|
|
@ -3,8 +3,8 @@ spring:
|
|||
import:
|
||||
# - classpath:nacos.yml
|
||||
# - classpath:sdk.yml
|
||||
# - classpath:nacos-prod.yml
|
||||
# - classpath:sdk-prod.yml
|
||||
- classpath:nacos-prod2.yml
|
||||
- classpath:sdk-prod2.yml
|
||||
- classpath:nacos-prod.yml
|
||||
- classpath:sdk-prod.yml
|
||||
# - classpath:nacos-prod2.yml
|
||||
# - classpath:sdk-prod2.yml
|
||||
- classpath:swagger.yml
|
||||
|
|
|
|||
|
|
@ -103,4 +103,9 @@ public class ZcloudCorpFacadeImpl implements ZcloudCorpFacade {
|
|||
return Response.buildSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response saveAdminCorp() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,6 +104,12 @@ public class DepartmentController {
|
|||
return MultiResponse.of(departmentService.listAllTreeByCorpType(qry));
|
||||
}
|
||||
|
||||
@ApiOperation("所有企业下部门树状所有数据根据企业类型和企业id集合")
|
||||
@PostMapping("/listAllTreeByCorpTypeAndCorpIds")
|
||||
public MultiResponse<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(@RequestBody DepartmentTreeCorpQry qry) {
|
||||
return MultiResponse.of(departmentService.listAllTreeByCorpTypeAndCorpIds(qry));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,10 @@ public class UserAddExe {
|
|||
} catch (Exception e) {
|
||||
log.error("用户变更记录保存失败(不影响用户主体), userId: {}, error: {}", userE.getId(), e.getMessage(), e);
|
||||
}
|
||||
String userAvatarUrl = userE.getUserAvatarUrl();
|
||||
if (userAvatarUrl == null || userAvatarUrl.trim().isEmpty()) {
|
||||
log.info("新增用户未传人脸URL,跳过大华同步, userId={}", userE.getId());
|
||||
} else {
|
||||
log.info("========== 新增用户-开始查询大华是否已存在该人员 ==========");
|
||||
Integer queryDahuaId = null;
|
||||
String queryDahuaCode = null;
|
||||
|
|
@ -259,7 +263,7 @@ public class UserAddExe {
|
|||
}
|
||||
} else {
|
||||
log.info("大华未找到该人员,开始执行 syncDaHuaPerson 新增大华人员");
|
||||
DaHuaSyncResult syncResult = syncDaHuaPerson(userE);
|
||||
DaHuaSyncResult syncResult = syncDaHuaPerson(userE, userAvatarUrl, true);
|
||||
if (syncResult.dahuaId != null) {
|
||||
try {
|
||||
UserE updateDahua = new UserE();
|
||||
|
|
@ -277,6 +281,7 @@ public class UserAddExe {
|
|||
log.info("大华同步未返回dahuaId,跳过写回操作, userId={}, dahuaCode={}", userE.getId(), syncResult.dahuaCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (BizException e) {
|
||||
log.error("新增用户业务异常: {}", e.getMessage(), e);
|
||||
throw e;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.jjb.saas.system.client.dept.facade.DeptFacade;
|
|||
import com.jjb.saas.system.client.role.facade.RoleFacade;
|
||||
import com.jjb.saas.system.client.role.response.RoleCO;
|
||||
import com.jjb.saas.system.client.user.facade.UserFacade;
|
||||
import com.zcloud.basic.info.domain.enums.UserRZFlagEnum;
|
||||
import com.zcloud.basic.info.domain.gateway.DepartmentGateway;
|
||||
import com.zcloud.basic.info.domain.gateway.PostGateway;
|
||||
import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway;
|
||||
|
|
@ -412,6 +413,7 @@ public class UserImportExe {
|
|||
user.setPhone(importEntity.getUsername());
|
||||
user.setUserType(corpFlag);
|
||||
user.setMainCorpFlag(0);
|
||||
user.setRzFlag(UserRZFlagEnum.YES.getCode());
|
||||
user.setRoleId(roleId);
|
||||
user.setDepartmentId(departmentId);
|
||||
user.setPostId(postId);
|
||||
|
|
|
|||
|
|
@ -113,10 +113,20 @@ public class UserUpdateExe {
|
|||
log.info("【getInfoById查询结果】dahuaId={}, dahuaCode={}, name={}, userIdCard={}",
|
||||
userDO.getDahuaId(), userDO.getDahuaCode(), userDO.getName(), userDO.getUserIdCard());
|
||||
|
||||
if (userUpdateCmd.getUserAvatarUrl() != null && !userUpdateCmd.getUserAvatarUrl().trim().isEmpty()) {
|
||||
syncDaHuaInfo(userUpdateCmd, userDO, userE);
|
||||
String requestUserAvatarUrl = userUpdateCmd.getUserAvatarUrl();
|
||||
String userAvatarUrl = requestUserAvatarUrl;
|
||||
if (userAvatarUrl == null || userAvatarUrl.trim().isEmpty()) {
|
||||
userAvatarUrl = userDO.getUserAvatarUrl();
|
||||
}
|
||||
if (userAvatarUrl != null && !userAvatarUrl.trim().isEmpty()) {
|
||||
userUpdateCmd.setUserAvatarUrl(userAvatarUrl);
|
||||
try {
|
||||
syncDaHuaInfo(userUpdateCmd, userDO, userE);
|
||||
} finally {
|
||||
userUpdateCmd.setUserAvatarUrl(requestUserAvatarUrl);
|
||||
}
|
||||
} else {
|
||||
log.info("userAvatarUrl为空,跳过大华信息同步, userId={}", userDO.getId());
|
||||
log.info("请求参数和数据库中的userAvatarUrl均为空,跳过大华信息同步, userId={}", userDO.getId());
|
||||
}
|
||||
|
||||
UserE oldUserE = new UserE();
|
||||
|
|
@ -902,8 +912,42 @@ public class UserUpdateExe {
|
|||
|
||||
private boolean updateDaHuaUserFace(UserDO userDO, Integer dahuaId, String userAvatarUrl) {
|
||||
Map<String, Object> personMap = new HashMap<>();
|
||||
String plainIdCard = decodeUserIdCard(userDO.getUserIdCard());
|
||||
String dahuaCode = getDaHuaCodeForSave(userDO);
|
||||
|
||||
personMap.put("id", dahuaId);
|
||||
personMap.put("departmentId", userDO.getCorpinfoId());
|
||||
personMap.put("name", userDO.getName());
|
||||
personMap.put("code", dahuaCode);
|
||||
personMap.put("paperType", 111);
|
||||
personMap.put("paperNumber", plainIdCard);
|
||||
personMap.put("phone", userDO.getPhone());
|
||||
personMap.put("departmentId", userDO.getCorpinfoId() != null ? userDO.getCorpinfoId() : 1L);
|
||||
personMap.put("nationName", userDO.getNationName() != null && !userDO.getNationName().trim().isEmpty()
|
||||
? userDO.getNationName() : "汉族");
|
||||
try {
|
||||
personMap.put("nation", userDO.getNation() != null && !userDO.getNation().trim().isEmpty()
|
||||
? Integer.parseInt(userDO.getNation().trim()) : 1);
|
||||
} catch (NumberFormatException e) {
|
||||
log.warn("同步大华人脸时民族编码转换失败,使用默认值1, userId={}, nation={}",
|
||||
userDO.getId(), userDO.getNation());
|
||||
personMap.put("nation", 1);
|
||||
}
|
||||
personMap.put("service", "evo-thirdParty");
|
||||
|
||||
Integer age = null;
|
||||
Integer sex = null;
|
||||
if (plainIdCard != null && plainIdCard.length() == 18) {
|
||||
try {
|
||||
LocalDate birthDate = LocalDate.parse(plainIdCard.substring(6, 14),
|
||||
DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
age = Period.between(birthDate, LocalDate.now()).getYears();
|
||||
sex = Integer.parseInt(plainIdCard.substring(16, 17)) % 2 == 0 ? 2 : 1;
|
||||
} catch (Exception e) {
|
||||
log.warn("同步大华人脸时解析年龄和性别失败, userId={}", userDO.getId());
|
||||
}
|
||||
}
|
||||
personMap.put("age", age);
|
||||
personMap.put("sex", sex);
|
||||
addDaHuaFace(personMap, userAvatarUrl);
|
||||
|
||||
DaHuaPersonSyncCmd daHuaCmd = cn.hutool.core.bean.BeanUtil.toBean(personMap, DaHuaPersonSyncCmd.class);
|
||||
|
|
@ -914,6 +958,8 @@ public class UserUpdateExe {
|
|||
(List<DaHuaPersonSyncCmd.PersonBiosignature>) biosignatures;
|
||||
daHuaCmd.setPersonBiosignatures(faceList);
|
||||
}
|
||||
log.info("同步大华人脸更新参数已补全, userId={}, dahuaId={}, name={}, departmentId={}",
|
||||
userDO.getId(), dahuaId, daHuaCmd.getName(), daHuaCmd.getDepartmentId());
|
||||
|
||||
try {
|
||||
SingleResponse<Boolean> updateResponse = zcloudDaHuaFacade.updatePerson(daHuaCmd);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.zcloud.basic.info.command.query;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.basic.info.command.convertor.DepartmentCoConvertor;
|
||||
|
|
@ -204,6 +205,30 @@ public class DepartmentQueryExe {
|
|||
return result2;
|
||||
}
|
||||
|
||||
public Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
List<Integer> enterpriseType = CorpTypeEnum.getCodesByEnterpriseType(qry.getEnterpriseType());
|
||||
if (CollUtil.isNotEmpty(enterpriseType)) {
|
||||
params.put("inType", enterpriseType);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(qry.getCorpinfoIdList())) {
|
||||
try {
|
||||
List<Long> corpinfoIdList = qry.getCorpinfoIdList().stream()
|
||||
.map(StringUtils::trim)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
params.put("corpinfoIdList", corpinfoIdList);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new BizException("企业id格式错误");
|
||||
}
|
||||
}
|
||||
List<DepartmentDO> pageResponse = departmentRepository.listAllTreeByCorpTypeAndCorpIds(params);
|
||||
if (CollUtil.isEmpty(pageResponse)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return getDepartmentAllTree(pageResponse);
|
||||
}
|
||||
|
||||
|
||||
public Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry departmentQry) {
|
||||
if (Objects.isNull(departmentQry.getEqCorpinfoId())) {
|
||||
|
|
|
|||
|
|
@ -95,6 +95,11 @@ public class DepartmentServiceImpl implements DepartmentServiceI {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry) {
|
||||
return departmentQueryExe.listAllTreeByCorpTypeAndCorpIds(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(value = "deptAllNameCache", key="'deptId:'+#deptId")
|
||||
public String getFullNameForList(Long deptId, List<DepartmentCO> list) {
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ public interface DepartmentServiceI {
|
|||
|
||||
Collection<DepartmentTreeInfoCO> listAllTreeByCorpType(DepartmentTreeQry qry);
|
||||
|
||||
Collection<DepartmentTreeInfoCO> listAllTreeByCorpTypeAndCorpIds(DepartmentTreeCorpQry qry);
|
||||
|
||||
Long addHumanUserDept(DepartmentAddCmd cmd);
|
||||
|
||||
Collection<DepartmentTreeInfoCO> listTreeNopermission(DepartmentTreeQry qry);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
package com.zcloud.basic.info.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DepartmentTreeCorpQry extends DepartmentTreeQry {
|
||||
|
||||
@ApiModelProperty(value = "企业id集合", name = "corpinfoIdList")
|
||||
private List<String> corpinfoIdList;
|
||||
}
|
||||
|
|
@ -5,8 +5,11 @@ import com.alibaba.cola.exception.BizException;
|
|||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import com.jjb.saas.framework.utils.DataEncryptDecryptUtil;
|
||||
import com.zcloud.basic.info.domain.enums.CorpTypeEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserEmploymentFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserRZFlagEnum;
|
||||
import com.zcloud.basic.info.domain.enums.UserTypeEnum;
|
||||
import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity;
|
||||
import com.zcloud.gbscommon.utils.ExcelUtils;
|
||||
import com.zcloud.gbscommon.utils.MD5;
|
||||
|
|
@ -185,6 +188,9 @@ public class UserE extends BaseE {
|
|||
userE.setTenantId(!ObjectUtils.isEmpty(userE.getTenantId()) ? userE.getTenantId() : tenantId);
|
||||
userE.setCorpinfoId(!ObjectUtils.isEmpty(userE.getCorpinfoId()) ? userE.getCorpinfoId() : tenantId);
|
||||
userE.setEmploymentFlag(1);
|
||||
if (userE.getRzFlag() == null) {
|
||||
userE.setRzFlag(UserRZFlagEnum.NO.getCode());
|
||||
}
|
||||
userE.setPassword(defaultPassword);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,5 +29,7 @@ public interface DepartmentMapper extends BaseMapper<DepartmentDO> {
|
|||
IPage<DepartmentDO> selectDeptPage(IPage<DepartmentDO> iPage, @Param("ew") QueryWrapper<DepartmentDO> queryWrapper, String menuPerms);
|
||||
|
||||
List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas);
|
||||
|
||||
List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ public interface DepartmentRepository extends BaseRepository<DepartmentDO> {
|
|||
|
||||
List<DepartmentDO> listAllTreeByCorpType(Map<String, Object> parmas);
|
||||
|
||||
List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params);
|
||||
|
||||
void deleteByCorpInfoId(Long corpInfoId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,6 +136,11 @@ public class DepartmentRepositoryImpl extends BaseRepositoryImpl<DepartmentMappe
|
|||
return departmentMapper.listAllTreeByCorpType(parmas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DepartmentDO> listAllTreeByCorpTypeAndCorpIds(Map<String, Object> params) {
|
||||
return departmentMapper.listAllTreeByCorpTypeAndCorpIds(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean existsByName(Long parentId,String name, Long id) {
|
||||
QueryWrapper<DepartmentDO> queryWrapper = new QueryWrapper<>();
|
||||
|
|
|
|||
|
|
@ -30,5 +30,26 @@
|
|||
</if>
|
||||
order by c.corp_order, c.create_time desc,d.dep_order, d.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="listAllTreeByCorpTypeAndCorpIds" resultType="com.zcloud.basic.info.persistence.dataobject.DepartmentDO">
|
||||
select d.*
|
||||
from department d
|
||||
left join corp_info c on d.corpinfo_id = c.id
|
||||
where d.delete_enum = 'FALSE'
|
||||
and c.delete_enum = 'FALSE'
|
||||
<if test="inType != null and inType.size() > 0">
|
||||
and c.type in
|
||||
<foreach collection="inType" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="corpinfoIdList != null and corpinfoIdList.size() > 0">
|
||||
and c.id in
|
||||
<foreach collection="corpinfoIdList" item="corpinfoId" open="(" close=")" separator=",">
|
||||
#{corpinfoId}
|
||||
</foreach>
|
||||
</if>
|
||||
order by c.corp_order, c.create_time desc,d.dep_order, d.create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue