feat: (REQ-3300) 变更单详情加上发起人头像/发起人岗位/发起人公司

This commit is contained in:
xudawei 2025-02-07 10:15:30 +08:00
parent 692d1f3e37
commit 3f260a9823
7 changed files with 102 additions and 13 deletions

View File

@ -70,7 +70,10 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware {
@Value("${attendanceUrl:http://dev-app.axzo.cn/attendance}")
private String attendanceApi;
@Value("${thorUrl:http://dev-app.axzo.cn/thor}")
private String thorApi;
private String thorUrl;
@Value("${orgGateway:http://dev-app.axzo.cn/org-gateway}")
private String orgGatewayUrl;
private static String POD_NAMESPACE;
static {
@ -109,7 +112,8 @@ public class FeignConfig implements RequestInterceptor, EnvironmentAware {
url = url.replace("http://karma:8080", karmaEnvUrl);
url = url.replace("http://data-collection:21200", dataCollectionUrl);
url = url.replace("http://attendance:8080", attendanceApi);
url = url.replace("http://thor:8080", thorApi);
url = url.replace("http://thor:8080", thorUrl);
url = url.replace("http://org-gateway:8080", orgGatewayUrl);
String profile = environment.getProperty("spring.profiles.active");
if(Objects.equals(profile, "test") && url.contains("dev-app.axzo.cn")) {
url = url.replace("dev-app", "test-api");

View File

@ -18,7 +18,7 @@ public enum VisaConfirmBizTypeEnum {
CONFIRM("CONFIRM", "确认"),
CREATE("CREATE", "创建"),
APPROVE("CREATE", "审核"),
APPROVE("APPROVE", "审核"),
OTHER("OTHER", "其他"),
;

View File

@ -54,6 +54,31 @@ public class VisaDetailByIdResponse {
*/
private String createName;
/**
* 发起人头像
*/
private String createAvatarUrl;
/**
* 发起人岗位名称
*/
private String createJobName;
/**
* 发起人岗位code
*/
private String createJobCode;
/**
* 发起人单位名称
*/
private String createOuName;
/**
* 发起人单位Id
*/
private Long createOuId;
/**
* 发起人Id
*/

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -23,6 +24,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName(value = "visa_change_record_confirm", autoResultMap = true)
public class ChangeRecordConfirm extends BaseEntity<ChangeRecordConfirm> {

View File

@ -9,6 +9,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm;
import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -43,7 +44,7 @@ public interface ChangeRecordConfirmService {
/**
* 变更签证Id获取map
*/
List<VisaDetailByIdResponse.RelationOuAndPerson> listRelationByVisaId(Long visaId);
List<VisaDetailByIdResponse.RelationOuAndPerson> listRelationByVisaId(List<ChangeRecordConfirm> list);
/**
* 根据条件查询
@ -74,4 +75,9 @@ public interface ChangeRecordConfirmService {
* @return
*/
List<VisaChangeApproveCreateReq.ApprovePersonInfo> listAllConfirmByVisaId(Long visaId);
/**
* 构建公司的MaporgIdAndNameMap,key:ouId,value:ouName
*/
Map<Long, String> buildOrgIdAndNameMap(Set<Long> ouIdSet);
}

View File

@ -179,12 +179,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
* 变更签证Id获取map
*/
@Override
public List<VisaDetailByIdResponse.RelationOuAndPerson> listRelationByVisaId(Long visaId) {
// 1 查询相关确认人
VisaConfirmDto dto = VisaConfirmDto.builder()
.visaId(visaId)
.bizType(VisaConfirmBizTypeEnum.CONFIRM).build();
List<ChangeRecordConfirm> list = this.findByCondition(dto);
public List<VisaDetailByIdResponse.RelationOuAndPerson> listRelationByVisaId(List<ChangeRecordConfirm> list) {
if (CollectionUtils.isEmpty(list)) {
return Lists.newArrayList();
}
@ -204,7 +199,7 @@ public class ChangeRecordConfirmServiceImpl extends ServiceImpl<ChangeRecordConf
/**
* 构建公司的MaporgIdAndNameMap,key:ouId,value:ouName
*/
private Map<Long, String> buildOrgIdAndNameMap(Set<Long> ouIdSet) {
public Map<Long, String> buildOrgIdAndNameMap(Set<Long> ouIdSet) {
if (CollectionUtils.isEmpty(ouIdSet)) {
return Maps.newHashMap();
}

View File

@ -9,6 +9,7 @@ import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.basics.common.util.NumberUtil;
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
import cn.axzo.basics.report.api.sheet.SheetWrapper;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.framework.domain.web.result.PageData;
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
@ -51,10 +52,11 @@ import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao;
import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway;
import cn.axzo.nanopart.visa.server.rpc.DrawingMajorGateway;
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway;
import cn.axzo.nanopart.visa.server.rpc.OrganizationalUnitGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaCooperateShipGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProjectApiGateway;
import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway;
import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway;
import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService;
@ -63,6 +65,9 @@ import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import cn.axzo.nanopart.visa.server.service.VisaHelper;
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
import cn.axzo.thor.client.model.DrawingMajorResp;
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
@ -71,6 +76,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@ -183,6 +189,12 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Resource
private VisaHelper visaHelper;
@Resource
private OrganizationalUnitGateway organizationalUnitGateway;
@Resource
private VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway;
/**
* 状态变更
@ -320,6 +332,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
ProjectDetailRes projectDetailRes = visaProjectApiGateway.getProjectById(visa.getRelationProject());
GetDetailRes workspace = workspaceGateway.getById(visa.getRelationWorkspaceId());
// 1 查询相关确认人
Pair<List<ChangeRecordConfirm>, ChangeRecordConfirm> pair = this.buildConfirmCreate(visaId);
OrgNodeUserDTO orgNodeUserDTO = this.getOrgNodeUserDTO(pair.getValue().getPersonId(), pair.getValue().getOuId(), pair.getValue().getWorkspaceId());
return VisaDetailByIdResponse.builder()
.visaId(visaId)
@ -327,6 +343,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.type(visa.getType()) //单据类型,DESIGN_CHANGE:设计变更,TECHNOLOGY_APPROVED:技术核定,PROJECT_VISA:工程签证
.reason(visa.getReason()) //发生原因
.createName(profile.getRealName()) //发起人姓名
.createAvatarUrl(profile.getAvatarUrl()) // 发起人头像
.createJobCode((Objects.nonNull(orgNodeUserDTO) && Objects.nonNull(orgNodeUserDTO.getJob())) ? orgNodeUserDTO.getJob().getCode() : "") // 发起人岗位code
.createJobName((Objects.nonNull(orgNodeUserDTO) && Objects.nonNull(orgNodeUserDTO.getJob())) ? orgNodeUserDTO.getJob().getName() : "") // 发起人岗位名称
.createOuName((Objects.nonNull(orgNodeUserDTO) && Objects.nonNull(orgNodeUserDTO.getUnit())) ? orgNodeUserDTO.getUnit().getName() : "") //发起人单位名称
.createOuId((Objects.nonNull(orgNodeUserDTO) && Objects.nonNull(orgNodeUserDTO.getUnit())) ? orgNodeUserDTO.getUnit().getId() : 0l) // 发起人单位
.createBy(visa.getCreateBy()) //发起人Id
.happenTime(Objects.nonNull(visa.getHappenTime()) ? DateUtil.format(visa.getHappenTime(), "yyyy-MM-dd") : "") // 提出时间
.approvalCompleteTime(Objects.nonNull(visa.getApprovalCompleteTime()) ? DateUtil.format(visa.getApprovalCompleteTime(), "yyyy-MM-dd HH:mm:ss") : "") //最终审批时间
@ -336,7 +357,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.relationProjectName((Objects.nonNull(projectDetailRes) && Objects.nonNull(projectDetailRes.getProjectInfo())) ? projectDetailRes.getProjectInfo().getName() : "") // 工程名称
.relationWorkspaceId(visa.getRelationWorkspaceId()) // 项目Id
.relationWorkspaceName(Objects.nonNull(workspace) ? workspace.getName() : "") // 项目名称
.relationOuAndPersonList(changeRecordConfirmService.listRelationByVisaId(visaId)) // 相关单位与确认人
.relationOuAndPersonList(changeRecordConfirmService.listRelationByVisaId(pair.getKey())) // 相关单位与确认人
.relationTaskList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.TASK)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.TASK)) // 关联任务单
.relationRectifyList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.RECTIFY)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.RECTIFY)) //关联整改单
.relationVisaList(CollectionUtils.isEmpty(billMap.get(VisaBillTypeEnum.VISA)) ? Lists.newArrayList() : billMap.get(VisaBillTypeEnum.VISA)) // 关联变更单
@ -347,6 +368,42 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.build();
}
/**
* 构建确认人集合与发起人
*/
private Pair<List<ChangeRecordConfirm>, ChangeRecordConfirm> buildConfirmCreate(Long visaId) {
VisaConfirmDto dto = VisaConfirmDto.builder()
.visaId(visaId).build();
List<ChangeRecordConfirm> list = this.changeRecordConfirmService.findByCondition(dto);
List<ChangeRecordConfirm> confirmList = list.stream().filter(item -> item.getBizType() == VisaConfirmBizTypeEnum.CONFIRM).collect(Collectors.toList());
List<ChangeRecordConfirm> createList = list.stream().filter(item -> item.getBizType() == VisaConfirmBizTypeEnum.CREATE).collect(Collectors.toList());
if (CollectionUtils.isEmpty(confirmList)) {
confirmList = Lists.newArrayList();
}
if (CollectionUtils.isEmpty(createList)) {
return Pair.of(confirmList, ChangeRecordConfirm.builder().build());
}
return Pair.of(confirmList, createList.get(0));
}
/**
* 综合获取基础信息
*/
private OrgNodeUserDTO getOrgNodeUserDTO(Long personId, Long ouId, Long workspaceId) {
if (Objects.isNull(personId) || Objects.isNull(ouId) || Objects.isNull(workspaceId)) {
return null;
}
PageResp<OrgNodeUserDTO> pageResp = visaOrganizationalNodeUserGateway.list(ListOrgNodeUserReq.builder()
.personId(personId)
.organizationalUnitId(ouId)
.workspaceId(workspaceId)
.needs(ListNodeUserReq.Needs.builder().job(true).unit(true).personProfile(true).build()).build());
if (Objects.isNull(pageResp) || CollectionUtils.isEmpty(pageResp.getData())) {
return null;
}
return pageResp.getData().get(0);
}
/**
* 构建上传文件对象集合
*/