فهرست منبع

fix 定时任务更新委员分数

Administrator 1 سال پیش
والد
کامیت
38a884157e

+ 103 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/member/MemberAssessmentInfoController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.web.controller.member;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.service.IMemberAssessmentInfoService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 委员考核分数Controller
+ *
+ * @author boman
+ * @date 2024-03-20
+ */
+@RestController
+@RequestMapping("/zx/assessmentInfo")
+public class MemberAssessmentInfoController extends BaseController
+{
+    @Autowired
+    private IMemberAssessmentInfoService memberAssessmentInfoService;
+
+/**
+ * 查询委员考核分数列表
+ */
+@PreAuthorize("@ss.hasPermi('zx:assessmentInfo:list')")
+@GetMapping("/list")
+    public TableDataInfo list(MemberAssessmentInfo memberAssessmentInfo)
+    {
+        startPage();
+        List<MemberAssessmentInfo> list = memberAssessmentInfoService.selectMemberAssessmentInfoList(memberAssessmentInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出委员考核分数列表
+     */
+    @PreAuthorize("@ss.hasPermi('zx:assessmentInfo:export')")
+    @Log(title = "委员考核分数", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, MemberAssessmentInfo memberAssessmentInfo)
+    {
+        List<MemberAssessmentInfo> list = memberAssessmentInfoService.selectMemberAssessmentInfoList(memberAssessmentInfo);
+        ExcelUtil<MemberAssessmentInfo> util = new ExcelUtil<MemberAssessmentInfo>(MemberAssessmentInfo.class);
+        util.exportExcel(response, list, "委员考核分数数据");
+    }
+
+    /**
+     * 获取委员考核分数详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('zx:assessmentInfo:query')")
+    @GetMapping(value = "/{memberAssessmentId}")
+    public AjaxResult getInfo(@PathVariable("memberAssessmentId") Long memberAssessmentId)
+    {
+        return success(memberAssessmentInfoService.selectMemberAssessmentInfoByMemberAssessmentId(memberAssessmentId));
+    }
+
+    /**
+     * 新增委员考核分数
+     */
+    @PreAuthorize("@ss.hasPermi('zx:assessmentInfo:add')")
+    @Log(title = "委员考核分数", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody MemberAssessmentInfo memberAssessmentInfo)
+    {
+        return toAjax(memberAssessmentInfoService.insertMemberAssessmentInfo(memberAssessmentInfo));
+    }
+
+    /**
+     * 修改委员考核分数
+     */
+    @PreAuthorize("@ss.hasPermi('zx:assessmentInfo:edit')")
+    @Log(title = "委员考核分数", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody MemberAssessmentInfo memberAssessmentInfo)
+    {
+        return toAjax(memberAssessmentInfoService.updateMemberAssessmentInfo(memberAssessmentInfo));
+    }
+
+    /**
+     * 删除委员考核分数
+     */
+    @PreAuthorize("@ss.hasPermi('zx:assessmentInfo:remove')")
+    @Log(title = "委员考核分数", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{memberAssessmentIds}")
+    public AjaxResult remove(@PathVariable Long[] memberAssessmentIds)
+    {
+        return toAjax(memberAssessmentInfoService.deleteMemberAssessmentInfoByMemberAssessmentIds(memberAssessmentIds));
+    }
+}

+ 358 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/Task.java

@@ -0,0 +1,358 @@
+package com.ruoyi.web.controller.task;
+
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.domain.ProposalInfo;
+import com.ruoyi.system.domain.activity.ZxActivity;
+import com.ruoyi.system.domain.activity.ZxActivityUser;
+import com.ruoyi.system.domain.assessment.ZxAssessment;
+import com.ruoyi.system.domain.bonus.ZxBonus;
+import com.ruoyi.system.domain.conference.ZxConference;
+import com.ruoyi.system.domain.conference.ZxConferenceUser;
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
+import com.ruoyi.system.domain.member.MemberInfo;
+import com.ruoyi.system.domain.sqmy.SqmyInfo;
+import com.ruoyi.system.mapper.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.ruoyi.common.constant.CommonConstants.*;
+
+@Component
+public class Task {
+    @Autowired
+    private MemberInfoMapper memberInfoMapper;
+    @Autowired
+    private ZxConferenceMapper zxConferenceMapper;
+    @Autowired
+    private ZxActivityMapper zxActivityMapper;
+
+    @Autowired
+    private ProposalInfoMapper proposalInfoMapper;
+
+    @Autowired
+    private SqmyInfoMapper sqmyInfoMapper;
+
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    @Autowired
+    private ZxAssessmentMapper zxAssessmentMapper;
+    @Autowired
+    private ZxBonusMapper zxBonusMapper;
+
+    @Autowired
+    private MemberAssessmentInfoMapper memberAssessmentInfoMapper;
+
+    /***
+     * 生成委员分数排名
+     * */
+    @Async
+    //@Scheduled(cron = "0 19 0 * * ? ")
+    public void assessmentScore() {
+        System.out.println("开始计算委员分数定时任务");
+        //查询的年份
+        LocalDate currentDate = LocalDate.now();
+        String year = String.valueOf(currentDate.getYear());
+        //查询原先是否有数据
+        MemberAssessmentInfo memberAssessmentInfo = new MemberAssessmentInfo();
+        memberAssessmentInfo.setYear(year);
+        List<MemberAssessmentInfo> memberAssessmentInfoList = memberAssessmentInfoMapper.selectMemberAssessmentInfoList(memberAssessmentInfo);
+        //查询出所有委员信息
+        List<MemberInfo> memberInfoSelect = memberInfoMapper.selectMemberInfoList(new MemberInfo());
+        //查询履职考核标准
+        List<ZxAssessment> zxAssessments = zxAssessmentMapper.selectZxAssessmentList(new ZxAssessment());
+        if (memberInfoSelect != null && memberInfoSelect.size() > 0) {
+            List<MemberAssessmentInfo> memberAssessmentInfoListNew = new ArrayList<>();
+            for (MemberInfo memberInfo : memberInfoSelect) {
+                Long userId = memberInfo.getUserId();
+                MemberAssessmentInfo memberAssessmentInf = new MemberAssessmentInfo();
+                memberAssessmentInf.setUserId(userId);
+                memberAssessmentInf.setYear(year);
+                //查询提案情况
+                ProposalInfo proposalInfo = new ProposalInfo();
+                proposalInfo.setProposalUserId(userId);
+                proposalInfo.setYear(year);
+                List<ProposalInfo> proposalInfos = proposalInfoMapper.selectProposalInfoListByUser(proposalInfo);
+                //查询社情民意
+                SqmyInfo sqmyInfo = new SqmyInfo();
+                sqmyInfo.setSqmyUserId(userId);
+                sqmyInfo.setYear(year);
+                List<SqmyInfo> sqmyInfos = sqmyInfoMapper.selectSqmyInfoList(sqmyInfo);
+                //查询政协会议
+                ZxConference zxConference = new ZxConference();
+                zxConference.setUserId(SecurityUtils.getUserId());
+                zxConference.setYear(year);
+                List<ZxConference> zxConferences = zxConferenceMapper.selectZxConferenceList(zxConference);
+                //查询活动
+                ZxActivity zxActivity = new ZxActivity();
+                zxActivity.setUserId(SecurityUtils.getUserId());
+                zxActivity.setYear(year);
+                List<ZxActivity> zxActivities = zxActivityMapper.selectZxActivityList(zxActivity);
+                //计算得分 勿删
+                if (zxAssessments != null && zxAssessments.size() > 0) {
+                    //获取分值上限
+                    long assessmentTotal = 0L;
+                    //定义当前分数
+                    long nowScore = 0L;
+                    //设置的单项分数
+                    long assessmentScore = 0L;
+                    //符合条件的项目数量
+                    long proposalCount = 0L;
+                    //计算提案得分
+                    if (proposalInfos != null && proposalInfos.size() > 0) {
+                        //获取分值上限
+                        assessmentTotal = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && 0 == e.getParentId()).collect(Collectors.toList())
+                                .get(0).getAssessmentTotal();
+                        //先去查询这个人是否有个人提案立案
+                        proposalCount = proposalInfos.stream().filter(e -> e.getProposalUserId().equals(userId) && e.getIsJointly().equals(ONE) && !ONE.equals(e.getProposalProgress()) && !THR.equals(e.getProposalProgress())).count();
+                        if (proposalCount > 0) {
+                            //获取对应类型的分值
+                            assessmentScore = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && ONE.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                    .get(0).getAssessmentScore();
+                            //计算当前分数
+                            nowScore = nowScore + proposalCount * assessmentScore;
+                        }
+                        //当前分数小于上限值,继续找下一个条件
+                        if (nowScore < assessmentTotal) {
+                            //查询这个人是否有个人提案未立案
+                            proposalCount = proposalInfos.stream().filter(e -> e.getProposalUserId().equals(userId) && e.getIsJointly().equals(ONE) && (ONE.equals(e.getProposalProgress()) || THR.equals(e.getProposalProgress()))).count();
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && TWO.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        //当前分数小于上限值,继续找下一个条件
+                        if (nowScore < assessmentTotal) {
+                            //查询这个人是否有联名提案、集体提案立案的,第一提案人,召集人
+                            proposalCount = proposalInfos.stream().filter(e -> e.getProposalUserId().equals(userId) && "0".equals(e.getIsJointly()) && !ONE.equals(e.getProposalProgress()) && !THR.equals(e.getProposalProgress())).count();
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && THR.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        //当前分数小于上限值,继续找下一个条件
+                        if (nowScore < assessmentTotal) {
+                            //查询这个人是否有联名提案、集体提案立案的,其余联名、参与者
+                            proposalCount = proposalInfos.stream().filter(e -> !e.getProposalUserId().equals(userId) && "0".equals(e.getIsJointly()) && !ONE.equals(e.getProposalProgress()) && !THR.equals(e.getProposalProgress())).count();
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && FOR.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        //当前分数小于上限值,继续找下一个条件
+                        if (nowScore < assessmentTotal) {
+                            //查询这个人是否有未立案联名提案、集体提案参与者
+                            proposalCount = proposalInfos.stream().filter(e -> !e.getProposalUserId().equals(userId) && "0".equals(e.getIsJointly()) && (ONE.equals(e.getProposalProgress()) || THR.equals(e.getProposalProgress()))).count();
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_proposal".equals(e.getAssessmentProjectId()) && FOR.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        if (nowScore > assessmentTotal) {
+                            nowScore = assessmentTotal;
+                        }
+
+                        memberAssessmentInf.setProposalScore(nowScore);
+                    }
+                    //计算社情民义的分值
+                    if (sqmyInfos != null && sqmyInfos.size() > 0) {
+                        //获取分值上限
+                        assessmentTotal = zxAssessments.stream().filter(e -> "proposal_sqmy".equals(e.getAssessmentProjectId()) && 0 == e.getParentId()).collect(Collectors.toList())
+                                .get(0).getAssessmentTotal();
+                        //定义当前分数
+                        nowScore = 0L;
+                        //查询这个人撰写并上报社情民意信息,被采用
+                        proposalCount = sqmyInfos.stream().filter(e -> e.getSqmyUserId().equals(userId) && "0".equals(e.getIsRecord())).count();
+                        if (proposalCount > 0) {
+                            //获取对应类型的分值
+                            assessmentScore = zxAssessments.stream().filter(e -> "proposal_sqmy".equals(e.getAssessmentProjectId()) && ONE.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                    .get(0).getAssessmentScore();
+                            //计算当前分数
+                            nowScore = nowScore + proposalCount * assessmentScore;
+                        }
+                        //当前分数小于上限值,继续找下一个条件
+                        if (nowScore < assessmentTotal) {
+                            //查询这个人撰写并上报社情民意信息,未采用
+                            proposalCount = sqmyInfos.stream().filter(e -> e.getSqmyUserId().equals(userId) && ONE.equals(e.getIsRecord())).count();
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "proposal_sqmy".equals(e.getAssessmentProjectId()) && TWO.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        if (nowScore > assessmentTotal) {
+                            nowScore = assessmentTotal;
+                        }
+
+                        memberAssessmentInf.setSqmyScore(nowScore);
+                    }
+                    //计算会议分值
+                    if (zxConferences != null && zxConferences.size() > 0) {
+                        //查询会议默认所有人一开始的20分,缺勤扣分
+                        //获取分值上限
+                        assessmentTotal = zxAssessments.stream().filter(e -> "assessment_conference".equals(e.getAssessmentProjectId()) && 0 == e.getParentId()).collect(Collectors.toList())
+                                .get(0).getAssessmentTotal();
+                        //定义当前分数
+                        nowScore = 0L;
+                        //查询这个人是否有全体会议期间,无故缺席大会或分组讨论
+                        List<ZxConference> collect = zxConferences.stream().filter(e -> e.getConferenceType().equals(ONE)).collect(Collectors.toList());
+                        if (collect.size() > 0) {
+                            for (ZxConference conference : collect) {
+                                List<ZxConferenceUser> zxConferenceUserList = conference.getZxConferenceUserList();
+                                if (zxConferenceUserList != null && zxConferenceUserList.size() > 0) {
+                                    //获取到不参加会议的数量
+                                    proposalCount = proposalCount + zxConferenceUserList.stream().filter(e -> "N".equals(e.getIsJoin())).count();
+                                }
+                            }
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_conference".equals(e.getAssessmentProjectId()) && ONE.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        //查询这个人是否无故缺席市政协办公室,各专委会,各界别组织召开的其他会议和学习培训活动
+                        List<ZxConference> collectTwo = zxConferences.stream().filter(e -> !e.getConferenceType().equals(ONE)).collect(Collectors.toList());
+                        if (collectTwo.size() > 0) {
+                            for (ZxConference conference : collectTwo) {
+                                List<ZxConferenceUser> zxConferenceUserList = conference.getZxConferenceUserList();
+                                if (zxConferenceUserList != null && zxConferenceUserList.size() > 0) {
+                                    //获取到不参加会议的数量
+                                    proposalCount = proposalCount + zxConferenceUserList.stream().filter(e -> "N".equals(e.getIsJoin())).count();
+                                }
+                            }
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_conference".equals(e.getAssessmentProjectId()) && TWO.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                        }
+                        //判断分是否扣完
+                        nowScore = assessmentTotal + nowScore;
+                        if (nowScore < 0) {
+                            nowScore = 0;
+                        }
+
+                        memberAssessmentInf.setConferenceScore(nowScore);
+                    }
+                    //计算活动分值
+                    if (zxActivities != null && zxActivities.size() > 0) {
+                        //定义当前分数
+                        nowScore = 0L;
+                        //先去查询是否有学习培训活动未参加
+                        List<ZxActivity> collect = zxActivities.stream().filter(e -> e.getActivityType().equals(ONE)).collect(Collectors.toList());
+                        if (collect.size() > 0) {
+                            for (ZxActivity activity : collect) {
+                                List<ZxActivityUser> zxActivityUserList = activity.getZxActivityUserList();
+                                if (zxActivityUserList != null && zxActivityUserList.size() > 0) {
+                                    //获取到不参加会议的数量
+                                    proposalCount = proposalCount + zxActivityUserList.stream().filter(e -> "N".equals(e.getIsJoin())).count();
+                                }
+                            }
+                            if (proposalCount > 0) {
+                                //获取对应类型的分值
+                                assessmentScore = zxAssessments.stream().filter(e -> "assessment_conference".equals(e.getAssessmentProjectId()) && TWO.equals(e.getAssessmentTypeId())).collect(Collectors.toList())
+                                        .get(0).getAssessmentScore();
+                                //计算当前分数
+                                nowScore = nowScore + proposalCount * assessmentScore;
+                            }
+                            Object sqmyInfoScore = memberAssessmentInf.getSqmyScore();
+                            if (Integer.parseInt(sqmyInfoScore.toString()) > 0) {
+                                //判断分是否扣完
+                                nowScore = assessmentTotal + nowScore;
+                                if (nowScore < 0) {
+                                    nowScore = 0;
+                                }
+                                memberAssessmentInf.setSqmyScore(nowScore);
+                            }
+                        }
+                        nowScore = 0L;
+                        //获取分值上限
+                        assessmentTotal = zxAssessments.stream().filter(e -> "assessment_activity".equals(e.getAssessmentProjectId()) && 0 == e.getParentId()).collect(Collectors.toList())
+                                .get(0).getAssessmentTotal();
+                        //获取所有活动设置的子类分项
+                        List<ZxAssessment> collectZxAssessment = zxAssessments.stream().filter(e -> "assessment_activity".equals(e.getAssessmentProjectId()) && 0 != e.getParentId()).collect(Collectors.toList());
+                        if (collectZxAssessment.size() > 0) {
+                            for (ZxAssessment zxAssessment : collectZxAssessment) {
+                                //获取到的对应活动分数
+                                Long assessmentScore1 = zxAssessment.getAssessmentScore();
+                                //判断是否参加过对应活动
+                                String assessmentTypeId = zxAssessment.getAssessmentTypeId();
+                                //获取参与数量
+                                proposalCount = zxActivities.stream().filter(e -> e.getActivityType().equals(assessmentTypeId)).count();
+                                if (proposalCount > 0) {
+                                    nowScore = nowScore + assessmentScore1;
+                                }
+                            }
+                            if (nowScore > assessmentTotal) {
+                                nowScore = assessmentTotal;
+                            }
+
+                            memberAssessmentInf.setActivityScore(nowScore);
+                        }
+                    }
+                    //计算加分
+                    ZxBonus zxBonus = new ZxBonus();
+                    zxBonus.setUserId(userId);
+                    List<ZxBonus> zxBonuses = zxBonusMapper.selectZxBonusList(zxBonus);
+                    if (zxBonuses != null && zxBonuses.size() > 0) {
+                        long bonusScore = zxBonuses.stream().filter(e -> e.getScore() != null).mapToLong(BaseEntity::getScore).sum();
+
+                        memberAssessmentInf.setBonusScore(bonusScore);
+                    }
+                }
+
+                //总分
+                long totalScore = memberAssessmentInf.getProposalScore() + memberAssessmentInf.getSqmyScore() + memberAssessmentInf.getConferenceScore() + memberAssessmentInf.getActivityScore() + memberAssessmentInf.getBonusScore();
+                memberAssessmentInf.setTotalScore(totalScore);
+                memberAssessmentInfoListNew.add(memberAssessmentInf);
+            }
+            //计算排名
+            int index = 0;
+            //最近的一次分数
+            Long lastScore = 0L;
+            List<MemberAssessmentInfo> collect = memberAssessmentInfoListNew.stream().sorted(Comparator.comparing(MemberAssessmentInfo::getTotalScore).reversed()).collect(Collectors.toList());
+            for (int i = 0; i < collect.size(); i++) {
+                MemberAssessmentInfo memberAssessmentInfoNew = collect.get(i);
+                Long totalScore = memberAssessmentInfo.getTotalScore();
+                if (!lastScore.equals(totalScore)) {
+                    lastScore = totalScore;
+                    index++;
+                }
+                memberAssessmentInfoNew.setRank(String.valueOf(index));
+                //判断是更新还是新增
+                if (memberAssessmentInfoList != null && memberAssessmentInfoList.size() > 0){
+                    //更新
+                    memberAssessmentInfoMapper.updateMemberAssessmentInfo(memberAssessmentInfoNew);
+                }else {
+                    memberAssessmentInfoMapper.insertMemberAssessmentInfo(memberAssessmentInfoNew);
+                }
+            }
+        }
+        System.out.println("定时任务结束");
+    }
+}

+ 159 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/member/MemberAssessmentInfo.java

@@ -0,0 +1,159 @@
+package com.ruoyi.system.domain.member;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 委员考核分数对象 member_assessment_info
+ * 
+ * @author boman
+ * @date 2024-03-20
+ */
+public class MemberAssessmentInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 委员考核分数ID */
+    private Long memberAssessmentId;
+
+    /** 账号表ID */
+    @Excel(name = "账号表ID")
+    private Long userId;
+
+    /** 提案分数 */
+    @Excel(name = "提案分数")
+    private Long proposalScore;
+
+    /** 社情民意分数 */
+    @Excel(name = "社情民意分数")
+    private Long sqmyScore;
+
+    /** 会议分数 */
+    @Excel(name = "会议分数")
+    private Long conferenceScore;
+
+    /** 活动分数 */
+    @Excel(name = "活动分数")
+    private Long activityScore;
+
+    /** 加分(其他分数) */
+    @Excel(name = "加分(其他分数)")
+    private Long bonusScore;
+
+    /** 总分 */
+    @Excel(name = "总分")
+    private Long totalScore;
+
+    /** 排名 */
+    @Excel(name = "排名")
+    private String rank;
+
+    /** 年份 */
+    @Excel(name = "年份")
+    private String year;
+
+    public Long getMemberAssessmentId() {
+        return memberAssessmentId;
+    }
+
+    public void setMemberAssessmentId(Long memberAssessmentId) {
+        this.memberAssessmentId = memberAssessmentId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getProposalScore() {
+        return proposalScore;
+    }
+
+    public void setProposalScore(Long proposalScore) {
+        this.proposalScore = proposalScore;
+    }
+
+    public Long getSqmyScore() {
+        return sqmyScore;
+    }
+
+    public void setSqmyScore(Long sqmyScore) {
+        this.sqmyScore = sqmyScore;
+    }
+
+    public Long getConferenceScore() {
+        return conferenceScore;
+    }
+
+    public void setConferenceScore(Long conferenceScore) {
+        this.conferenceScore = conferenceScore;
+    }
+
+    public Long getActivityScore() {
+        return activityScore;
+    }
+
+    public void setActivityScore(Long activityScore) {
+        this.activityScore = activityScore;
+    }
+
+    public Long getBonusScore() {
+        return bonusScore;
+    }
+
+    public void setBonusScore(Long bonusScore) {
+        this.bonusScore = bonusScore;
+    }
+
+    public Long getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Long totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public String getRank() {
+        return rank;
+    }
+
+    public void setRank(String rank) {
+        this.rank = rank;
+    }
+
+    @Override
+    public String getYear() {
+        return year;
+    }
+
+    @Override
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("memberAssessmentId", getMemberAssessmentId())
+            .append("userId", getUserId())
+            .append("proposalScore", getProposalScore())
+            .append("sqmyScore", getSqmyScore())
+            .append("conferenceScore", getConferenceScore())
+            .append("activityScore", getActivityScore())
+            .append("bonusScore", getBonusScore())
+            .append("totalScore", getTotalScore())
+            .append("rank", getRank())
+            .append("year", getYear())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 13 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MemberInfoVo.java

@@ -3,6 +3,7 @@ package com.ruoyi.system.domain.vo;
 import com.ruoyi.system.domain.ProposalInfo;
 import com.ruoyi.system.domain.activity.ZxActivity;
 import com.ruoyi.system.domain.conference.ZxConference;
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
 import com.ruoyi.system.domain.member.MemberInfo;
 import com.ruoyi.system.domain.speak.ZxSpeak;
 import com.ruoyi.system.domain.sqmy.SqmyInfo;
@@ -20,6 +21,10 @@ public class MemberInfoVo {
      * 基本信息
      */
     private MemberInfo memberInfo;
+    /**
+     * 委员分数信息对象
+     */
+    private MemberAssessmentInfo memberAssessmentInfo;
     /**
      * 提案集合
      */
@@ -46,6 +51,14 @@ public class MemberInfoVo {
      */
     private Map<String,Object> map;
 
+    public MemberAssessmentInfo getMemberAssessmentInfo() {
+        return memberAssessmentInfo;
+    }
+
+    public void setMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo) {
+        this.memberAssessmentInfo = memberAssessmentInfo;
+    }
+
     public Map<String, Object> getMap() {
         return map;
     }

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/MemberAssessmentInfoMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
+
+import java.util.List;
+
+
+/**
+ * 委员考核分数Mapper接口
+ * 
+ * @author boman
+ * @date 2024-03-20
+ */
+public interface MemberAssessmentInfoMapper 
+{
+    /**
+     * 查询委员考核分数
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 委员考核分数
+     */
+    public MemberAssessmentInfo selectMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId);
+
+    /**
+     * 查询委员考核分数列表
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 委员考核分数集合
+     */
+    public List<MemberAssessmentInfo> selectMemberAssessmentInfoList(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 新增委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    public int insertMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 修改委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    public int updateMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 删除委员考核分数
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 结果
+     */
+    public int deleteMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId);
+
+    /**
+     * 批量删除委员考核分数
+     * 
+     * @param memberAssessmentIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteMemberAssessmentInfoByMemberAssessmentIds(Long[] memberAssessmentIds);
+}

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IMemberAssessmentInfoService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
+
+import java.util.List;
+
+
+/**
+ * 委员考核分数Service接口
+ * 
+ * @author boman
+ * @date 2024-03-20
+ */
+public interface IMemberAssessmentInfoService 
+{
+    /**
+     * 查询委员考核分数
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 委员考核分数
+     */
+    public MemberAssessmentInfo selectMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId);
+
+    /**
+     * 查询委员考核分数列表
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 委员考核分数集合
+     */
+    public List<MemberAssessmentInfo> selectMemberAssessmentInfoList(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 新增委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    public int insertMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 修改委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    public int updateMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo);
+
+    /**
+     * 批量删除委员考核分数
+     * 
+     * @param memberAssessmentIds 需要删除的委员考核分数主键集合
+     * @return 结果
+     */
+    public int deleteMemberAssessmentInfoByMemberAssessmentIds(Long[] memberAssessmentIds);
+
+    /**
+     * 删除委员考核分数信息
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 结果
+     */
+    public int deleteMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId);
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MemberAssessmentInfoServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.MemberAssessmentInfoMapper;
+import com.ruoyi.system.service.IMemberAssessmentInfoService;
+
+/**
+ * 委员考核分数Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-03-20
+ */
+@Service
+public class MemberAssessmentInfoServiceImpl implements IMemberAssessmentInfoService 
+{
+    @Autowired
+    private MemberAssessmentInfoMapper memberAssessmentInfoMapper;
+
+    /**
+     * 查询委员考核分数
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 委员考核分数
+     */
+    @Override
+    public MemberAssessmentInfo selectMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId)
+    {
+        return memberAssessmentInfoMapper.selectMemberAssessmentInfoByMemberAssessmentId(memberAssessmentId);
+    }
+
+    /**
+     * 查询委员考核分数列表
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 委员考核分数
+     */
+    @Override
+    public List<MemberAssessmentInfo> selectMemberAssessmentInfoList(MemberAssessmentInfo memberAssessmentInfo)
+    {
+        return memberAssessmentInfoMapper.selectMemberAssessmentInfoList(memberAssessmentInfo);
+    }
+
+    /**
+     * 新增委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    @Override
+    public int insertMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo)
+    {
+        memberAssessmentInfo.setCreateTime(DateUtils.getNowDate());
+        return memberAssessmentInfoMapper.insertMemberAssessmentInfo(memberAssessmentInfo);
+    }
+
+    /**
+     * 修改委员考核分数
+     * 
+     * @param memberAssessmentInfo 委员考核分数
+     * @return 结果
+     */
+    @Override
+    public int updateMemberAssessmentInfo(MemberAssessmentInfo memberAssessmentInfo)
+    {
+        memberAssessmentInfo.setUpdateTime(DateUtils.getNowDate());
+        return memberAssessmentInfoMapper.updateMemberAssessmentInfo(memberAssessmentInfo);
+    }
+
+    /**
+     * 批量删除委员考核分数
+     * 
+     * @param memberAssessmentIds 需要删除的委员考核分数主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMemberAssessmentInfoByMemberAssessmentIds(Long[] memberAssessmentIds)
+    {
+        return memberAssessmentInfoMapper.deleteMemberAssessmentInfoByMemberAssessmentIds(memberAssessmentIds);
+    }
+
+    /**
+     * 删除委员考核分数信息
+     * 
+     * @param memberAssessmentId 委员考核分数主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMemberAssessmentInfoByMemberAssessmentId(Long memberAssessmentId)
+    {
+        return memberAssessmentInfoMapper.deleteMemberAssessmentInfoByMemberAssessmentId(memberAssessmentId);
+    }
+}

+ 25 - 13
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MemberInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.system.domain.assessment.ZxAssessment;
 import com.ruoyi.system.domain.bonus.ZxBonus;
 import com.ruoyi.system.domain.conference.ZxConference;
 import com.ruoyi.system.domain.conference.ZxConferenceUser;
+import com.ruoyi.system.domain.member.MemberAssessmentInfo;
 import com.ruoyi.system.domain.member.MemberInfo;
 import com.ruoyi.system.domain.member.MemberInfoTree;
 import com.ruoyi.system.domain.speak.ZxSpeak;
@@ -62,6 +63,9 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
     @Autowired
     private ZxBonusMapper zxBonusMapper;
 
+    @Autowired
+    private MemberAssessmentInfoMapper memberAssessmentInfoMapper;
+
 
     /**
      * 查询委员信息
@@ -109,12 +113,14 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
     @Override
     public MemberInfoVo getMemberReport(MemberInfo memberInfo) {
         MemberInfoVo memberInfoVo = new MemberInfoVo();
+        //查询的年份
+        String year = memberInfo.getYear();
         //查询出委员信息
         Long userId = memberInfo.getUserId();
         MemberInfo memberInfoSelect = memberInfoMapper.selectMemberInfoByUserId(memberInfo.getUserId());
         memberInfoVo.setMemberInfo(memberInfoSelect);
         //履职状况初始化
-        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>(5);
         //提案
         map.put("proposalInfoNum", 0);
         //社情民意
@@ -125,42 +131,48 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
         map.put("activityNum", 0);
         //发言数量
         map.put("speakNum", 0);
-        //提案分数
-        map.put("proposalInfoScore", 0);
-        map.put("sqmyInfoScore", 0);
-        map.put("conferenceScore", 0);
-        map.put("activityScore", 0);
-        map.put("speakScore", 0);
-        //加分
-        map.put("zxBonusScore", 0);
-        //查询履职考核标准
-        List<ZxAssessment> zxAssessments = zxAssessmentMapper.selectZxAssessmentList(new ZxAssessment());
+/*        //查询履职考核标准
+        List<ZxAssessment> zxAssessments = zxAssessmentMapper.selectZxAssessmentList(new ZxAssessment());*/
         //查询提案情况
         ProposalInfo proposalInfo = new ProposalInfo();
         proposalInfo.setProposalUserId(userId);
+        proposalInfo.setYear(year);
         List<ProposalInfo> proposalInfos = proposalInfoMapper.selectProposalInfoListByUser(proposalInfo);
         memberInfoVo.setProposalInfoList(proposalInfos);
         //查询社情民意
         SqmyInfo sqmyInfo = new SqmyInfo();
         sqmyInfo.setSqmyUserId(userId);
+        sqmyInfo.setYear(year);
         List<SqmyInfo> sqmyInfos = sqmyInfoMapper.selectSqmyInfoList(sqmyInfo);
         memberInfoVo.setSqmyInfoList(sqmyInfos);
         //查询政协会议
         ZxConference zxConference = new ZxConference();
         zxConference.setUserId(SecurityUtils.getUserId());
+        zxConference.setYear(year);
         List<ZxConference> zxConferences = zxConferenceMapper.selectZxConferenceList(zxConference);
         memberInfoVo.setZxConferenceList(zxConferences);
         //查询活动
         ZxActivity zxActivity = new ZxActivity();
         zxActivity.setUserId(SecurityUtils.getUserId());
+        zxActivity.setYear(year);
         List<ZxActivity> zxActivities = zxActivityMapper.selectZxActivityList(zxActivity);
         memberInfoVo.setZxActivityList(zxActivities);
         //查询发言不计算分
         ZxSpeak zxSpeak = new ZxSpeak();
         zxSpeak.setUserId(SecurityUtils.getUserId());
+        zxSpeak.setYear(year);
         List<ZxSpeak> zxSpeaks = zxSpeakMapper.selectZxSpeakList(zxSpeak);
         memberInfoVo.setZxSpeakList(zxSpeaks);
-        //计算得分
+        //查询委员得分和排名
+        MemberAssessmentInfo memberAssessmentInfo = new MemberAssessmentInfo();
+        memberAssessmentInfo.setUserId(userId);
+        memberAssessmentInfo.setYear(year);
+        List<MemberAssessmentInfo> memberAssessmentInfos = memberAssessmentInfoMapper.selectMemberAssessmentInfoList(memberAssessmentInfo);
+        if (memberAssessmentInfos != null && memberAssessmentInfos.size() >0){
+            MemberAssessmentInfo memberAssessmentInfoNew = memberAssessmentInfos.get(0);
+            memberInfoVo.setMemberAssessmentInfo(memberAssessmentInfoNew);
+        }
+/*        //计算得分 勿删
         if (zxAssessments != null && zxAssessments.size() > 0) {
             //获取分值上限
             long assessmentTotal = 0L;
@@ -384,7 +396,7 @@ public class MemberInfoServiceImpl implements IMemberInfoService {
                 long zxBonusNum = zxBonuses.stream().filter(e -> e.getScore() != null).mapToLong(BaseEntity::getScore).sum();
                 map.put("zxBonusScore",zxBonusNum);
             }
-        }
+        }*/
         memberInfoVo.setMap(map);
         return memberInfoVo;
     }

+ 116 - 0
ruoyi-system/src/main/resources/mapper/system/MemberAssessmentInfoMapper.xml

@@ -0,0 +1,116 @@
+<?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.ruoyi.system.mapper.MemberAssessmentInfoMapper">
+    
+    <resultMap type="MemberAssessmentInfo" id="MemberAssessmentInfoResult">
+        <result property="memberAssessmentId"    column="member_assessment_id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="proposalScore"    column="proposal_score"    />
+        <result property="sqmyScore"    column="sqmy_score"    />
+        <result property="conferenceScore"    column="conference_score"    />
+        <result property="activityScore"    column="activity_score"    />
+        <result property="bonusScore"    column="bonus_score"    />
+        <result property="totalScore"    column="total_score"    />
+        <result property="rank"    column="rank"    />
+        <result property="year"    column="year_data"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectMemberAssessmentInfoVo">
+        select member_assessment_id, user_id, proposal_score, sqmy_score, conference_score, activity_score, bonus_score, total_score, rank, year_data, create_by, create_time, update_by, update_time, remark from member_assessment_info
+    </sql>
+
+    <select id="selectMemberAssessmentInfoList" parameterType="MemberAssessmentInfo" resultMap="MemberAssessmentInfoResult">
+        <include refid="selectMemberAssessmentInfoVo"/>
+        <where>  
+            <if test="userId != null "> and user_id = #{userId}</if>
+            <if test="proposalScore != null  and proposalScore != ''"> and proposal_score = #{proposalScore}</if>
+            <if test="sqmyScore != null  and sqmyScore != ''"> and sqmy_score = #{sqmyScore}</if>
+            <if test="conferenceScore != null  and conferenceScore != ''"> and conference_score = #{conferenceScore}</if>
+            <if test="activityScore != null  and activityScore != ''"> and activity_score = #{activityScore}</if>
+            <if test="bonusScore != null  and bonusScore != ''"> and bonus_score = #{bonusScore}</if>
+            <if test="totalScore != null  and totalScore != ''"> and total_score = #{totalScore}</if>
+            <if test="rank != null  and rank != ''"> and rank = #{rank}</if>
+            <if test="year != null  and year != ''"> and year_data = #{year}</if>
+        </where>
+    </select>
+    
+    <select id="selectMemberAssessmentInfoByMemberAssessmentId" parameterType="Long" resultMap="MemberAssessmentInfoResult">
+        <include refid="selectMemberAssessmentInfoVo"/>
+        where member_assessment_id = #{memberAssessmentId}
+    </select>
+        
+    <insert id="insertMemberAssessmentInfo" parameterType="MemberAssessmentInfo" useGeneratedKeys="true" keyProperty="memberAssessmentId">
+        insert into member_assessment_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,</if>
+            <if test="proposalScore != null">proposal_score,</if>
+            <if test="sqmyScore != null">sqmy_score,</if>
+            <if test="conferenceScore != null">conference_score,</if>
+            <if test="activityScore != null">activity_score,</if>
+            <if test="bonusScore != null">bonus_score,</if>
+            <if test="totalScore != null">total_score,</if>
+            <if test="rank != null">rank,</if>
+            <if test="year != null">year_data,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+            create_time
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},</if>
+            <if test="proposalScore != null">#{proposalScore},</if>
+            <if test="sqmyScore != null">#{sqmyScore},</if>
+            <if test="conferenceScore != null">#{conferenceScore},</if>
+            <if test="activityScore != null">#{activityScore},</if>
+            <if test="bonusScore != null">#{bonusScore},</if>
+            <if test="totalScore != null">#{totalScore},</if>
+            <if test="rank != null">#{rank},</if>
+            <if test="year != null">#{year},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+            sysdate()
+         </trim>
+    </insert>
+
+    <update id="updateMemberAssessmentInfo" parameterType="MemberAssessmentInfo">
+        update member_assessment_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="proposalScore != null">proposal_score = #{proposalScore},</if>
+            <if test="sqmyScore != null">sqmy_score = #{sqmyScore},</if>
+            <if test="conferenceScore != null">conference_score = #{conferenceScore},</if>
+            <if test="activityScore != null">activity_score = #{activityScore},</if>
+            <if test="bonusScore != null">bonus_score = #{bonusScore},</if>
+            <if test="totalScore != null">total_score = #{totalScore},</if>
+            <if test="rank != null">rank = #{rank},</if>
+            <if test="year != null">year_data = #{year},</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="remark != null">remark = #{remark},</if>
+        </trim>
+        where user_id = #{userId} and year_data  = #{year}
+    </update>
+
+    <delete id="deleteMemberAssessmentInfoByMemberAssessmentId" parameterType="Long">
+        delete from member_assessment_info where member_assessment_id = #{memberAssessmentId}
+    </delete>
+
+    <delete id="deleteMemberAssessmentInfoByMemberAssessmentIds" parameterType="String">
+        delete from member_assessment_info where member_assessment_id in 
+        <foreach item="memberAssessmentId" collection="array" open="(" separator="," close=")">
+            #{memberAssessmentId}
+        </foreach>
+    </delete>
+</mapper>