From e099d0cd93c26b44bc1c10e51944edfad0465b0c Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 05 三月 2026 17:44:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java |  153 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 153 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
new file mode 100644
index 0000000..f06704d
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -0,0 +1,153 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.domain.SysUserDept;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
+import com.ruoyi.project.system.mapper.SysUserDeptMapper;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.staff.mapper.SchemeInsuranceDetailMapper;
+import com.ruoyi.staff.pojo.SchemeApplicableStaff;
+import com.ruoyi.staff.mapper.SchemeApplicableStaffMapper;
+import com.ruoyi.staff.pojo.SchemeInsuranceDetail;
+import com.ruoyi.staff.service.SchemeApplicableStaffService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 绀句繚鏂规閫傜敤浜哄憳琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:50:17
+ */
+@Service
+public class SchemeApplicableStaffServiceImpl extends ServiceImpl<SchemeApplicableStaffMapper, SchemeApplicableStaff> implements SchemeApplicableStaffService {
+
+    @Autowired
+    private SchemeApplicableStaffMapper schemeApplicableStaffMapper;
+
+    @Autowired
+    private SchemeInsuranceDetailMapper schemeInsuranceDetailMapper;
+
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+
+
+    @Override
+    public AjaxResult listPage(Page page, SchemeApplicableStaff schemeApplicableStaff) {
+        LambdaQueryWrapper<SchemeApplicableStaff> schemeApplicableStaffLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(schemeApplicableStaff != null){
+            if(StringUtils.isNotEmpty(schemeApplicableStaff.getTitle())){
+                schemeApplicableStaffLambdaQueryWrapper.like(SchemeApplicableStaff::getTitle, schemeApplicableStaff.getTitle());
+            }
+        }
+        Page<SchemeApplicableStaff> page1 = schemeApplicableStaffMapper.selectPage(page, schemeApplicableStaffLambdaQueryWrapper);
+        List<Long> collect = page1.getRecords().stream().map(SchemeApplicableStaff::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(collect)){
+            return AjaxResult.success(page1);
+        }
+        List<SchemeInsuranceDetail> schemeInsuranceDetails = schemeInsuranceDetailMapper
+                .selectList(new LambdaQueryWrapper<SchemeInsuranceDetail>()
+                        .in(SchemeInsuranceDetail::getSchemeId, collect));
+        page1.getRecords().forEach(item -> {
+            item.setSchemeInsuranceDetailList(schemeInsuranceDetails
+                    .stream()
+                    .filter(detail -> detail.getSchemeId().equals(item.getId()))
+                    .collect(Collectors.toList()));
+            SysUser sysUser = sysUserMapper.selectUserById(item.getCreateUser().longValue());
+            item.setCreateUserName(sysUser == null ? "鏈煡" : sysUser.getNickName());
+            // 鑾峰彇閮ㄩ棬淇℃伅
+            String[] split = item.getDeptIds().split(",");
+            List<SysDept> sysDepts = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                    .in(SysDept::getDeptId, Arrays.stream(split).map(Long::valueOf).collect(Collectors.toList())));
+            if(!CollectionUtils.isEmpty(sysDepts)){
+                item.setDeptNames(sysDepts.stream().map(SysDept::getDeptName).collect(Collectors.joining(",")));
+            }
+        });
+        return AjaxResult.success(page1);
+    }
+
+    public void setSchemeApplicableStaffUserInfo(SchemeApplicableStaff schemeApplicableStaff) {
+        // 閫氳繃閮ㄩ棬鑾峰彇浜哄憳id
+        List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectList(new LambdaQueryWrapper<SysUserDept>()
+                .in(SysUserDept::getDeptId, schemeApplicableStaff.getDeptIds()));
+        if(CollectionUtils.isEmpty(sysUserDepts)){
+            throw new IllegalArgumentException("閮ㄩ棬涓嬫棤鍛樺伐");
+        }
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(sysUserDepts.stream().map(SysUserDept::getUserId).collect(Collectors.toList()));
+        if(CollectionUtils.isEmpty(sysUsers)){
+            throw new IllegalArgumentException("閮ㄩ棬涓嬫棤鍛樺伐");
+        }
+        schemeApplicableStaff.setStaffIds(sysUsers
+                .stream()
+                .map(SysUser::getUserId)
+                .filter(Objects::nonNull)         // 杩囨护鎺� null 鍊�
+                .map(String::valueOf)
+                .collect(Collectors.joining( ",")));
+        schemeApplicableStaff.setStaffNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
+    }
+
+    @Override
+    public AjaxResult add(SchemeApplicableStaff schemeApplicableStaff) {
+        if(schemeApplicableStaff == null){
+            return AjaxResult.error("鍙傛暟閿欒");
+        }
+        if(CollectionUtils.isEmpty(schemeApplicableStaff.getSchemeInsuranceDetailList())){
+            return AjaxResult.error("璇烽�夋嫨鏂规鏄庣粏");
+        }
+        setSchemeApplicableStaffUserInfo(schemeApplicableStaff); //鏍规嵁閮ㄩ棬璁剧疆鐢ㄦ埛淇℃伅
+        int insert = schemeApplicableStaffMapper.insert(schemeApplicableStaff);
+        schemeApplicableStaff.getSchemeInsuranceDetailList().forEach(item -> {
+            item.setSchemeId(schemeApplicableStaff.getId());
+            schemeInsuranceDetailMapper.insert(item);
+        });
+        return AjaxResult.success(insert);
+    }
+
+    @Override
+    public AjaxResult updateSchemeApplicableStaff(SchemeApplicableStaff schemeApplicableStaff) {
+        if(schemeApplicableStaff == null){
+            return AjaxResult.error("鍙傛暟閿欒");
+        }
+        setSchemeApplicableStaffUserInfo(schemeApplicableStaff); //鏍规嵁閮ㄩ棬璁剧疆鐢ㄦ埛淇℃伅
+        int update = schemeApplicableStaffMapper.updateById(schemeApplicableStaff);
+        // 鍏堝垹锛岄噸鏂扮粦瀹�
+        schemeInsuranceDetailMapper.delete(new LambdaQueryWrapper<SchemeInsuranceDetail>()
+                .eq(SchemeInsuranceDetail::getSchemeId, schemeApplicableStaff.getId()));
+        schemeApplicableStaff.getSchemeInsuranceDetailList().forEach(item -> {
+            item.setSchemeId(schemeApplicableStaff.getId());
+            schemeInsuranceDetailMapper.insert(item);
+        });
+        return AjaxResult.success(update);
+    }
+
+    @Override
+    public AjaxResult delete(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return AjaxResult.error("鍙傛暟閿欒");
+        }
+        int delete = schemeApplicableStaffMapper.deleteBatchIds(ids);
+        schemeInsuranceDetailMapper.delete(new LambdaQueryWrapper<SchemeInsuranceDetail>()
+                .in(SchemeInsuranceDetail::getSchemeId, ids));
+        return AjaxResult.success(delete);
+    }
+}

--
Gitblit v1.9.3