heheng
2024-12-03 05600d089901d44e8d5036046025b6a90ceb896a
修改及增加功能
已修改19个文件
已添加6个文件
885 ■■■■ 文件已修改
expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/ProjectDeptPostDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/ProjectDeptPostVo.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ExpertBatchChangeReq.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectDetailResp.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertExportInfoRes.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertExportResp.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/service/impl/ProjectFileServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java
@@ -7,7 +7,9 @@
import com.gkhy.common.core.domain.AjaxResult;
import com.gkhy.common.core.domain.R;
import com.gkhy.common.core.page.TableDataInfo;
import com.gkhy.common.utils.SecurityUtils;
import com.gkhy.system.domain.SysExpertInfo;
import com.gkhy.system.domain.vo.request.ExpertBatchChangeReq;
import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
@@ -34,7 +36,7 @@
    private SysExpertInfoService expertInfoService;
    // @RequiresPermissions("system:assess:monitor")
    @ApiOperation(value = "专家列表(分页)")
    @ApiOperation(value = "专家列表(分页-都可见)")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50")
@@ -42,6 +44,23 @@
    @GetMapping("/list")
    public TableDataInfo exportInfoList(SysExpertInfo expertInfo) {
        startPage();
        List<SysExpertInfo> sysExpertInfos = expertInfoService.exportInfoList(expertInfo);
        return getDataTable(sysExpertInfos);
    }
    @ApiOperation(value = "专家列表(分页-限制处室)")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50")
    })
    @GetMapping("/perList")
    public TableDataInfo exportInfoPerList(SysExpertInfo expertInfo) {
        startPage();
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
            expertInfo.setDeptId(SecurityUtils.getDeptId());
        }
        List<SysExpertInfo> sysExpertInfos = expertInfoService.exportInfoList(expertInfo);
        return getDataTable(sysExpertInfos);
@@ -114,4 +133,13 @@
    }
    @RepeatSubmit
    //@RequiresPermissions("system:assess:monitor")
    @ApiOperation(value = "一键修改证书有效期")
    @PostMapping("/batchChangeEmploymentDate")
    public AjaxResult batchChangeEmploymentDate(@RequestBody ExpertBatchChangeReq expertInfo) {
        expertInfoService.batchChangeEmploymentDate(expertInfo);
        return AjaxResult.success();
    }
}
expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java
@@ -203,6 +203,18 @@
        return R.ok(projectManagementService.selectProjectExpertDetailList(projectExpertId));
    }
    @ApiOperation(value = "专家考评记录——专家考评详情")
    //@PreAuthorize("@ss.hasPermi('system:management:list')")
    @GetMapping("/selectProjectExpertDetail")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectExpertId", dataType = "long", required = true, value = "项目专家id")
    })
    public R<ProjectDetailResp> selectProjectExpertDetail(@RequestParam("projectExpertId") Long projectExpertId)
    {
        return R.ok(projectManagementService.selectProjectExpertDetail(projectExpertId));
    }
    @GetMapping("/selectProjectFileList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectId", dataType = "long", required = true, value = "项目id"),
@@ -219,4 +231,15 @@
        return R.ok(projectManagementService.getProjectNum());
    }
    @ApiOperation(value = "项目管理----导出专家报销")
    //@PreAuthorize("@ss.hasPermi('system:management:list')")
    @GetMapping("/projectExpertExportList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "projectId", dataType = "long", required = true, value = "项目id")
    })
    public R<List<ProjectExpertExportInfoRes>> projectExpertExportList(@RequestParam("projectId") Long projectId)
    {
        return R.ok(projectManagementService.projectExpertExportList(projectId));
    }
}
expert-admin/src/main/resources/application.yml
@@ -48,8 +48,8 @@
    basename: i18n/messages
  profiles:
    # 环境配置,dev开发环境,prod生产环境
    #active: dev
    active: prod
    active: dev
    #active: prod
  # 文件上传
  servlet:
    multipart:
expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java
@@ -6,10 +6,11 @@
import com.gkhy.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
@@ -18,6 +19,8 @@
 * @author expert
 * @date 2024-11-14
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertMapper.ProjectExpertResult")
@ApiModel(value = "项目专家关联对象", description = "项目专家关联对象表")
public class ProjectExpert extends BaseEntity {
@@ -32,40 +35,40 @@
    /**
     * 项目id
     */
    @ApiModelProperty(name = "项目名称",required = true)
    @ApiModelProperty(value = "项目名称",required = true)
    @NotNull(message = "项目不能为空")
    private Long projectId;
    /**
     * 专家id
     */
    @ApiModelProperty(name = "专家id",required = true)
    @ApiModelProperty(value = "专家id",required = true)
    @NotNull(message = "选择专家")
    private Long expertId;
    /**
     * 总分
     */
    @ApiModelProperty(name = "总分")
    @ApiModelProperty(value = "总分")
    private Long score;
    /**
     * 评估状态0未评估1已评估
     */
    @ApiModelProperty(name = "评估状态0未评估1已评估")
    @ApiModelProperty(value = "评估状态0未评估1已评估")
    private Long evaluationState;
    /**
     * 选取方式1固定2随机
     */
    @ApiModelProperty(name = "选取方式1固定2随机",required = true)
    @ApiModelProperty(value = "选取方式1固定2随机",required = true)
    @NotNull(message = "选取方式不能为空")
    private Long selectionMode;
    /**
     * 是否组长0否1是
     */
    @ApiModelProperty(name = "是否组长0否1是",required = true)
    @ApiModelProperty(value = "是否组长0否1是",required = true)
    @NotNull(message = "是否组长不能为空")
    private Long teamLeader;
@@ -74,85 +77,65 @@
     */
    private Long delFlag;
    public void setId(Long id) {
        this.id = id;
    }
    public Long getId() {
        return id;
    }
    @ApiModelProperty(value = "职业道德1优秀2合格3基本合格4不合格")
    private Long professionalEthics;
    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }
    /** 公正廉洁1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "公正廉洁1优秀2合格3基本合格4不合格")
    private Long impartialHonest;
    public Long getProjectId() {
        return projectId;
    }
    /** 综合协调1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "综合协调1优秀2合格3基本合格4不合格")
    private Long comprehensiveCoordination;
    public void setExpertId(Long expertId) {
        this.expertId = expertId;
    }
    /** 专业能力1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "专业能力1优秀2合格3基本合格4不合格")
    private Long professionalAbility;
    public Long getExpertId() {
        return expertId;
    }
    /** 意见表达1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "意见表达1优秀2合格3基本合格4不合格")
    private Long expressingOpinions;
    public void setScore(Long score) {
        this.score = score;
    }
    /** 其他意见 */
    @ApiModelProperty(value = "其他意见")
    private String others;
    public Long getScore() {
        return score;
    }
    /** 综合评价1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "综合评价1优秀2合格3基本合格4不合格")
    private Long comprehensiveEvaluation;
    public void setevaluationState(Long evaluationState) {
        this.evaluationState = evaluationState;
    }
    /** 重大隐患 */
    @ApiModelProperty(value = "重大隐患")
    private Long majorDangers;
    public Long getevaluationState() {
        return evaluationState;
    }
    /** 一般隐患 */
    @ApiModelProperty(value = "一般隐患")
    private Long generalHazards;
    public void setSelectionMode(Long selectionMode) {
        this.selectionMode = selectionMode;
    }
    /** 内容描述 */
    @ApiModelProperty(value = "内容描述")
    private String content;
    public Long getSelectionMode() {
        return selectionMode;
    }
    /** 计费标准 */
    @ApiModelProperty(value = "计费标准")
    private String freightBasis;
    public void setTeamLeader(Long teamLeader) {
        this.teamLeader = teamLeader;
    }
    /** 计费时长 */
    @ApiModelProperty(value = "计费时长")
    private BigDecimal billingDuration;
    public Long getTeamLeader() {
        return teamLeader;
    }
    /** 税后金额 */
    @ApiModelProperty(value = "税后金额")
    private BigDecimal afterTaxAmount;
    public void setDelFlag(Long delFlag) {
        this.delFlag = delFlag;
    }
    /** 开户行 */
    @ApiModelProperty(value = "开户行")
    private String openBank;
    public Long getDelFlag() {
        return delFlag;
    }
    /** 卡号 */
    @ApiModelProperty(value = "卡号")
    private String bankCard;
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("projectId", getProjectId())
                .append("expertId", getExpertId())
                .append("score", getScore())
                .append("evaluationState", getevaluationState())
                .append("selectionMode", getSelectionMode())
                .append("teamLeader", getTeamLeader())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java
@@ -1,10 +1,13 @@
package com.gkhy.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gkhy.common.core.domain.BaseEntity;
import com.gkhy.system.domain.vo.ProjectDeptPostDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -21,7 +24,7 @@
 * @author expert
 * @date 2024-11-14
 */
@TableName(resultMap = "com.gkhy.system.mapper.ProjectManagementMapper.ProjectManagementResult")
@TableName(autoResultMap = true)
@ApiModel(value = "项目管理对象", description = "项目管理对象表")
public class ProjectManagement extends BaseEntity {
    private static final long serialVersionUID = 1L;
@@ -56,8 +59,8 @@
    /**
     * 被检单位
     */
    @ApiModelProperty(value = "被检单位")
    private String companyName;
    @ApiModelProperty(value = "工作类别")
    private String jobCategory;
    /**
     * 项目地址
@@ -66,12 +69,16 @@
    @NotBlank(message = "项目地址不能为空")
    private String projectAddress;
    /**
     * 部门带队人员
     */
    @ApiModelProperty(value = "部门带队人员",required = true)
    @NotBlank(message = "处室带队人员不能为空")
    private String deptUserName;
//    /**
//     * 部门带队人员
//     */
//    @ApiModelProperty(value = "处室人员",required = false,hidden = true)
//    private String deptUserName;
    @ApiModelProperty(value = "处室人员及职务职务",required = true)
    @NotNull(message = "处室人员及职务职务不能为空")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private ProjectDeptPostDTO deptPostName;
    /**
     * 乐观锁
@@ -176,13 +183,7 @@
        return deptName;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setProjectAddress(String projectAddress) {
        this.projectAddress = projectAddress;
@@ -192,13 +193,13 @@
        return projectAddress;
    }
    public void setDeptUserName(String deptUserName) {
        this.deptUserName = deptUserName;
    }
    public String getDeptUserName() {
        return deptUserName;
    }
//    public void setDeptUserName(String deptUserName) {
//        this.deptUserName = deptUserName;
//    }
//
//    public String getDeptUserName() {
//        return deptUserName;
//    }
    public void setVersion(Long version) {
        this.version = version;
@@ -263,9 +264,7 @@
                .append("projectName", getProjectName())
                .append("deptId", getDeptId())
                .append("deptName", getDeptName())
                .append("companyName", getCompanyName())
                .append("projectAddress", getProjectAddress())
                .append("deptUserName", getDeptUserName())
                .append("version", getVersion())
                .append("state", getState())
                .append("remark", getRemark())
@@ -338,4 +337,20 @@
    public void setEvaluationState(Long evaluationState) {
        this.evaluationState = evaluationState;
    }
    public String getJobCategory() {
        return jobCategory;
    }
    public void setJobCategory(String jobCategory) {
        this.jobCategory = jobCategory;
    }
    public ProjectDeptPostDTO getDeptPostName() {
        return deptPostName;
    }
    public void setDeptPostName(ProjectDeptPostDTO deptPostName) {
        this.deptPostName = deptPostName;
    }
}
expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java
@@ -79,7 +79,7 @@
    @TableField("title")
    private String title;
    @NotBlank(message ="电子照片不能为空" )
    //@NotBlank(message ="电子照片不能为空" )
    @ApiModelProperty("电子照片")
    @TableField("electronic_photo")
    private String electronicPhoto;
@@ -156,6 +156,7 @@
    private String supportDirectionEmergency;
    @ApiModelProperty("简历")
    @NotBlank(message ="简历不可为空" )
    @TableField("resume_key")
    private String resumeKey;
@@ -230,4 +231,9 @@
    @TableField("expert_certificate")
    private String expertCertificate;
    @ApiModelProperty("证明材料")
    @TableField("evidence")
    private String evidence;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/ProjectDeptPostDTO.java
对比新文件
@@ -0,0 +1,23 @@
package com.gkhy.system.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel(value = "项目处室及职务对象", description = "项目处室及职务对象")
public class ProjectDeptPostDTO implements Serializable {
    /**
     * 部门带队人员
     */
    @ApiModelProperty(value = "处室职务对象",required = true)
    @NotEmpty(message = "处室职务对象不能为空")
    private List<ProjectDeptPostVo> postVos;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/ProjectDeptPostVo.java
对比新文件
@@ -0,0 +1,25 @@
package com.gkhy.system.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
@ApiModel(value = "项目处室及职务", description = "项目处室及职务")
public class ProjectDeptPostVo implements Serializable {
    /**
     * 部门带队人员
     */
    @ApiModelProperty(value = "处室人员",required = true)
    @NotBlank(message = "处室人员不能为空")
    private String deptUserName;
    @ApiModelProperty(value = "职务",required = true)
    @NotBlank(message = "职务不能为空")
    private String deptPostName;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ExpertBatchChangeReq.java
对比新文件
@@ -0,0 +1,32 @@
package com.gkhy.system.domain.vo.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@ApiModel(value = "专家一建修改有效期" , description = "专家一建修改有效期")
@Data
public class ExpertBatchChangeReq implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "选中数据",required = true)
    @NotEmpty
    private List<Long> id;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @NotNull
    @ApiModelProperty(value = "聘书有效开始时间",required = true)
    private Date employmentDateStart;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "聘书有效结束时间",required = true)
    @NotNull
    private Date employmentDateEnd;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java
@@ -7,6 +7,7 @@
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "项目专家人员考评分数" , description = "项目专家人员考评分数")
@@ -28,6 +29,79 @@
    @NotNull(message = "得分不能为空")
    private Long score;
    @ApiModelProperty(value = "职业道德1优秀2合格3基本合格4不合格")
    @NotNull(message = "职业道德不能为空")
    private Long professionalEthics;
    /** 公正廉洁1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "公正廉洁1优秀2合格3基本合格4不合格")
    @NotNull(message = "公正廉洁不能为空")
    private Long impartialHonest;
    /** 综合协调1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "综合协调1优秀2合格3基本合格4不合格")
    @NotNull(message = "综合协调不能为空")
    private Long comprehensiveCoordination;
    /** 专业能力1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "专业能力1优秀2合格3基本合格4不合格")
    @NotNull(message = "专业能力不能为空")
    private Long professionalAbility;
    /** 意见表达1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "意见表达1优秀2合格3基本合格4不合格")
    @NotNull(message = "意见表达不能为空")
    private Long expressingOpinions;
    /** 其他意见 */
    @ApiModelProperty(value = "其他意见")
    private String others;
    /** 综合评价1优秀2合格3基本合格4不合格 */
    @ApiModelProperty(value = "综合评价1优秀2合格3基本合格4不合格")
    @NotNull(message = "综合评价不能为空")
    private Long comprehensiveEvaluation;
    /** 重大隐患 */
    @ApiModelProperty(value = "重大隐患")
    private Long majorDangers;
    /** 一般隐患 */
    @ApiModelProperty(value = "一般隐患")
    private Long generalHazards;
    /** 内容描述 */
    @ApiModelProperty(value = "内容描述")
    private String content;
    /** 计费标准 */
    @ApiModelProperty(value = "计费标准")
    @NotBlank(message = "计费标准不能为空")
    private String freightBasis;
    /** 计费时长 */
    @ApiModelProperty(value = "计费时长")
    @NotNull(message = "计费时长不能为空")
    private BigDecimal billingDuration;
    /** 税后金额 */
    @ApiModelProperty(value = "税后金额")
    @NotNull(message = "税后金额不能为空")
    private BigDecimal afterTaxAmount;
    /** 开户行 */
    @ApiModelProperty(value = "开户行")
    @NotBlank(message = "开户行不能为空")
    private String openBank;
    /** 卡号 */
    @ApiModelProperty(value = "卡号")
    @NotBlank(message = "卡号不能为空")
    private String bankCard;
    @Data
    static public class Score {
expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java
@@ -1,6 +1,7 @@
package com.gkhy.system.domain.vo.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gkhy.system.domain.vo.ProjectDeptPostDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -24,8 +25,8 @@
    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称",required = true)
    @NotBlank(message = "项目名称不能为空")
    @ApiModelProperty(value = "项目名称(事由)",required = true)
    @NotBlank(message = "项目名称(事由)不能为空")
    private String projectName;
    /**
@@ -45,22 +46,31 @@
    /**
     * 被检单位
     */
    @ApiModelProperty(value = "被检单位")
    private String companyName;
    @ApiModelProperty(value = "工作类别")
    @NotBlank(message = "工作类别不能为空")
    private String jobCategory;
    /**
     * 项目地址
     */
    @ApiModelProperty(value = "项目地址",required = true)
    @NotBlank(message = "项目地址不能为空")
    @ApiModelProperty(value = "目的地及相关企业名称等",required = true)
    @NotBlank(message = "目的地及相关企业名称等")
    private String projectAddress;
    /**
     * 部门带队人员
     */
    @ApiModelProperty(value = "部门带队人员",required = true)
    @NotBlank(message = "处室带队人员不能为空")
    private String deptUserName;
//    /**
//     * 部门带队人员
//     */
//    @ApiModelProperty(value = "处室人员",required = true)
//    @NotBlank(message = "处室人员不能为空")
//    private String deptUserName;
//
//    @ApiModelProperty(value = "职务",required = true)
//    @NotBlank(message = "职务不能为空")
//    private String postName;
    @ApiModelProperty(value = "处室人员及职务职务",required = true)
    @NotNull(message = "处室人员及职务职务不能为空")
    private ProjectDeptPostDTO deptPostName;
    /**
     * 项目预计开始日期
@@ -79,7 +89,6 @@
    private Date projectDateEnd;
    @ApiModelProperty(value = "项目概况",required = true)
    @NotBlank(message = "项目概况不能为空")
    @ApiModelProperty(value = "项目概况")
    private String remark;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectDetailResp.java
对比新文件
@@ -0,0 +1,38 @@
package com.gkhy.system.domain.vo.response;
import com.gkhy.system.domain.ProjectExpert;
import com.gkhy.system.domain.ProjectExpertDetail;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel(value = "项目专家详情", description = "项目专家详情")
@Data
public class ProjectDetailResp extends ProjectExpert {
    @ApiModelProperty("记录详情")
    private List<ProjectExpertDetail> expertDetails;
    /**
     * 处室
     */
    @ApiModelProperty(value = "处室")
    private Long deptId;
    /**
     * 部门名称
     */
    @ApiModelProperty(value = "处室名称")
    private String deptName;
    @ApiModelProperty(value = "项目名称")
    private String projectName;
    @ApiModelProperty(value = "职称")
    private String title;
    @ApiModelProperty(value = "职务")
    private String job;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java
@@ -5,6 +5,8 @@
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ApiModel(value = "项目专家审批详情", description = "项目专家审批详情")
@Data
public class ProjectExpertCheckResp implements Serializable {
@@ -37,4 +39,17 @@
    @ApiModelProperty("专家领域")
    private String domain;
    @ApiModelProperty("公司名称")
    private String companyName;
    @ApiModelProperty("联系电话")
    private String phone;
    @ApiModelProperty("实际使用时间")
    private Date selectionTime;
    @ApiModelProperty("备注")
    private String expertRemark;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertExportInfoRes.java
对比新文件
@@ -0,0 +1,39 @@
package com.gkhy.system.domain.vo.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * 项目管理对象 project_management
 *
 * @author expert
 * @date 2024-11-14
 */
@ApiModel(value = "项目管理专家详情" , description = "项目管理专家详情")
@Data
public class ProjectExpertExportInfoRes implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 项目名称
     */
    @ApiModelProperty(name = "项目名称")
    private String projectName;
    /**
     * 部门名称
     */
    @ApiModelProperty(name = "处室名称")
    private String deptName;
    @ApiModelProperty(name = "专家数据")
    private List<ProjectExpertExportResp> projectExpertExportResps;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertExportResp.java
对比新文件
@@ -0,0 +1,52 @@
package com.gkhy.system.domain.vo.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "项目专家审批详情", description = "项目专家审批详情")
@Data
public class ProjectExpertExportResp implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("专家名称")
    private String name;
    @ApiModelProperty("身份证号码")
    private String idCard;
    @ApiModelProperty("职称")
    private String title;
    @ApiModelProperty("职务")
    private String job;
    @ApiModelProperty("单位名称")
    private String companyName;
    /** 计费标准 */
    @ApiModelProperty(value = "计费标准")
    private String freightBasis;
    /** 计费时长 */
    @ApiModelProperty(value = "计费时长")
    private BigDecimal billingDuration;
    /** 税后金额 */
    @ApiModelProperty(value = "税后金额")
    private BigDecimal afterTaxAmount;
    /** 开户行 */
    @ApiModelProperty(value = "开户行")
    private String openBank;
    /** 卡号 */
    @ApiModelProperty(value = "卡号")
    private String bankCard;
}
expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java
@@ -43,8 +43,8 @@
    /**
     * 被检单位
     */
    @ApiModelProperty(name = "被检单位")
    private String companyName;
    @ApiModelProperty(name = "工作类别")
    private String jobCategory;
    /**
     * 项目地址
@@ -61,11 +61,6 @@
    @ApiModelProperty(value = "步骤1暂存2专家选取3审批4完结")
    private Long step;
//    /**
//     * 部门带队人员
//     */
//    @ApiModelProperty(name = "部门带队人员")
//    private String deptUserName;
    /**
     * 项目预计开始日期
expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java
@@ -4,6 +4,7 @@
import com.gkhy.system.domain.ProjectExpert;
import com.gkhy.system.domain.vo.request.SysProjectExpertReq;
import com.gkhy.system.domain.vo.response.ProjectExpertEvaluationResp;
import com.gkhy.system.domain.vo.response.ProjectExpertExportInfoRes;
import com.gkhy.system.domain.vo.response.ProjectExpertResp;
import java.util.List;
@@ -87,4 +88,11 @@
     * @return
     */
    List<ProjectExpertResp> projectExpertEvaList(SysProjectExpertReq req);
    /**
     * 导出报销
     * @param projectId
     * @return
     */
    List<ProjectExpertExportInfoRes> projectExpertExportList(Long projectId);
}
expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java
@@ -125,4 +125,13 @@
    ProjectNumResp getProjectNum();
    ProjectDetailResp selectProjectExpertDetail(Long projectExpertId);
    /**
     * 导出项目报销
     * @param projectId
     * @return
     */
    List<ProjectExpertExportInfoRes> projectExpertExportList(Long projectId);
}
expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.system.domain.SysExpertInfo;
import com.gkhy.system.domain.vo.request.ExpertBatchChangeReq;
import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
@@ -81,4 +82,10 @@
     * @return
     */
    List<ProjectExpertSectionResp> getExpertRound(SysExpertInfoRoundReq req);
    /**
     *一建修改证书有效期
     * @param req
     */
    void batchChangeEmploymentDate(ExpertBatchChangeReq req);
}
expert-system/src/main/java/com/gkhy/system/service/impl/ProjectFileServiceImpl.java
@@ -6,6 +6,7 @@
import com.gkhy.system.service.IProjectFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -22,6 +23,7 @@
    @Override
    @Transactional
    public Boolean saveBatchProjectFile(List<ProjectFile> projectFile) {
        return saveBatch(projectFile);
    }
expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java
@@ -8,16 +8,10 @@
import com.gkhy.common.utils.DateUtils;
import com.gkhy.common.utils.SecurityUtils;
import com.gkhy.common.utils.StringUtils;
import com.gkhy.system.domain.ProjectExpert;
import com.gkhy.system.domain.ProjectExpertDetail;
import com.gkhy.system.domain.ProjectFile;
import com.gkhy.system.domain.ProjectManagement;
import com.gkhy.system.domain.*;
import com.gkhy.system.domain.vo.request.*;
import com.gkhy.system.domain.vo.response.*;
import com.gkhy.system.mapper.ProjectExpertDetailMapper;
import com.gkhy.system.mapper.ProjectExpertMapper;
import com.gkhy.system.mapper.ProjectFileMapper;
import com.gkhy.system.mapper.ProjectManagementMapper;
import com.gkhy.system.mapper.*;
import com.gkhy.system.service.IProjectFileService;
import com.gkhy.system.service.IProjectManagementService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -49,6 +43,8 @@
    @Autowired
    private IProjectFileService projectFileService;
    @Autowired
    private SysExpertInfoMapper sysExpertInfoMapper;
    /**
     * 查询项目管理
@@ -94,12 +90,14 @@
            projectManagementSave.setUpdateBy(SecurityUtils.getUsername());
            projectManagementSave.setUpdateTime(DateUtils.getNowDate());
            projectManagementMapper.updateProjectManagement(projectManagementSave);
           // projectManagementMapper.updateProjectManagement(projectManagementSave);
            updateById(projectManagementSave);
        }else {
            projectManagementSave.setStep(1L);
            projectManagementSave.setCreateBy(SecurityUtils.getUsername());
            projectManagementSave.setCreateTime(DateUtils.getNowDate());
            projectManagementMapper.insertProjectManagement(projectManagementSave);
            save(projectManagementSave);
          //  projectManagementMapper.insertProjectManagement(projectManagementSave);
        }
@@ -376,9 +374,10 @@
        //更新项目专家表
        ProjectExpert projectExpert = new ProjectExpert();
        BeanUtil.copyProperties(req, projectExpert);
        projectExpert.setId(req.getProjectExpertId());
        projectExpert.setScore(req.getScore());
        projectExpert.setevaluationState(1L);
        projectExpert.setEvaluationState(1L);
        int i = projectExpertMapper.updateProjectExpert(projectExpert);
        if (i < 1){
            throw new ServiceException("保存失败!");
@@ -469,6 +468,49 @@
        return projectNumResp;
    }
    @Override
    public ProjectDetailResp selectProjectExpertDetail(Long projectExpertId) {
        ProjectDetailResp projectDetailResp = new ProjectDetailResp();
        ProjectExpert projectExpert = projectExpertMapper.selectProjectExpertById(projectExpertId);
        BeanUtil.copyProperties(projectExpert, projectDetailResp);
        if (projectDetailResp != null){
            ProjectExpertDetail projectExpertDetail = new ProjectExpertDetail();
            projectExpertDetail.setProjectExpertId(projectExpertId);
            List<ProjectExpertDetail> projectExpertDetails = projectExpertDetailMapper.selectProjectExpertDetailList(projectExpertDetail);
            if (StringUtils.isNotEmpty(projectExpertDetails)){
                projectDetailResp.setExpertDetails(projectExpertDetails);
            }
            Long projectId = projectDetailResp.getProjectId();
            ProjectManagement projectManagement = projectManagementMapper.selectProjectManagementById(projectId);
            projectDetailResp.setDeptId(projectManagement.getDeptId());
            projectDetailResp.setDeptName(projectDetailResp.getDeptName());
            projectDetailResp.setProjectName(projectManagement.getProjectName());
            SysExpertInfo sysExpertInfo = sysExpertInfoMapper.selectById(projectDetailResp.getExpertId());
            if (sysExpertInfo != null){
                projectDetailResp.setTitle(sysExpertInfo.getTitle());
                projectDetailResp.setJob(sysExpertInfo.getJob());
            }
        }
        return projectDetailResp;
    }
    @Override
    public List<ProjectExpertExportInfoRes> projectExpertExportList(Long projectId) {
        ProjectManagement projectManagement = checkData(projectId);
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId()) && projectManagement.getDeptId().intValue() != SecurityUtils.getDeptId().intValue()){
            throw new ServiceException("非本部门数据,无权操作!");
        }
        if (projectManagement.getState() != 4){
            throw new ServiceException("项目未完成,无权操作!");
        }
        if (projectManagement.getEvaluationState() == 0){
            throw new ServiceException("有专家未完成评定与报销,请完善后再试");
        }
        return projectExpertMapper.projectExpertExportList(projectId);
    }
    private List<ProjectExpertDetail> dealData(List<ProjectExpertScoreSaveReq.Score> data,Long projectExpertId){
        List<ProjectExpertDetail> dealData = new ArrayList<>();
        data.forEach(dto -> {
expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java
@@ -2,11 +2,14 @@
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.common.enums.DeleteFlagEnum;
import com.gkhy.common.exception.ServiceException;
import com.gkhy.common.utils.SecurityUtils;
import com.gkhy.common.utils.StringUtils;
import com.gkhy.system.domain.SysExpertInfo;
import com.gkhy.system.domain.vo.request.ExpertBatchChangeReq;
import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
@@ -30,10 +33,8 @@
    @Override
    public List<SysExpertInfo> exportInfoList(SysExpertInfo expertInfo) {
        //todo 验证是否是管理不是管理只能看本部门
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
            expertInfo.setDeptId(SecurityUtils.getDeptId());
        }
        //
        return baseMapper.expertInfoList(expertInfo);
    }
@@ -41,6 +42,9 @@
    public int addExpertInfo(SysExpertInfo expertInfo) {
        if(!checkIdCardUnique(new SysExpertInfo().setIdCard(expertInfo.getIdCard()))){
            throw new ServiceException("该业务处室申请数据已存在");
        }
        if(StringUtils.isEmpty(expertInfo.getPersonalOpinionKey()) && StringUtils.isEmpty(expertInfo.getRecommendUnitOpinionKey())){
            throw new ServiceException("专家本人意见和推荐单位意见不能同时为空");
        }
        expertInfo.setCreateBy(expertInfo.getName());
        boolean b=save(expertInfo);
@@ -55,6 +59,7 @@
        if(!checkIdCardUnique(expertInfo)){
            throw new ServiceException("该业务处室申请数据已存在");
        }
        checkHavePer(expertInfo.getId());
        expertInfo.setUpdateBy(SecurityUtils.getUsername());
        boolean b=updateById(expertInfo);
        if(!b){
@@ -65,6 +70,8 @@
    @Override
    public int delExpertInfo(Long expertId) {
        checkHavePer(expertId);
        SysExpertInfo expertInfo = new SysExpertInfo();
        expertInfo.setId(expertId);
        expertInfo.setDelFlag(DeleteFlagEnum.DELETED.getCode().intValue());
@@ -86,6 +93,13 @@
        return baseMapper.getExpertInfoById(expertId);
    }
   private void checkHavePer(Long expertId){
       SysExpertInfo sysExpertInfo = checkExpertInfoDataScope(expertId);
       if (!SecurityUtils.isAdmin(SecurityUtils.getUserId()) && !sysExpertInfo.getDeptId().toString().equals(SecurityUtils.getDeptId().toString()))
       {
           throw new ServiceException("没有权限操作该专家信息!");
       }
   }
    public SysExpertInfo checkExpertInfoDataScope(Long expertId) {
@@ -120,10 +134,24 @@
    @Override
    public List<ProjectExpertSectionResp> getExpertRound(SysExpertInfoRoundReq req) {
        req.setDeptId(SecurityUtils.getDeptId());
       // req.setDeptId(SecurityUtils.getDeptId());
        return baseMapper.getExpertRound(req);
    }
    @Override
    public void batchChangeEmploymentDate(ExpertBatchChangeReq req) {
        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
            throw new ServiceException("无权操作!");
        }
        baseMapper.update(null, Wrappers.<SysExpertInfo>lambdaUpdate()
                .set(SysExpertInfo::getUpdateBy,SecurityUtils.getUsername())
                .set(SysExpertInfo::getEmploymentDateStart,req.getEmploymentDateStart())
                .set(SysExpertInfo::getEmploymentDateEnd,req.getEmploymentDateEnd())
                .in(SysExpertInfo::getId,req.getId()));
    }
    public boolean checkIdCardUnique(SysExpertInfo expertInfo){
        Long expertId = expertInfo.getId()==null? -1L : expertInfo.getId();
        SysExpertInfo info = baseMapper.checkIdcardUnique(expertInfo.getIdCard(),expertInfo.getDeptId());
expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml
@@ -17,12 +17,47 @@
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="professionalEthics"    column="professional_ethics"    />
        <result property="impartialHonest"    column="impartial_honest"    />
        <result property="comprehensiveCoordination"    column="comprehensive_coordination"    />
        <result property="professionalAbility"    column="professional_ability"    />
        <result property="expressingOpinions"    column="expressing_opinions"    />
        <result property="others"    column="others"    />
        <result property="comprehensiveEvaluation"    column="comprehensive_evaluation"    />
        <result property="majorDangers"    column="major_dangers"    />
        <result property="generalHazards"    column="general_hazards"    />
        <result property="content"    column="content"    />
        <result property="freightBasis"    column="freight_basis"    />
        <result property="billingDuration"    column="billing_duration"    />
        <result property="afterTaxAmount"    column="after_tax_amount"    />
        <result property="openBank"    column="open_bank"    />
        <result property="bankCard"    column="bank_card"    />
    </resultMap>
    <sql id="selectProjectExpertVo">
        select id, project_id, expert_id, score, evaluation_state, selection_mode, team_leader, del_flag, create_by, create_time, update_by, update_time from project_expert
    </sql>
    <resultMap type="com.gkhy.system.domain.vo.response.ProjectExpertExportInfoRes" id="ProjectExpertExportInfoResult">
        <result property="projectName"    column="project_name"    />
        <result property="deptName"    column="dept_name"    />
        <collection  property="projectExpertExportResps"   javaType="java.util.List"  resultMap="ExpertExport" />
    </resultMap>
    <resultMap id="ExpertExport" type="com.gkhy.system.domain.vo.response.ProjectExpertExportResp">
        <result property="name"      column="name"       />
        <result property="idCard"    column="id_card"     />
        <result property="companyName"       column="company_name"    />
        <result property="job"       column="job"    />
        <result property="title"       column="title"    />
        <result property="freightBasis"    column="freight_basis"    />
        <result property="billingDuration"    column="billing_duration"    />
        <result property="afterTaxAmount"    column="after_tax_amount"    />
        <result property="openBank"    column="open_bank"    />
        <result property="bankCard"    column="bank_card"    />
    </resultMap>
    <sql id="selectProjectExpertVo">
        select id, project_id, expert_id, score, evaluation_state, selection_mode, team_leader, del_flag, create_by, create_time, update_by, update_time, professional_ethics, impartial_honest, comprehensive_coordination, professional_ability, expressing_opinions, others, comprehensive_evaluation, major_dangers, general_hazards, content,
               freight_basis, billing_duration, after_tax_amount, open_bank, bank_card from project_expert
    </sql>
    <select id="selectProjectExpertList" parameterType="ProjectExpert" resultMap="ProjectExpertResult">
        <include refid="selectProjectExpertVo"/>
        <where>
@@ -33,6 +68,21 @@
            <if test="evaluationState != null "> and evaluation_state = #{evaluationState}</if>
            <if test="selectionMode != null "> and selection_mode = #{selectionMode}</if>
            <if test="teamLeader != null "> and team_leader = #{teamLeader}</if>
            <if test="professionalEthics != null "> and professional_ethics = #{professionalEthics}</if>
            <if test="impartialHonest != null "> and impartial_honest = #{impartialHonest}</if>
            <if test="comprehensiveCoordination != null "> and comprehensive_coordination = #{comprehensiveCoordination}</if>
            <if test="professionalAbility != null "> and professional_ability = #{professionalAbility}</if>
            <if test="expressingOpinions != null "> and expressing_opinions = #{expressingOpinions}</if>
            <if test="others != null  and others != ''"> and others = #{others}</if>
            <if test="comprehensiveEvaluation != null "> and comprehensive_evaluation = #{comprehensiveEvaluation}</if>
            <if test="majorDangers != null "> and major_dangers = #{majorDangers}</if>
            <if test="generalHazards != null "> and general_hazards = #{generalHazards}</if>
            <if test="content != null  and content != ''"> and content = #{content}</if>
            <if test="freightBasis != null  and freightBasis != ''"> and freight_basis = #{freightBasis}</if>
            <if test="billingDuration != null "> and billing_duration = #{billingDuration}</if>
            <if test="afterTaxAmount != null "> and after_tax_amount = #{afterTaxAmount}</if>
            <if test="openBank != null  and openBank != ''"> and open_bank = #{openBank}</if>
            <if test="bankCard != null  and bankCard != ''"> and bank_card = #{bankCard}</if>
        </where>
    </select>
    
@@ -55,6 +105,21 @@
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="professionalEthics != null">professional_ethics,</if>
            <if test="impartialHonest != null">impartial_honest,</if>
            <if test="comprehensiveCoordination != null">comprehensive_coordination,</if>
            <if test="professionalAbility != null">professional_ability,</if>
            <if test="expressingOpinions != null">expressing_opinions,</if>
            <if test="others != null">others,</if>
            <if test="comprehensiveEvaluation != null">comprehensive_evaluation,</if>
            <if test="majorDangers != null">major_dangers,</if>
            <if test="generalHazards != null">general_hazards,</if>
            <if test="content != null">content,</if>
            <if test="freightBasis != null">freight_basis,</if>
            <if test="billingDuration != null">billing_duration,</if>
            <if test="afterTaxAmount != null">after_tax_amount,</if>
            <if test="openBank != null">open_bank,</if>
            <if test="bankCard != null">bank_card,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="projectId != null">#{projectId},</if>
@@ -68,6 +133,21 @@
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="professionalEthics != null">#{professionalEthics},</if>
            <if test="impartialHonest != null">#{impartialHonest},</if>
            <if test="comprehensiveCoordination != null">#{comprehensiveCoordination},</if>
            <if test="professionalAbility != null">#{professionalAbility},</if>
            <if test="expressingOpinions != null">#{expressingOpinions},</if>
            <if test="others != null">#{others},</if>
            <if test="comprehensiveEvaluation != null">#{comprehensiveEvaluation},</if>
            <if test="majorDangers != null">#{majorDangers},</if>
            <if test="generalHazards != null">#{generalHazards},</if>
            <if test="content != null">#{content},</if>
            <if test="freightBasis != null">#{freightBasis},</if>
            <if test="billingDuration != null">#{billingDuration},</if>
            <if test="afterTaxAmount != null">#{afterTaxAmount},</if>
            <if test="openBank != null">#{openBank},</if>
            <if test="bankCard != null">#{bankCard},</if>
         </trim>
    </insert>
@@ -90,10 +170,23 @@
            <if test="selectionMode != null">selection_mode = #{selectionMode},</if>
            <if test="teamLeader != null">team_leader = #{teamLeader},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="professionalEthics != null">professional_ethics = #{professionalEthics},</if>
            <if test="impartialHonest != null">impartial_honest = #{impartialHonest},</if>
            <if test="comprehensiveCoordination != null">comprehensive_coordination = #{comprehensiveCoordination},</if>
            <if test="professionalAbility != null">professional_ability = #{professionalAbility},</if>
            <if test="expressingOpinions != null">expressing_opinions = #{expressingOpinions},</if>
            <if test="others != null">others = #{others},</if>
            <if test="comprehensiveEvaluation != null">comprehensive_evaluation = #{comprehensiveEvaluation},</if>
            <if test="majorDangers != null">major_dangers = #{majorDangers},</if>
            <if test="generalHazards != null">general_hazards = #{generalHazards},</if>
            <if test="content != null">content = #{content},</if>
            <if test="freightBasis != null">freight_basis = #{freightBasis},</if>
            <if test="billingDuration != null">billing_duration = #{billingDuration},</if>
            <if test="afterTaxAmount != null">after_tax_amount = #{afterTaxAmount},</if>
            <if test="openBank != null">open_bank = #{openBank},</if>
            <if test="bankCard != null">bank_card = #{bankCard},</if>
        </trim>
        where id = #{id}
    </update>
@@ -167,4 +260,16 @@
        order by b.team_leader asc , b.create_time desc
    </select>
    <select id="projectExpertExportList" parameterType="Long" resultMap="ProjectExpertExportInfoResult">
        select  a.project_name ,a.dept_name
       ,c.name,c.id_card,c.name,c.job,c.title,c.company_name,b.freight_basis,b.billing_duration, b.after_tax_amount, b.open_bank, b.bank_card
        from project_management a
        left join project_expert b on a.id = b.project_id and b.del_flag = 0
        left join sys_expert_info c on b.expert_id = c.id
        where a.id  = #{projectId}
        order by b.team_leader asc , b.create_time desc
    </select>
</mapper>
expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml
@@ -9,9 +9,10 @@
        <result property="projectName"    column="project_name"    />
        <result property="deptId"    column="dept_id"    />
        <result property="deptName"    column="dept_name"    />
        <result property="companyName"    column="company_name"    />
        <result property="jobCategory"    column="job_category"    />
        <result property="projectAddress"    column="project_address"    />
        <result property="deptUserName"    column="dept_user_name"    />
<!--        <result property="deptUserName"    column="dept_user_name"    />-->
        <result property="deptPostName"    column="dept_post_name"   typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />
        <result property="version"    column="version"    />
        <result property="state"    column="state"    />
        <result property="remark"    column="remark"    />
@@ -40,7 +41,7 @@
        <result property="remark"    column="remark"    />
        <result property="state"    column="state"    />
        <result property="step"    column="step"    />
        <result property="companyName"    column="company_name"    />
        <result property="jobCategory"    column="job_category"    />
        <result property="projectAddress"    column="project_address"    />
<!--        <result property="deptUserName"    column="dept_user_name"    />-->
        <result property="projectDateStart"    column="project_date_start"    />
@@ -58,10 +59,14 @@
        <result property="ratingLevel"     column="rating_level"      />
        <result property="selectionMode"    column="selection_mode"     />
        <result property="teamLeader"       column="team_leader"    />
        <result property="companyName"       column="company_name"    />
        <result property="phone"       column="phone"    />
        <result property="selectionTime"       column="selection_time"    />
        <result property="expertRemark"       column="expert_remark"    />
    </resultMap>
    <sql id="selectProjectManagementVo">
        select id, project_name, dept_id, dept_name, company_name, project_address, dept_user_name,
        select id, project_name, dept_id, dept_name, job_category, project_address,dept_post_name,
               version, state, remark, project_date_start, project_date_end, expert_certificate,
               evaluation_state, expert_num, del_flag, create_by, create_time, update_by, update_time,project_check_time,expert_id,
               expert_name,project_end_time,`desc`,step
@@ -75,9 +80,9 @@
            <if test="projectName != null  and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
            <if test="deptId != null "> and dept_id = #{deptId}</if>
            <if test="deptName != null  and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
            <if test="companyName != null  and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
            <if test="jobCategory != null  and jobCategory != ''"> and job_category like concat('%', #{jobCategory}, '%')</if>
            <if test="projectAddress != null  and projectAddress != ''"> and project_address = #{projectAddress}</if>
            <if test="deptUserName != null  and deptUserName != ''"> and dept_user_name like concat('%', #{deptUserName}, '%')</if>
<!--            <if test="deptUserName != null  and deptUserName != ''"> and dept_user_name like concat('%', #{deptUserName}, '%')</if>-->
            <if test="version != null "> and version = #{version}</if>
            <if test="state != null "> and state = #{state}</if>
            <if test="step!= null "> and step = #{step}</if>
@@ -100,9 +105,10 @@
            <if test="projectName != null and projectName != ''">project_name,</if>
            <if test="deptId != null">dept_id,</if>
            <if test="deptName != null and deptName != ''">dept_name,</if>
            <if test="companyName != null and companyName != ''">company_name,</if>
            <if test="jobCategory != null and jobCategory != ''">job_category,</if>
            <if test="projectAddress != null and projectAddress != ''">project_address,</if>
            <if test="deptUserName != null and deptUserName != ''">dept_user_name,</if>
<!--            <if test="deptUserName != null and deptUserName != ''">dept_user_name,</if>-->
            <if test="deptPostName != null and deptPostName != ''">dept_post_name,</if>
            <if test="version != null">version,</if>
            <if test="state != null">state,</if>
            <if test="step != null">step,</if>
@@ -122,9 +128,10 @@
            <if test="projectName != null and projectName != ''">#{projectName},</if>
            <if test="deptId != null">#{deptId},</if>
            <if test="deptName != null and deptName != ''">#{deptName},</if>
            <if test="companyName != null and companyName != ''">#{companyName},</if>
            <if test="jobCategory != null and jobCategory != ''">#{jobCategory},</if>
            <if test="projectAddress != null and projectAddress != ''">#{projectAddress},</if>
            <if test="deptUserName != null and deptUserName != ''">#{deptUserName},</if>
<!--            <if test="deptUserName != null and deptUserName != ''">#{deptUserName},</if>-->
            <if test="deptPostName != null and deptPostName != ''">#{deptPostName},</if>
            <if test="version != null">#{version},</if>
            <if test="state != null">#{state},</if>
            <if test="step != null">#{step},</if>
@@ -148,9 +155,10 @@
            <if test="projectName != null and projectName != ''">project_name = #{projectName},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
            <if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
            <if test="companyName != null and companyName != ''">company_name = #{companyName},</if>
            <if test="jobCategory != null and jobCategory != ''">job_category = #{jobCategory},</if>
            <if test="projectAddress != null and projectAddress != ''">project_address = #{projectAddress},</if>
            <if test="deptUserName != null and deptUserName != ''">dept_user_name = #{deptUserName},</if>
<!--            <if test="deptUserName != null and deptUserName != ''">dept_user_name = #{deptUserName},</if>-->
            <if test="deptPostName != null and deptPostName != ''">dept_post_name = #{deptPostName},</if>
            <if test="version != null">version = #{version},</if>
            <if test="state != null">state = #{state},</if>
            <if test="step != null">step = #{step},</if>
@@ -186,8 +194,9 @@
    </update>
    <select id="projectExpertCheckInfo" parameterType="Long" resultMap="ProjectManagementInfoResult">
        select a.id,a.step, a.project_name, a.dept_name, a.company_name, a.project_address, a.project_date_start, a.project_date_end, a.remark,a.project_check_time,a.state,
            b.id project_expert_id,b.expert_id expert_id_info,c.name,c.sex,c.id_card,c.domain,c.rating_level,b.selection_mode,b.team_leader
        select a.id,a.step, a.project_name, a.dept_name, a.job_category, a.project_address, a.project_date_start, a.project_date_end, a.remark,a.project_check_time,a.state,
            b.id project_expert_id,b.expert_id expert_id_info,c.name,c.sex,c.id_card,c.domain,c.rating_level,b.selection_mode,b.team_leader,
            c.company_name,c.phone,a.create_time selection_time,c.remark expert_remark
        from project_management a
        left join project_expert b on a.id = b.project_id and b.del_flag = 0
                                   left join sys_expert_info c on b.expert_id = c.id
expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml
@@ -8,7 +8,7 @@
               graduation_school,degree,speciality,current_profession,support_direction_safety,
               support_direction_prevention,support_direction_emergency,resume_key,paper_situation_key,
               reward_key,achievement_key,personal_opinion_key,recommend_unit_opinion_key,remark,create_by,
               create_time,big_classify,small_classify,del_flag,source,rating_level,employment_date_start,employment_date_end,expert_certificate,dept_id,domain
               create_time,big_classify,small_classify,del_flag,source,rating_level,employment_date_start,employment_date_end,expert_certificate,dept_id,domain,evidence
        from sys_expert_info
    </sql>
@@ -20,7 +20,7 @@
    </update>
    <select id="expertInfoList" resultType="com.gkhy.system.domain.SysExpertInfo">
        select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,id_card,company_name,
        select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,id_card,company_name,evidence,
            domain,level,current_profession,duty_status,support_direction_safety,support_direction_prevention,support_direction_emergency,create_time,
            rating_level,employment_date_start,employment_date_end,expert_certificate,update_time from sys_expert_info
        <where>