@@ -56,7 +56,7 @@ public class GeneratorCodeKingbaseConfig { | |||
} | |||
public static void main(String[] args) { | |||
generate("WendyYang", "expert", PATH_YYD, "nd_review_template_settings"); | |||
generate("WendyYang", "projectlib", PATH_YYD, "nd_project_renewal_fund_declaration"); | |||
} | |||
} |
@@ -3,7 +3,6 @@ package com.ningdatech.pmapi; | |||
import org.mybatis.spring.annotation.MapperScan; | |||
import org.springframework.boot.SpringApplication; | |||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||
import org.springframework.context.annotation.ComponentScan; | |||
import org.springframework.context.annotation.EnableAspectJAutoProxy; | |||
import org.springframework.scheduling.annotation.EnableAsync; | |||
import org.springframework.scheduling.annotation.EnableScheduling; | |||
@@ -23,7 +22,7 @@ public class App { | |||
protected static final String MAPPER_PACKAGES = "com.ningdatech.pmapi.**.mapper"; | |||
public static void main(String[] args) { | |||
System.setProperty("druid.mysql.usePingMethod", "false"); | |||
SpringApplication.run(App.class, args); | |||
} | |||
} |
@@ -0,0 +1,40 @@ | |||
package com.ningdatech.pmapi.expert.controller; | |||
import com.ningdatech.log.annotation.WebLog; | |||
import com.ningdatech.pmapi.expert.manage.ExpertReviewManage; | |||
import com.ningdatech.pmapi.expert.model.req.ExpertReviewDetailReq; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.AllArgsConstructor; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.web.bind.annotation.RestController; | |||
import javax.validation.Valid; | |||
/** | |||
* <p> | |||
* 前端控制器 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@RestController | |||
@AllArgsConstructor | |||
@Api(tags = "专家评审") | |||
@RequestMapping("/api/v1/expertReview") | |||
public class ExpertReviewController { | |||
private final ExpertReviewManage expertReviewManage; | |||
@PostMapping("/save") | |||
@ApiOperation("填写评审意见") | |||
@WebLog("填写评审意见") | |||
public void expertReview(@RequestBody @Valid ExpertReviewDetailReq req) { | |||
expertReviewManage.expertReview(req); | |||
} | |||
} |
@@ -1,10 +1,12 @@ | |||
package com.ningdatech.pmapi.expert.controller; | |||
import com.ningdatech.log.annotation.WebLog; | |||
import com.ningdatech.pmapi.expert.manage.ReviewTemplateSettingsManage; | |||
import com.ningdatech.pmapi.expert.model.req.ReviewTemplateReq; | |||
import com.ningdatech.pmapi.expert.model.vo.ReviewTemplateVO; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.AllArgsConstructor; | |||
import org.springframework.web.bind.annotation.*; | |||
@@ -27,16 +29,23 @@ public class ReviewTemplateSettingsController { | |||
private final ReviewTemplateSettingsManage reviewTemplateSettingsManage; | |||
@GetMapping("/template/{templateType}") | |||
@GetMapping("/template/{templateType}/{regionCode}") | |||
@ApiOperation("根据模版类型获取模版") | |||
public ReviewTemplateVO getReviewTemplateByType(@PathVariable Integer templateType) { | |||
return reviewTemplateSettingsManage.getReviewTemplateSettings(templateType); | |||
public ReviewTemplateVO getReviewTemplateByType(@PathVariable Integer templateType, @PathVariable String regionCode) { | |||
return reviewTemplateSettingsManage.getReviewTemplateSettings(templateType, regionCode); | |||
} | |||
@PostMapping("/modify") | |||
@ApiOperation("修改或保存模版配置") | |||
@WebLog("修改或保存模版配置") | |||
public void modifyReviewTemplateSettings(@RequestBody @Valid ReviewTemplateReq req) { | |||
reviewTemplateSettingsManage.saveOrUpdate(req); | |||
} | |||
@GetMapping("/template/{templateId}") | |||
@ApiModelProperty("根据模版ID获取评审模版") | |||
public ReviewTemplateVO getTemplateById(@PathVariable Long templateId) { | |||
return reviewTemplateSettingsManage.getReviewTemplateSettings(templateId); | |||
} | |||
} |
@@ -0,0 +1,73 @@ | |||
package com.ningdatech.pmapi.expert.manage; | |||
import cn.hutool.json.JSONUtil; | |||
import com.ningdatech.basic.exception.BizException; | |||
import com.ningdatech.cache.lock.DistributedLock; | |||
import com.ningdatech.pmapi.expert.model.entity.ExpertReview; | |||
import com.ningdatech.pmapi.expert.model.req.ExpertReviewDetailReq; | |||
import com.ningdatech.pmapi.expert.service.IExpertReviewService; | |||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | |||
import lombok.RequiredArgsConstructor; | |||
import org.springframework.stereotype.Component; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* ExpertReviewManage | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 14:25 2023/2/15 | |||
*/ | |||
@Component | |||
@RequiredArgsConstructor | |||
public class ExpertReviewManage { | |||
private final IExpertReviewService expertReviewService; | |||
private final DistributedLock distributedLock; | |||
private static final String EXPERT_REVIEW_KEY = "expert_review:"; | |||
private String buildExpertReviewKey(Long projectId, Long expertId) { | |||
return EXPERT_REVIEW_KEY + projectId + ":" + expertId; | |||
} | |||
public void expertReview(ExpertReviewDetailReq req) { | |||
Long userId = LoginUserUtil.getUserId(); | |||
Long projectId = req.getProjectId(); | |||
String expertReviewKey = buildExpertReviewKey(projectId, userId); | |||
if (!distributedLock.lock(expertReviewKey)) { | |||
throw BizException.wrap("保存评审意见失败,请重试"); | |||
} | |||
try { | |||
List<ExpertReview> reviews = expertReviewService.listByProjectIdAndExpertId(projectId, userId); | |||
if (req.getIsFinal()) { | |||
// TODO 判断所有专家是否都已评价 | |||
if (reviews.isEmpty()) { | |||
throw BizException.wrap("请先填写个人评审意见"); | |||
} | |||
if (reviews.size() > 1) { | |||
throw BizException.wrap("不可重复填写最终评审意见"); | |||
} | |||
} else { | |||
if (!reviews.isEmpty()) { | |||
throw BizException.wrap("不可重复填写评审意见"); | |||
} | |||
} | |||
ExpertReview review = new ExpertReview(); | |||
review.setReviewResult(req.getReviewResult()); | |||
review.setContent(JSONUtil.toJsonStr(req.getReviewTemplateOptions())); | |||
review.setProjectId(req.getProjectId()); | |||
review.setTemplateId(req.getTemplateId()); | |||
review.setAdvice(req.getOtherAdvice()); | |||
review.setAttachFileId(req.getAttachFileId()); | |||
review.setIsFinal(req.getIsFinal()); | |||
review.setCreator(LoginUserUtil.getUsername()); | |||
expertReviewService.save(review); | |||
} finally { | |||
distributedLock.releaseLock(expertReviewKey); | |||
} | |||
} | |||
} |
@@ -8,6 +8,7 @@ import com.ningdatech.basic.exception.BizException; | |||
import com.ningdatech.pmapi.common.constant.BizConst; | |||
import com.ningdatech.pmapi.expert.model.dto.ReviewTemplateSettingsDTO; | |||
import com.ningdatech.pmapi.expert.model.entity.ReviewTemplateSettings; | |||
import com.ningdatech.pmapi.expert.model.enumeration.ReviewTemplateTypeEnum; | |||
import com.ningdatech.pmapi.expert.model.req.ReviewTemplateReq; | |||
import com.ningdatech.pmapi.expert.model.vo.ReviewTemplateVO; | |||
import com.ningdatech.pmapi.expert.service.IReviewTemplateSettingsService; | |||
@@ -31,25 +32,37 @@ public class ReviewTemplateSettingsManage { | |||
@Transactional(rollbackFor = Exception.class) | |||
public void saveOrUpdate(ReviewTemplateReq req) { | |||
ReviewTemplateTypeEnum type = ReviewTemplateTypeEnum.getByCode(req.getTemplateType()); | |||
LambdaUpdateWrapper<ReviewTemplateSettings> update = Wrappers.lambdaUpdate(ReviewTemplateSettings.class) | |||
.eq(ReviewTemplateSettings::getTemplateType, req.getTemplateType()) | |||
.eq(ReviewTemplateSettings::getTemplateType, type.getCode()) | |||
.eq(ReviewTemplateSettings::getRegionCode, req.getRegionCode()) | |||
.eq(ReviewTemplateSettings::getIsLast, Boolean.TRUE) | |||
.set(ReviewTemplateSettings::getIsLast, Boolean.FALSE) | |||
.last(BizConst.LIMIT_1); | |||
.set(ReviewTemplateSettings::getIsLast, Boolean.FALSE); | |||
reviewTemplateSettingsService.update(update); | |||
ReviewTemplateSettings settings = new ReviewTemplateSettings(); | |||
settings.setTemplateType(req.getTemplateType()); | |||
settings.setTemplateType(type.getCode()); | |||
settings.setRegionCode(req.getRegionCode()); | |||
settings.setIsLast(Boolean.TRUE); | |||
settings.setContent(JSONUtil.toJsonStr(req.getTemplates())); | |||
reviewTemplateSettingsService.save(settings); | |||
} | |||
public ReviewTemplateVO getReviewTemplateSettings(Integer templateType) { | |||
public ReviewTemplateVO getReviewTemplateSettings(Integer templateType, String regionCode) { | |||
LambdaQueryWrapper<ReviewTemplateSettings> query = Wrappers.lambdaQuery(ReviewTemplateSettings.class) | |||
.eq(ReviewTemplateSettings::getIsLast, Boolean.TRUE) | |||
.eq(ReviewTemplateSettings::getRegionCode, regionCode) | |||
.eq(ReviewTemplateSettings::getTemplateType, templateType) | |||
.last(BizConst.LIMIT_1); | |||
ReviewTemplateSettings settings = reviewTemplateSettingsService.getOne(query); | |||
return buildTemplateDetail(settings); | |||
} | |||
public ReviewTemplateVO getReviewTemplateSettings(Long templateId) { | |||
ReviewTemplateSettings settings = reviewTemplateSettingsService.getById(templateId); | |||
return buildTemplateDetail(settings); | |||
} | |||
private ReviewTemplateVO buildTemplateDetail(ReviewTemplateSettings settings) { | |||
if (settings == null) { | |||
throw BizException.wrap("模版不存在"); | |||
} | |||
@@ -0,0 +1,16 @@ | |||
package com.ningdatech.pmapi.expert.mapper; | |||
import com.ningdatech.pmapi.expert.model.entity.ExpertReview; | |||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
/** | |||
* <p> | |||
* Mapper 接口 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
public interface ExpertReviewMapper extends BaseMapper<ExpertReview> { | |||
} |
@@ -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.expert.mapper.ExpertReviewMapper"> | |||
</mapper> |
@@ -0,0 +1,70 @@ | |||
package com.ningdatech.pmapi.expert.model.entity; | |||
import com.baomidou.mybatisplus.annotation.*; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
import java.time.LocalDateTime; | |||
/** | |||
* <p> | |||
* 专家评价 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@Data | |||
@TableName("nd_expert_review") | |||
@ApiModel(value = "ExpertReview对象", description = "专家评价") | |||
public class ExpertReview implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty("主键") | |||
@TableId(type = IdType.AUTO) | |||
private Long id; | |||
@ApiModelProperty("项目ID") | |||
private Long projectId; | |||
@ApiModelProperty("评审模版配置ID") | |||
private Long templateId; | |||
@ApiModelProperty("评审内容") | |||
private String content; | |||
@ApiModelProperty("意见或建议") | |||
private String advice; | |||
@ApiModelProperty("附件ID") | |||
private Long attachFileId; | |||
@ApiModelProperty("评审结果") | |||
private Integer reviewResult; | |||
@ApiModelProperty("创建人姓名") | |||
private String creator; | |||
@ApiModelProperty("创建人") | |||
@TableField(fill = FieldFill.INSERT) | |||
private Long createBy; | |||
@ApiModelProperty("创建时间") | |||
@TableField(fill = FieldFill.INSERT) | |||
private LocalDateTime createOn; | |||
@ApiModelProperty("修改人") | |||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||
private Long updateBy; | |||
@ApiModelProperty("是否是最终意见") | |||
private Boolean isFinal; | |||
@ApiModelProperty("修改时间") | |||
@TableField(fill = FieldFill.INSERT_UPDATE) | |||
private LocalDateTime updateOn; | |||
} |
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import java.io.Serializable; | |||
import java.time.LocalDateTime; | |||
@@ -17,6 +18,7 @@ import java.time.LocalDateTime; | |||
* @author WendyYang | |||
* @since 2023-02-14 | |||
*/ | |||
@Data | |||
@TableName("nd_review_template_settings") | |||
@ApiModel(value = "NdReviewTemplateSettings对象", description = "评审模版配置表") | |||
public class ReviewTemplateSettings implements Serializable { | |||
@@ -33,92 +35,18 @@ public class ReviewTemplateSettings implements Serializable { | |||
@ApiModelProperty("模版内容") | |||
private String content; | |||
private Long createBy; | |||
private Long updateBy; | |||
private LocalDateTime createOn; | |||
private LocalDateTime updateOn; | |||
@ApiModelProperty("是否是最新") | |||
private Boolean isLast; | |||
public Long getId() { | |||
return id; | |||
} | |||
public void setId(Long id) { | |||
this.id = id; | |||
} | |||
public Integer getTemplateType() { | |||
return templateType; | |||
} | |||
public void setTemplateType(Integer templateType) { | |||
this.templateType = templateType; | |||
} | |||
public String getContent() { | |||
return content; | |||
} | |||
@ApiModelProperty("区域编码") | |||
private String regionCode; | |||
public void setContent(String content) { | |||
this.content = content; | |||
} | |||
public Long getCreateBy() { | |||
return createBy; | |||
} | |||
public void setCreateBy(Long createBy) { | |||
this.createBy = createBy; | |||
} | |||
public Long getUpdateBy() { | |||
return updateBy; | |||
} | |||
public void setUpdateBy(Long updateBy) { | |||
this.updateBy = updateBy; | |||
} | |||
public LocalDateTime getCreateOn() { | |||
return createOn; | |||
} | |||
public void setCreateOn(LocalDateTime createOn) { | |||
this.createOn = createOn; | |||
} | |||
public LocalDateTime getUpdateOn() { | |||
return updateOn; | |||
} | |||
private Long createBy; | |||
public void setUpdateOn(LocalDateTime updateOn) { | |||
this.updateOn = updateOn; | |||
} | |||
private Long updateBy; | |||
public Boolean getIsLast() { | |||
return isLast; | |||
} | |||
private LocalDateTime createOn; | |||
public void setIsLast(Boolean isLast) { | |||
this.isLast = isLast; | |||
} | |||
private LocalDateTime updateOn; | |||
@Override | |||
public String toString() { | |||
return "NdReviewTemplateSettings{" + | |||
"id=" + id + | |||
", templateType=" + templateType + | |||
", content=" + content + | |||
", createBy=" + createBy + | |||
", updateBy=" + updateBy + | |||
", createOn=" + createOn + | |||
", updateOn=" + updateOn + | |||
", isLast=" + isLast + | |||
"}"; | |||
} | |||
} |
@@ -0,0 +1,67 @@ | |||
package com.ningdatech.pmapi.expert.model.req; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import javax.validation.Valid; | |||
import javax.validation.constraints.NotEmpty; | |||
import javax.validation.constraints.NotNull; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* ExpertReviewDetailVO | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 14:37 2023/2/15 | |||
*/ | |||
@Data | |||
public class ExpertReviewDetailReq { | |||
@ApiModelProperty("模版ID") | |||
@NotNull(message = "模版ID不能为空") | |||
private Long templateId; | |||
@ApiModelProperty("项目ID") | |||
@NotNull(message = "项目ID不能为空") | |||
private Long projectId; | |||
@Valid | |||
@ApiModelProperty("配置模版") | |||
@NotEmpty(message = "配置不能为空") | |||
private List<ReviewTemplateOptionVO> reviewTemplateOptions; | |||
@ApiModelProperty("其他意见或建议") | |||
@NotEmpty(message = "其他意见或建议不能为空") | |||
private String otherAdvice; | |||
@ApiModelProperty("附件ID") | |||
private Long attachFileId; | |||
@ApiModelProperty("评审结果:1 通过、2 需复核、3 不通过") | |||
@NotNull(message = "评审结果不能为空") | |||
private Integer reviewResult; | |||
@ApiModelProperty("是否是最终意见") | |||
@NotNull(message = "是否是最终意见不能为空") | |||
private Boolean isFinal; | |||
@Data | |||
public static class ReviewTemplateOptionVO { | |||
@ApiModelProperty("问题序号") | |||
@NotNull(message = "问题序号不能为空") | |||
private Integer questionSerialNo; | |||
@ApiModelProperty("选项序号") | |||
@NotEmpty(message = "选项序号不能为空") | |||
private List<Integer> optionSerialNo; | |||
@ApiModelProperty("其他意见或建议") | |||
private String otherAdvice; | |||
} | |||
} |
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import javax.validation.Valid; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotEmpty; | |||
import javax.validation.constraints.NotNull; | |||
import java.util.List; | |||
@@ -24,6 +25,10 @@ public class ReviewTemplateReq { | |||
@NotNull(message = "模版类型不能为空") | |||
private Integer templateType; | |||
@ApiModelProperty("区域编码") | |||
@NotBlank(message = "区域编码不能为空") | |||
private String regionCode; | |||
@Valid | |||
@NotEmpty(message = "模版不能为空") | |||
@ApiModelProperty("模版数据") | |||
@@ -0,0 +1,28 @@ | |||
package com.ningdatech.pmapi.expert.service; | |||
import com.ningdatech.pmapi.expert.model.entity.ExpertReview; | |||
import com.baomidou.mybatisplus.extension.service.IService; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 服务类 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
public interface IExpertReviewService extends IService<ExpertReview> { | |||
/** | |||
* 根据项目ID和专家ID获取评审记录 | |||
* | |||
* @param projectId 项目ID | |||
* @param expertId 专家ID | |||
* @return 评审记录 | |||
* @author WendyYang | |||
**/ | |||
List<ExpertReview> listByProjectIdAndExpertId(Long projectId, Long expertId); | |||
} |
@@ -0,0 +1,33 @@ | |||
package com.ningdatech.pmapi.expert.service.impl; | |||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
import com.ningdatech.pmapi.expert.mapper.ExpertReviewMapper; | |||
import com.ningdatech.pmapi.expert.model.entity.ExpertReview; | |||
import com.ningdatech.pmapi.expert.service.IExpertReviewService; | |||
import org.springframework.stereotype.Service; | |||
import java.util.List; | |||
/** | |||
* <p> | |||
* 服务实现类 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@Service | |||
public class ExpertReviewServiceImpl extends ServiceImpl<ExpertReviewMapper, ExpertReview> implements IExpertReviewService { | |||
@Override | |||
public List<ExpertReview> listByProjectIdAndExpertId(Long projectId, Long expertId) { | |||
LambdaQueryWrapper<ExpertReview> query = Wrappers.lambdaQuery(ExpertReview.class); | |||
query.eq(ExpertReview::getProjectId, projectId); | |||
query.eq(ExpertReview::getCreateBy, expertId); | |||
query.orderByAsc(ExpertReview::getCreateOn); | |||
return list(query); | |||
} | |||
} |
@@ -0,0 +1,20 @@ | |||
package com.ningdatech.pmapi.projectlib.controller; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
import org.springframework.stereotype.Controller; | |||
/** | |||
* <p> | |||
* 续建项目资金申请表 前端控制器 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@Controller | |||
@RequestMapping("/pmapi.projectlib/nd-project-renewal-fund-declaration") | |||
public class ProjectRenewalFundDeclarationController { | |||
} |
@@ -0,0 +1,16 @@ | |||
package com.ningdatech.pmapi.projectlib.mapper; | |||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; | |||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
/** | |||
* <p> | |||
* 续建项目资金申请表 Mapper 接口 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
public interface ProjectRenewalFundDeclarationMapper extends BaseMapper<ProjectRenewalFundDeclaration> { | |||
} |
@@ -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.projectlib.mapper.ProjectRenewalFundDeclarationMapper"> | |||
</mapper> |
@@ -0,0 +1,173 @@ | |||
package com.ningdatech.pmapi.projectlib.model.entity; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import java.io.Serializable; | |||
import java.math.BigDecimal; | |||
import java.time.LocalDateTime; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
/** | |||
* <p> | |||
* 续建项目资金申请表 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@TableName("nd_project_renewal_fund_declaration") | |||
@ApiModel(value = "NdProjectRenewalFundDeclaration对象", description = "续建项目资金申请表") | |||
public class ProjectRenewalFundDeclaration implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
@ApiModelProperty("主键") | |||
private Long id; | |||
@ApiModelProperty("创建时间") | |||
private LocalDateTime createOn; | |||
@ApiModelProperty("修改时间") | |||
private LocalDateTime updateOn; | |||
@ApiModelProperty("关联项目ID") | |||
private Long projectId; | |||
@ApiModelProperty("项目年份") | |||
private Integer projectYear; | |||
@ApiModelProperty("年度支付金额") | |||
private BigDecimal annualPaymentAmount; | |||
@ApiModelProperty("自有资金") | |||
private BigDecimal haveAmount; | |||
@ApiModelProperty("政府投资 本级财务金额") | |||
private BigDecimal govOwnFinanceAmount; | |||
@ApiModelProperty("政府投资 上级财务金额") | |||
private BigDecimal govSuperiorFinanceAmount; | |||
@ApiModelProperty("银行贷款金额") | |||
private BigDecimal bankLendingAmount; | |||
@ApiModelProperty("其它金额") | |||
private BigDecimal otherAmount; | |||
@ApiModelProperty("审核状态 待审核PENGING 审核通过PASS 审核不通过NO_PASS") | |||
private String approvalStatus; | |||
@ApiModelProperty("是否删除 false未删 true已删") | |||
private Boolean deleted; | |||
public Long getId() { | |||
return id; | |||
} | |||
public void setId(Long id) { | |||
this.id = id; | |||
} | |||
public LocalDateTime getCreateOn() { | |||
return createOn; | |||
} | |||
public void setCreateOn(LocalDateTime createOn) { | |||
this.createOn = createOn; | |||
} | |||
public LocalDateTime getUpdateOn() { | |||
return updateOn; | |||
} | |||
public void setUpdateOn(LocalDateTime updateOn) { | |||
this.updateOn = updateOn; | |||
} | |||
public Long getProjectId() { | |||
return projectId; | |||
} | |||
public void setProjectId(Long projectId) { | |||
this.projectId = projectId; | |||
} | |||
public Integer getProjectYear() { | |||
return projectYear; | |||
} | |||
public void setProjectYear(Integer projectYear) { | |||
this.projectYear = projectYear; | |||
} | |||
public BigDecimal getAnnualPaymentAmount() { | |||
return annualPaymentAmount; | |||
} | |||
public void setAnnualPaymentAmount(BigDecimal annualPaymentAmount) { | |||
this.annualPaymentAmount = annualPaymentAmount; | |||
} | |||
public BigDecimal getHaveAmount() { | |||
return haveAmount; | |||
} | |||
public void setHaveAmount(BigDecimal haveAmount) { | |||
this.haveAmount = haveAmount; | |||
} | |||
public BigDecimal getGovOwnFinanceAmount() { | |||
return govOwnFinanceAmount; | |||
} | |||
public void setGovOwnFinanceAmount(BigDecimal govOwnFinanceAmount) { | |||
this.govOwnFinanceAmount = govOwnFinanceAmount; | |||
} | |||
public BigDecimal getGovSuperiorFinanceAmount() { | |||
return govSuperiorFinanceAmount; | |||
} | |||
public void setGovSuperiorFinanceAmount(BigDecimal govSuperiorFinanceAmount) { | |||
this.govSuperiorFinanceAmount = govSuperiorFinanceAmount; | |||
} | |||
public BigDecimal getBankLendingAmount() { | |||
return bankLendingAmount; | |||
} | |||
public void setBankLendingAmount(BigDecimal bankLendingAmount) { | |||
this.bankLendingAmount = bankLendingAmount; | |||
} | |||
public BigDecimal getOtherAmount() { | |||
return otherAmount; | |||
} | |||
public void setOtherAmount(BigDecimal otherAmount) { | |||
this.otherAmount = otherAmount; | |||
} | |||
public String getApprovalStatus() { | |||
return approvalStatus; | |||
} | |||
public void setApprovalStatus(String approvalStatus) { | |||
this.approvalStatus = approvalStatus; | |||
} | |||
public Boolean getDeleted() { | |||
return deleted; | |||
} | |||
public void setDeleted(Boolean deleted) { | |||
this.deleted = deleted; | |||
} | |||
@Override | |||
public String toString() { | |||
return "NdProjectRenewalFundDeclaration{" + | |||
"id=" + id + | |||
", createOn=" + createOn + | |||
", updateOn=" + updateOn + | |||
", projectId=" + projectId + | |||
", projectYear=" + projectYear + | |||
", annualPaymentAmount=" + annualPaymentAmount + | |||
", haveAmount=" + haveAmount + | |||
", govOwnFinanceAmount=" + govOwnFinanceAmount + | |||
", govSuperiorFinanceAmount=" + govSuperiorFinanceAmount + | |||
", bankLendingAmount=" + bankLendingAmount + | |||
", otherAmount=" + otherAmount + | |||
", approvalStatus=" + approvalStatus + | |||
", deleted=" + deleted + | |||
"}"; | |||
} | |||
} |
@@ -0,0 +1,16 @@ | |||
package com.ningdatech.pmapi.projectlib.service; | |||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; | |||
import com.baomidou.mybatisplus.extension.service.IService; | |||
/** | |||
* <p> | |||
* 续建项目资金申请表 服务类 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
public interface IProjectRenewalFundDeclarationService extends IService<ProjectRenewalFundDeclaration> { | |||
} |
@@ -0,0 +1,20 @@ | |||
package com.ningdatech.pmapi.projectlib.service.impl; | |||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; | |||
import com.ningdatech.pmapi.projectlib.mapper.ProjectRenewalFundDeclarationMapper; | |||
import com.ningdatech.pmapi.projectlib.service.IProjectRenewalFundDeclarationService; | |||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
import org.springframework.stereotype.Service; | |||
/** | |||
* <p> | |||
* 续建项目资金申请表 服务实现类 | |||
* </p> | |||
* | |||
* @author WendyYang | |||
* @since 2023-02-15 | |||
*/ | |||
@Service | |||
public class ProjectRenewalFundDeclarationServiceImpl extends ServiceImpl<ProjectRenewalFundDeclarationMapper, ProjectRenewalFundDeclaration> implements IProjectRenewalFundDeclarationService { | |||
} |
@@ -102,6 +102,12 @@ logging: | |||
file: | |||
path: logs | |||
nd: | |||
cache: | |||
type: REDIS | |||
serializerType: ProtoStuff | |||
cacheNullVal: true | |||
def: | |||
keyPrefix: pm | |||
log: | |||
enabled: true | |||
type: DB | |||