# Conflicts: # pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/DeclaredProjectManage.javatags/24080901
@@ -56,7 +56,7 @@ public class GeneratorCodeKingbaseConfig { | |||||
} | } | ||||
public static void main(String[] args) { | public static void main(String[] args) { | ||||
generate("Lierbao", "signature", PATH_LXX, "nd_company_signature"); | |||||
generate("Lierbao", "organization", PATH_LXX, "ding_employee_info"); | |||||
} | } | ||||
} | } |
@@ -10,6 +10,7 @@ import com.ningdatech.zwdd.model.Page; | |||||
import com.ningdatech.zwdd.model.query.PageOrganizationEmployeePositionsQuery; | import com.ningdatech.zwdd.model.query.PageOrganizationEmployeePositionsQuery; | ||||
import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition; | import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
@@ -20,6 +21,7 @@ import java.util.List; | |||||
* @date 2023/2/10 上午9:52 | * @date 2023/2/10 上午9:52 | ||||
*/ | */ | ||||
@Component | |||||
public class EmployeeBatchGetTask { | public class EmployeeBatchGetTask { | ||||
private final static Integer PAGE_SIZE = 20; | private final static Integer PAGE_SIZE = 20; | ||||
@@ -48,27 +50,23 @@ public class EmployeeBatchGetTask { | |||||
GenericResult<Page<OrganizationEmployeePosition>> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | GenericResult<Page<OrganizationEmployeePosition>> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | ||||
Page<OrganizationEmployeePosition> data = firstPageGenericResult.getData(); | Page<OrganizationEmployeePosition> data = firstPageGenericResult.getData(); | ||||
if (CollUtil.isNotEmpty(data.getData())) { | if (CollUtil.isNotEmpty(data.getData())) { | ||||
allOrganizationEmployeePositionList.addAll(data.getData()); | allOrganizationEmployeePositionList.addAll(data.getData()); | ||||
} | } | ||||
Long totalSize = data.getTotalSize(); | Long totalSize = data.getTotalSize(); | ||||
if (totalSize > PAGE_SIZE) { | if (totalSize > PAGE_SIZE) { | ||||
int maxPageNo = (int) Math.ceil(totalSize / PAGE_SIZE); | int maxPageNo = (int) Math.ceil(totalSize / PAGE_SIZE); | ||||
for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | ||||
query.setPageNo(maxPageNo); | query.setPageNo(maxPageNo); | ||||
GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | ||||
if (CollUtil.isNotEmpty(pageGenericResult.getData().getData())) { | if (CollUtil.isNotEmpty(pageGenericResult.getData().getData())) { | ||||
allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | ||||
} | } | ||||
} | } | ||||
} else { | |||||
} | } | ||||
} | } | ||||
// zwddClient.pageOrganizationEmployeePositions(query); | // zwddClient.pageOrganizationEmployeePositions(query); | ||||
@@ -0,0 +1,20 @@ | |||||
package com.ningdatech.pmapi.organization.controller; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.stereotype.Controller; | |||||
/** | |||||
* <p> | |||||
* 前端控制器 | |||||
* </p> | |||||
* | |||||
* @author Lierbao | |||||
* @since 2023-02-11 | |||||
*/ | |||||
@Controller | |||||
@RequestMapping("/pmapi.organization/ding-employee-info") | |||||
public class DingEmployeeInfoController { | |||||
} |
@@ -0,0 +1,71 @@ | |||||
package com.ningdatech.pmapi.organization.entity; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* | |||||
* </p> | |||||
* | |||||
* @author Lierbao | |||||
* @since 2023-02-11 | |||||
*/ | |||||
@TableName("ding_employee_info") | |||||
@Data | |||||
@ApiModel(value = "DingEmployeeInfo对象", description = "") | |||||
public class DingEmployeeInfo implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
private Long id; | |||||
private LocalDateTime createOn; | |||||
private LocalDateTime updateOn; | |||||
private Long createBy; | |||||
private Long updateBy; | |||||
private String emplyeeName; | |||||
private String gmtCreate; | |||||
private String empGender; | |||||
private String empPoliticalStatusCode; | |||||
private String empJobLevelCode; | |||||
private String empBudgetedPostCode; | |||||
private String status; | |||||
private String posJobRankCode; | |||||
private String orderInOrganization; | |||||
private String mainJob; | |||||
private String empPosUnitCode; | |||||
private String empPosEmployeeRoleCode; | |||||
private String empPosInnerInstitutionCode; | |||||
private String employeeCode; | |||||
private String jobAttributesCode; | |||||
private String organizationCode; | |||||
private String empPosVirtualOrganizationCode; | |||||
private String empStatus; | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.pmapi.organization.mapper; | |||||
import com.ningdatech.pmapi.organization.entity.DingEmployeeInfo; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author Lierbao | |||||
* @since 2023-02-11 | |||||
*/ | |||||
public interface DingEmployeeInfoMapper extends BaseMapper<DingEmployeeInfo> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ningdatech.pmapi.organization.mapper.DingEmployeeInfoMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.pmapi.organization.service; | |||||
import com.ningdatech.pmapi.organization.entity.DingEmployeeInfo; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 服务类 | |||||
* </p> | |||||
* | |||||
* @author Lierbao | |||||
* @since 2023-02-11 | |||||
*/ | |||||
public interface IDingEmployeeInfoService extends IService<DingEmployeeInfo> { | |||||
} |
@@ -0,0 +1,20 @@ | |||||
package com.ningdatech.pmapi.organization.service.impl; | |||||
import com.ningdatech.pmapi.organization.entity.DingEmployeeInfo; | |||||
import com.ningdatech.pmapi.organization.mapper.DingEmployeeInfoMapper; | |||||
import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* <p> | |||||
* 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author Lierbao | |||||
* @since 2023-02-11 | |||||
*/ | |||||
@Service | |||||
public class DingEmployeeInfoServiceImpl extends ServiceImpl<DingEmployeeInfoMapper, DingEmployeeInfo> implements IDingEmployeeInfoService { | |||||
} |
@@ -1,5 +1,7 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.entity.dto; | package com.ningdatech.pmapi.projectdeclared.entity.dto; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.google.common.collect.Maps; | |||||
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDto; | import com.ningdatech.pmapi.projectlib.model.dto.ProjectDto; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; | import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; | ||||
@@ -35,4 +37,12 @@ public class DeclaredProjectDto implements Serializable { | |||||
@NotNull | @NotNull | ||||
private ProcessInstanceUserDto user; | private ProcessInstanceUserDto user; | ||||
public Map<String,Object> getFormData(){ | |||||
if(CollUtil.isNotEmpty(this.formData)){ | |||||
this.formData = Maps.newHashMap(); | |||||
return this.formData; | |||||
} | |||||
return this.formData; | |||||
} | |||||
} | } |
@@ -0,0 +1,35 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.entity.dto; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.NoArgsConstructor; | |||||
import java.io.Serializable; | |||||
import java.math.BigDecimal; | |||||
/** | |||||
* @Classname DeclaredProjectDto | |||||
* @Description 申报项目 里的条件判断实体 | |||||
* @Date 2023/2/1 14:52 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@NoArgsConstructor | |||||
@AllArgsConstructor | |||||
public class ProjectConditionDto implements Serializable { | |||||
private Long projectId; | |||||
@ApiModelProperty("申报金额") | |||||
private BigDecimal declareAmount; | |||||
@ApiModelProperty("是否临时增补 0:否 1:是") | |||||
private Integer isTemporaryAugment; | |||||
@ApiModelProperty("是否数字化改革项目 0:否 1:是") | |||||
private Integer isDigitalReform; | |||||
} |
@@ -1,5 +1,6 @@ | |||||
package com.ningdatech.pmapi.projectdeclared.manage; | package com.ningdatech.pmapi.projectdeclared.manage; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.alibaba.fastjson.TypeReference; | import com.alibaba.fastjson.TypeReference; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
@@ -16,6 +17,7 @@ import com.ningdatech.pmapi.projectdeclared.entity.vo.ProjectDeclaredListItemVO; | |||||
import com.ningdatech.pmapi.projectdeclared.entity.vo.ProjectDraftVo; | import com.ningdatech.pmapi.projectdeclared.entity.vo.ProjectDraftVo; | ||||
import com.ningdatech.pmapi.projectdeclared.service.IProjectDraftService; | import com.ningdatech.pmapi.projectdeclared.service.IProjectDraftService; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | ||||
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDto; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | ||||
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | ||||
@@ -70,8 +72,8 @@ public class DeclaredProjectManage { | |||||
.eq(Objects.nonNull(params.getProjectStatus()), Project::getStatus, params.getProjectStatus()) | .eq(Objects.nonNull(params.getProjectStatus()), Project::getStatus, params.getProjectStatus()) | ||||
.like(StringUtils.isNotBlank(params.getProjectName()), Project::getProjectName, params.getProjectName()) | .like(StringUtils.isNotBlank(params.getProjectName()), Project::getProjectName, params.getProjectName()) | ||||
.orderByDesc(Project::getUpdateOn); | .orderByDesc(Project::getUpdateOn); | ||||
projectService.page(page,wrapper); | |||||
if(0L == page.getTotal()){ | |||||
projectService.page(page, wrapper); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<ProjectDeclaredListItemVO> res = page.getRecords().stream().map(record -> { | List<ProjectDeclaredListItemVO> res = page.getRecords().stream().map(record -> { | ||||
@@ -79,7 +81,7 @@ public class DeclaredProjectManage { | |||||
BeanUtils.copyProperties(record, vo); | BeanUtils.copyProperties(record, vo); | ||||
return vo; | return vo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
public ProjectDeclaredDetailVO detail(Long id) { | public ProjectDeclaredDetailVO detail(Long id) { | ||||
@@ -103,8 +105,8 @@ public class DeclaredProjectManage { | |||||
.eq(Objects.nonNull(params.getProjectStatus()), ProjectDraft::getProjectStatusSecond, params.getProjectStatus()) | .eq(Objects.nonNull(params.getProjectStatus()), ProjectDraft::getProjectStatusSecond, params.getProjectStatus()) | ||||
.like(StringUtils.isNotBlank(params.getProjectName()), ProjectDraft::getProjectName, params.getProjectName()) | .like(StringUtils.isNotBlank(params.getProjectName()), ProjectDraft::getProjectName, params.getProjectName()) | ||||
.orderByDesc(ProjectDraft::getUpdateOn); | .orderByDesc(ProjectDraft::getUpdateOn); | ||||
projectDraftService.page(page,wrapper); | |||||
if(0L == page.getTotal()){ | |||||
projectDraftService.page(page, wrapper); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<ProjectDraftVo> res = page.getRecords().stream().map(record -> { | List<ProjectDraftVo> res = page.getRecords().stream().map(record -> { | ||||
@@ -112,7 +114,7 @@ public class DeclaredProjectManage { | |||||
BeanUtils.copyProperties(record, vo); | BeanUtils.copyProperties(record, vo); | ||||
return vo; | return vo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
public ProjectDraftVo draftDatail(Long id) { | public ProjectDraftVo draftDatail(Long id) { | ||||
@@ -124,6 +126,7 @@ public class DeclaredProjectManage { | |||||
/** | /** | ||||
* 启动实例 | * 启动实例 | ||||
* | |||||
* @param dto | * @param dto | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -135,25 +138,44 @@ public class DeclaredProjectManage { | |||||
.eq(WflowModels::getFormName, ProjectProessStageEnum.ORG_INTERNAL_APPROVAL_PROCESS.getDesc()) | .eq(WflowModels::getFormName, ProjectProessStageEnum.ORG_INTERNAL_APPROVAL_PROCESS.getDesc()) | ||||
.last("limit 1")); | .last("limit 1")); | ||||
if(Objects.isNull(model)){ | |||||
throw new BusinessException(String.format("此 【%s】区域找不到流程配置",regionCode)); | |||||
if (Objects.isNull(model)) { | |||||
throw new BusinessException(String.format("此 【%s】区域找不到流程配置", regionCode)); | |||||
} | } | ||||
ProcessStartParamsVo params = new ProcessStartParamsVo(); | ProcessStartParamsVo params = new ProcessStartParamsVo(); | ||||
params.setUser(dto.getUser()); | params.setUser(dto.getUser()); | ||||
params.setProcessUsers(Collections.emptyMap()); | params.setProcessUsers(Collections.emptyMap()); | ||||
//放入条件判断的项目字段 | //放入条件判断的项目字段 | ||||
dto.getFormData().putAll( | |||||
JSON.parseObject(JSON.toJSONString(dto.getProjectInfo()), new TypeReference<Map<String, Object>>() { | |||||
})); | |||||
ProjectConditionDto conditionDto = new ProjectConditionDto(); | |||||
BeanUtils.copyProperties(dto.getProjectInfo(), conditionDto); | |||||
if (Objects.nonNull(conditionDto)) { | |||||
dto.getFormData().putAll( | |||||
JSON.parseObject(JSON.toJSONString(conditionDto), new TypeReference<Map<String, Object>>() { | |||||
}) | |||||
); | |||||
} | |||||
params.setFormData(dto.getFormData()); | params.setFormData(dto.getFormData()); | ||||
String instanceId = processService.startProcess(model.getProcessDefId(), params); | |||||
log.info("申报项目成功 【{}】",instanceId); | |||||
String instanceId = processService.startProcess(model.getProcessDefId(), params); | |||||
log.info("申报项目成功 【{}】", instanceId); | |||||
//保存项目 | |||||
saveProject(dto.getProjectInfo(), instanceId, regionCode); | |||||
return instanceId; | |||||
} | |||||
/** | |||||
* 申报项目 时 新增项目到项目库 | |||||
* | |||||
* @param projectDto | |||||
* @param instanceId | |||||
*/ | |||||
private void saveProject(ProjectDto projectDto, String instanceId, String regionCode) { | |||||
//流程启动之后 入库项目 重要业务信息 用于列表查询 展示 | //流程启动之后 入库项目 重要业务信息 用于列表查询 展示 | ||||
try{ | |||||
try { | |||||
//保存项目表信息 | |||||
Project project = new Project(); | Project project = new Project(); | ||||
BeanUtils.copyProperties(dto.getProjectInfo(),project); | |||||
BeanUtils.copyProperties(projectDto, project); | |||||
project.setCreateOn(LocalDateTime.now()); | project.setCreateOn(LocalDateTime.now()); | ||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setAreaCode(regionCode); | project.setAreaCode(regionCode); | ||||
@@ -161,23 +183,32 @@ public class DeclaredProjectManage { | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | ||||
project.setInstCode(instanceId); | project.setInstCode(instanceId); | ||||
projectService.save(project); | projectService.save(project); | ||||
}catch (Exception e){ | |||||
log.error("项目信息入库错误 ",e); | |||||
throw new BusinessException("项目信息入库错误 请注意格式"); | |||||
//保存项目应用 | |||||
if (CollUtil.isNotEmpty(projectDto.getApplicationList())) { | |||||
List<ProjectApplication> applications = projectDto.getApplicationList().stream().map(application -> { | |||||
ProjectApplication projectApplication = new ProjectApplication(); | |||||
BeanUtils.copyProperties(application, projectApplication); | |||||
projectApplication.setProjectId(project.getId()); | |||||
return projectApplication; | |||||
}).collect(Collectors.toList()); | |||||
projectApplicationService.saveBatch(applications); | |||||
} | |||||
} catch (Exception e) { | |||||
log.error("项目信息入库错误 ", e); | |||||
throw new BusinessException("项目信息入库错误 :" + e.getMessage()); | |||||
} | } | ||||
return instanceId; | |||||
} | } | ||||
/** | /** | ||||
* 保存至草稿箱 | * 保存至草稿箱 | ||||
* | |||||
* @param dto | * @param dto | ||||
* @return | * @return | ||||
*/ | */ | ||||
public Long saveToDraft(ProjectDraftSaveDto dto) { | public Long saveToDraft(ProjectDraftSaveDto dto) { | ||||
ProjectDraft draft = new ProjectDraft(); | ProjectDraft draft = new ProjectDraft(); | ||||
BeanUtils.copyProperties(dto,draft); | |||||
if(Objects.isNull(draft.getId())){ | |||||
BeanUtils.copyProperties(dto, draft); | |||||
if (Objects.isNull(draft.getId())) { | |||||
draft.setCreateOn(LocalDateTime.now()); | draft.setCreateOn(LocalDateTime.now()); | ||||
} | } | ||||
draft.setUpdateOn(LocalDateTime.now()); | draft.setUpdateOn(LocalDateTime.now()); | ||||
@@ -29,7 +29,7 @@ public class ProjectApplication implements Serializable { | |||||
private Long id; | private Long id; | ||||
@ApiModelProperty("项目ID") | @ApiModelProperty("项目ID") | ||||
private String projectId; | |||||
private Long projectId; | |||||
@ApiModelProperty("是否初次建设 0否 1是") | @ApiModelProperty("是否初次建设 0否 1是") | ||||
private Integer isFirst; | private Integer isFirst; | ||||