diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExcelDownUtil.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExcelDownUtil.java index ae2fa91..e31d162 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExcelDownUtil.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/util/ExcelDownUtil.java @@ -136,7 +136,7 @@ public class ExcelDownUtil { } public static void setExportResponseHeader(String fileName, HttpServletResponse response) throws UnsupportedEncodingException { // 设置响应头和保存文件名 - response.setContentType(StrPool.CONTENT_TYPE); + response.setContentType(ExcelUtil.XLS_CONTENT_TYPE); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodeName(fileName) + ".xls"); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectRenewalFundDeclarationController.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectRenewalFundDeclarationController.java index cadf505..677115d 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectRenewalFundDeclarationController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/controller/ProjectRenewalFundDeclarationController.java @@ -2,8 +2,10 @@ package com.ningdatech.pmapi.projectlib.controller; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.common.util.ExcelDownUtil; import com.ningdatech.pmapi.projectlib.manage.ProjectRenewalFundManage; import com.ningdatech.pmapi.projectlib.model.dto.ProjectRenewalFundDeclarationDTO; +import com.ningdatech.pmapi.projectlib.model.req.ProjectRenewalAuditReq; import com.ningdatech.pmapi.projectlib.model.req.ProjectRenewalListReq; import com.ningdatech.pmapi.projectlib.model.vo.ProjectRenewalFundDeclarationVO; import io.swagger.annotations.Api; @@ -12,6 +14,8 @@ import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; + /** *

* 续建项目资金申请表 前端控制器 @@ -44,4 +48,23 @@ public class ProjectRenewalFundDeclarationController { private Long declared (@Validated @RequestBody ProjectRenewalFundDeclarationDTO dto){ return projectRenewalFundManage.declared(dto); } + + @PostMapping("/audit") + @ApiOperation("续建项目审核") + private Long audit(@Validated @RequestBody ProjectRenewalAuditReq param){ + return projectRenewalFundManage.audit(param); + } + + @DeleteMapping("/delete/{projectRenewalId}") + @ApiOperation("续建项目删除") + private Long delete(@PathVariable("projectRenewalId") Long projectRenewalId){ + return projectRenewalFundManage.delete(projectRenewalId); + } + + @GetMapping("/export") + @ApiOperation("续建项目列表导出") + private void exportList(ProjectRenewalListReq req, HttpServletResponse response){ + ExcelDownUtil.downXls(response,req,projectRenewalFundManage::exportList); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectRenewalApprovalStatusEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectRenewalApprovalStatusEnum.java index 6a4ab6a..27a38ed 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectRenewalApprovalStatusEnum.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectRenewalApprovalStatusEnum.java @@ -1,6 +1,13 @@ package com.ningdatech.pmapi.projectlib.enumeration; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; + +import java.util.Objects; + /** *

* ProjectRenewalApprovalStatusEnum @@ -9,6 +16,9 @@ package com.ningdatech.pmapi.projectlib.enumeration; * @author Poffy * @since 16:54 2023/2/11 */ +@Getter +@AllArgsConstructor +@NoArgsConstructor public enum ProjectRenewalApprovalStatusEnum { /** * 续建项目 审核状态 @@ -16,8 +26,23 @@ public enum ProjectRenewalApprovalStatusEnum { * 通过 * 不通过 */ - PENDING, - PASS, - NOT_PASS; + PENDING(1,"审核中"), + PASS(2,"通过"), + NOT_PASS(3,"不通过"); + + private Integer code; + private String desc; + + public static String getDescByCode(Integer code) { + if (Objects.isNull(code)) { + return StringUtils.EMPTY; + } + for (ProjectRenewalApprovalStatusEnum t : ProjectRenewalApprovalStatusEnum.values()) { + if (code.equals(t.getCode())) { + return t.desc; + } + } + return StringUtils.EMPTY; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java index ecd6f5f..ce45daa 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java @@ -1,15 +1,25 @@ package com.ningdatech.pmapi.projectlib.manage; +import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; +import com.ningdatech.basic.util.NdDateUtils; +import com.ningdatech.pmapi.common.constant.CommonConstant; +import com.ningdatech.pmapi.common.util.ExcelDownUtil; +import com.ningdatech.pmapi.common.util.ExcelExportStyle; import com.ningdatech.pmapi.projectlib.enumeration.ProjectRenewalApprovalStatusEnum; import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; +import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; +import com.ningdatech.pmapi.projectlib.model.dto.ProjectRenewalExportDTO; import com.ningdatech.pmapi.projectlib.model.dto.ProjectRenewalFundDeclarationDTO; import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; import com.ningdatech.pmapi.projectlib.model.po.ProjectRenewalFundDeclarationPO; +import com.ningdatech.pmapi.projectlib.model.req.ProjectRenewalAuditReq; import com.ningdatech.pmapi.projectlib.model.req.ProjectRenewalListReq; import com.ningdatech.pmapi.projectlib.model.vo.ProjectRenewalFundDeclarationVO; import com.ningdatech.pmapi.projectlib.service.IProjectRenewalFundDeclarationService; @@ -19,9 +29,12 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** *

@@ -115,4 +128,79 @@ public class ProjectRenewalFundManage { } return declaration.getId(); } + + /** + * 续建项目审核 + * @param param + * @return + */ + public Long audit(ProjectRenewalAuditReq param) { + Long projectRenewalId = param.getProjectRenewalId(); + ProjectRenewalFundDeclaration projectRenewal = projectRenewalFundDeclarationService.getById(projectRenewalId); + if (Boolean.TRUE.equals(param.getResult())){ + projectRenewal.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PASS.name()); + }else { + String auditOpinion = param.getAuditOpinion(); + if (StrUtil.isBlank(auditOpinion)){ + throw new BizException("审核意见不能为空"); + } + projectRenewal.setAuditOpinion(auditOpinion); + projectRenewal.setApprovalStatus(ProjectRenewalApprovalStatusEnum.NOT_PASS.name()); + } + projectRenewal.setUpdateOn(LocalDateTime.now()); + projectRenewalFundDeclarationService.updateById(projectRenewal); + return projectRenewal.getId(); + } + + /** + * 续建项目删除 + * @param projectRenewalId + * @return + */ + public Long delete(Long projectRenewalId) { + ProjectRenewalFundDeclaration projectRenewal = projectRenewalFundDeclarationService.getById(projectRenewalId); + projectRenewal.setDeleted(true); + projectRenewal.setUpdateOn(LocalDateTime.now()); + projectRenewalFundDeclarationService.updateById(projectRenewal); + return projectRenewal.getId(); + } + + public void exportList(HttpServletResponse response, ProjectRenewalListReq param) { + + param.setPageNumber(CommonConstant.EXPORT_PAGE_NUMBER); + param.setPageSize(CommonConstant.EXPORT_PAGE_SIZE); + Page page = param.page(); + projectRenewalFundDeclarationService.pageSql(page, param); + List records = page.getRecords(); + + List collect = records.stream().map(r -> { + ProjectRenewalExportDTO exportDTO = new ProjectRenewalExportDTO(); + BeanUtils.copyProperties(r, exportDTO); + exportDTO.setProjectTypeName(ProjectTypeEnum.getDesc(r.getProjectType())); + if (ProjectRenewalApprovalStatusEnum.PENDING.name().equals(r.getApprovalStatus())) { + exportDTO.setApprovalStatusName(ProjectRenewalApprovalStatusEnum.PENDING.getDesc()); + } else if (ProjectRenewalApprovalStatusEnum.PASS.name().equals(r.getApprovalStatus())) { + exportDTO.setApprovalStatusName(ProjectRenewalApprovalStatusEnum.PASS.getDesc()); + } else if (ProjectRenewalApprovalStatusEnum.NOT_PASS.name().equals(r.getApprovalStatus())) { + exportDTO.setApprovalStatusName(ProjectRenewalApprovalStatusEnum.NOT_PASS.getDesc()); + } + String createOnStr = NdDateUtils.format(r.getCreateOn(), "yyyy-MM-dd HH:mm"); + exportDTO.setCreateOn(createOnStr); + return exportDTO; + }).collect(Collectors.toList()); + + + String fileName = "续建项目资金库列表"; + ExcelDownUtil.setFileName(fileName,response); + //数据导出处理函数 + try { + EasyExcel.write(response.getOutputStream(), ProjectRenewalExportDTO.class) + .autoCloseStream(false) + .registerWriteHandler(ExcelExportStyle.formalStyle()) + .sheet(fileName) + .doWrite(collect); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectRenewalExportDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectRenewalExportDTO.java new file mode 100644 index 0000000..29b61e5 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/ProjectRenewalExportDTO.java @@ -0,0 +1,41 @@ +package com.ningdatech.pmapi.projectlib.model.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 项目续建列表导出实体 + * + * @author CMM + * @since 2023/02/21 15:03 + */ +@Data +public class ProjectRenewalExportDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ExcelProperty("项目名称") + private String projectName; + + @ExcelProperty("申报单位") + private String buildOrgName; + + @ExcelProperty("项目类型") + private String projectTypeName; + + @ExcelProperty("预算年度") + private Integer projectYear; + + @ExcelProperty("年度支付金额(万元)") + private BigDecimal annualPaymentAmount; + + @ExcelProperty("状态") + private String approvalStatusName; + + @ExcelProperty("创建时间") + private String createOn; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectRenewalFundDeclaration.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectRenewalFundDeclaration.java index e937f24..97f537c 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectRenewalFundDeclaration.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/ProjectRenewalFundDeclaration.java @@ -71,5 +71,8 @@ public class ProjectRenewalFundDeclaration implements Serializable { @ApiModelProperty("是否删除 false未删 true已删") private Boolean deleted; + @ApiModelProperty("审核意见") + private String auditOpinion; + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectRenewalAuditReq.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectRenewalAuditReq.java new file mode 100644 index 0000000..c60ba41 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/req/ProjectRenewalAuditReq.java @@ -0,0 +1,33 @@ +package com.ningdatech.pmapi.projectlib.model.req; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Max; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * 续建项目审核请求实体 + * + * @author CMM + * @since 2023/02/21 13:43 + */ +@Data +@ApiModel("续建项目审核请求参数") +public class ProjectRenewalAuditReq { + + @NotNull + @ApiModelProperty("续建项目ID") + private Long projectRenewalId; + + @NotNull(message = "审核结果不能为空") + @ApiModelProperty("审核结果") + private Boolean result; + + @ApiModelProperty("审核意见") + @Length(max = 200) + private String auditOpinion; +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java index 73fbe30..b0a3237 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.common.helper.UserInfoHelper; import com.ningdatech.pmapi.organization.model.entity.DingEmployeeInfo; import com.ningdatech.pmapi.organization.service.IDingEmployeeInfoService; import com.ningdatech.pmapi.organization.service.IDingOrganizationService; @@ -23,7 +24,9 @@ import com.ningdatech.pmapi.user.model.po.ReqUserInfoListPO; import com.ningdatech.pmapi.user.model.vo.ResUserDetailVO; import com.ningdatech.pmapi.user.model.vo.ResUserInfoListVO; import com.ningdatech.pmapi.user.model.vo.UserRoleVO; +import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; import com.ningdatech.pmapi.user.service.IUserInfoService; +import com.ningdatech.pmapi.user.util.LoginUserUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +49,7 @@ public class UserInfoManage { private final IUserInfoService iUserInfoService; private final IUserRoleService iUserRoleService; private final IRoleService iRoleService; + private final UserInfoHelper userInfoHelper; public PageVo list(ReqUserInfoListPO reqUserInfoListPO) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(DingEmployeeInfo.class) @@ -63,7 +67,7 @@ public class UserInfoManage { Map employeeCodeAvailableMap = new HashMap<>(); if (CollUtil.isNotEmpty(employeeCodeList)) { employeeCodeAvailableMap = iUserInfoService.list(Wrappers.lambdaQuery(UserInfo.class) - .in(UserInfo::getEmployeeCode,employeeCodeList)) + .in(UserInfo::getEmployeeCode, employeeCodeList)) .stream().collect(Collectors.toMap(UserInfo::getEmployeeCode, Function.identity())); } @@ -86,6 +90,8 @@ public class UserInfoManage { if (StringUtils.isNotBlank(userInfo.getAvailable()) && UserAvailableEnum.ENABLE.name().equals(userInfo.getAvailable())) { resListVO.setStatus(UserAvailableEnum.ENABLE.name()); + } else { + resListVO.setStatus(UserAvailableEnum.DISABLE.name()); } resListVO.setUserId(userInfo.getId()); } else { @@ -172,8 +178,10 @@ public class UserInfoManage { UserInfo userInfo = iUserInfoService.getOne(Wrappers.lambdaQuery(UserInfo.class) .eq(UserInfo::getEmployeeCode, employeeCode)); if (Objects.isNull(userInfo)) { - List dingEmployeeInfoList = iDingEmployeeInfoService.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) - .eq(DingEmployeeInfo::getMainJob, "true")); + List dingEmployeeInfoList = iDingEmployeeInfoService + .list(Wrappers.lambdaQuery(DingEmployeeInfo.class) + .eq(DingEmployeeInfo::getEmployeeCode, employeeCode) + .eq(DingEmployeeInfo::getMainJob, "true")); if (CollUtil.isEmpty(dingEmployeeInfoList)) { throw new BizException("员工账号不存在"); } @@ -196,6 +204,8 @@ public class UserInfoManage { public ResUserDetailVO currentUserInfo() { + Long userId = LoginUserUtil.getUserId(); + UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); return null; } } diff --git a/pmapi/src/main/resources/security/auth-dev.yml b/pmapi/src/main/resources/security/auth-dev.yml index c22582d..19fcc71 100644 --- a/pmapi/src/main/resources/security/auth-dev.yml +++ b/pmapi/src/main/resources/security/auth-dev.yml @@ -15,14 +15,12 @@ security: - /api/v1/user/auth/invalid-session - /api/v1/user/auth/login/password - /api/v1/user/auth/forget-password - - /api/v1/** - /doc.html - /ok.html - /open/api/** - /oa/** - /wflow/** - /sys/** - - /api/v1/user-info/** ignore-csrf-urls: - /api/v1/user/auth/** - /v2/api-docs