From 593cbad35cb45247ac022127ca7edad48ff92b12 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 05 三月 2026 15:51:44 +0800
Subject: [PATCH] yys 1.人员入职同步新增用户,离职禁用登录 2.社保管理模块开发
---
src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java | 1
src/main/java/com/ruoyi/staff/mapper/SchemeInsuranceDetailMapper.java | 18 +
src/main/java/com/ruoyi/staff/service/SchemeInsuranceDetailService.java | 16 +
src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java | 5
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 45 +++
src/main/java/com/ruoyi/common/utils/OrderUtils.java | 45 ++++
src/main/java/com/ruoyi/staff/service/impl/SchemeInsuranceDetailServiceImpl.java | 20 +
src/main/java/com/ruoyi/project/system/domain/SysDept.java | 5
src/main/java/com/ruoyi/staff/service/SchemeApplicableStaffService.java | 27 ++
src/main/java/com/ruoyi/staff/mapper/SchemeApplicableStaffMapper.java | 18 +
src/main/java/com/ruoyi/staff/controller/SchemeApplicableStaffController.java | 69 ++++++
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java | 5
src/main/java/com/ruoyi/staff/controller/SchemeInsuranceDetailController.java | 18 +
src/main/java/com/ruoyi/staff/pojo/SchemeApplicableStaff.java | 84 +++++++
src/main/resources/mapper/staff/SchemeApplicableStaffMapper.xml | 20 +
src/main/java/com/ruoyi/staff/pojo/SchemeInsuranceDetail.java | 69 ++++++
src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java | 3
src/main/resources/mapper/system/SysUserMapper.xml | 3
src/main/resources/application-dev.yml | 4
src/main/resources/mapper/staff/SchemeInsuranceDetailMapper.xml | 20 +
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 153 +++++++++++++
src/main/resources/mapper/system/SysDeptMapper.xml | 4
22 files changed, 644 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/OrderUtils.java b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
index 52df76b..32e55a0 100644
--- a/src/main/java/com/ruoyi/common/utils/OrderUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -13,6 +13,7 @@
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -21,6 +22,50 @@
*/
public class OrderUtils {
+ /**
+ * List<Integer> 杞崲涓� Long[] 鏁扮粍
+ * @param ids
+ * @return
+ */
+ public static Long[] listIntegerToLongArray(List<Integer> ids) {
+ return ids.stream()
+ // 澶勭悊null鍊硷細濡傛灉鍏冪礌涓簄ull锛岃浆鎹负0L锛堝彲鏍规嵁涓氬姟璋冩暣锛屾瘮濡傛姏寮傚父锛�
+ .map(id -> id != null ? id.longValue() : -1L)
+ // 灏哠tream<Long>杞崲涓篖ong[]鏁扮粍
+ .toArray(Long[]::new);
+ }
+
+ /**
+ * 鍒ゆ柇鐩爣id鏄惁鍦ㄩ�楀彿鍒嗛殧鐨勫瓧绗︿覆涓�
+ * @param targetId
+ * @param str
+ * @return
+ */
+ public boolean isStaffIdExist(Object targetId,String str) {
+ // 绌哄�兼牎楠岋紝閬垮厤绌烘寚閽�
+ if (str == null || str.trim().isEmpty() || targetId == null) {
+ return false;
+ }
+ // 鎸夐�楀彿鍒嗗壊鎴愭暟缁�
+ String[] idArray = str.split(",");
+ // 閬嶅巻鏁扮粍鍒ゆ柇鏄惁鍖呭惈鐩爣id
+ for (String id : idArray) {
+ // 鍘婚櫎绌烘牸锛堥槻姝㈠瓧绗︿覆涓湁澶氫綑绌烘牸锛屽"1, 121"锛�
+ String cleanId = id.trim();
+ // 杞崲涓烘暟瀛楀苟姣旇緝
+ try {
+ if (cleanId.equals(String.valueOf(targetId))) {
+ return true;
+ }
+ } catch (NumberFormatException e) {
+ // 鑻ュ瓨鍦ㄩ潪鏁板瓧ID锛岀洿鎺ヨ繑鍥瀎alse
+ return false;
+ }
+ }
+ return false;
+ }
+
+
/**
* 鏌ヨ褰撳ぉ锛堝熀浜巆reateTime瀛楁锛夌殑璁板綍鏁伴噺
diff --git a/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java b/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
index ab8b3d6..8874722 100644
--- a/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
+++ b/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
@@ -39,6 +39,7 @@
private Date updateTime;
/** 澶囨敞 */
+ @TableField(exist = false)
private String remark;
/** 璇锋眰鍙傛暟 */
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysDept.java b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
index 54e53a7..355618d 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysDept.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
@@ -6,6 +6,8 @@
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
+
+import com.baomidou.mybatisplus.annotation.TableField;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.web.domain.BaseEntity;
@@ -50,15 +52,18 @@
private String delFlag;
/** 鐖堕儴闂ㄥ悕绉� */
+ @TableField(exist = false)
private String parentName;
/** 閮ㄩ棬缂栧彿 */
private String deptNick;
/** 鍛樺伐鏁伴噺 */
+ @TableField(exist = false)
private Integer staffCount;
/** 瀛愰儴闂� */
+ @TableField(exist = false)
private List<SysDept> children = new ArrayList<SysDept>();
public Long getDeptId()
diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java
index 942a700..c564959 100644
--- a/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java
+++ b/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java
@@ -2,6 +2,7 @@
import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.project.system.domain.SysDept;
@@ -12,7 +13,7 @@
* @author ruoyi
*/
@Mapper
-public interface SysDeptMapper
+public interface SysDeptMapper extends BaseMapper<SysDept>
{
/**
* 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
index 6bb8927..7773825 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -456,7 +456,7 @@
/**
* 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
- *
+ *
* @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
* @return 缁撴灉
*/
@@ -473,6 +473,9 @@
userRoleMapper.deleteUserRole(userIds);
// 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
userPostMapper.deleteUserPost(userIds);
+ // 鍒犻櫎鐢ㄦ埛涓庨儴闂ㄦ暟鎹�
+ sysUserDeptMapper.delete(new LambdaQueryWrapper<SysUserDept>()
+ .in(SysUserDept::getUserId, userIds));
return userMapper.deleteUserByIds(userIds);
}
diff --git a/src/main/java/com/ruoyi/staff/controller/SchemeApplicableStaffController.java b/src/main/java/com/ruoyi/staff/controller/SchemeApplicableStaffController.java
new file mode 100644
index 0000000..39f1ef0
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/SchemeApplicableStaffController.java
@@ -0,0 +1,69 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.SchemeApplicableStaff;
+import com.ruoyi.staff.service.SchemeApplicableStaffService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 绀句繚鏂规閫傜敤浜哄憳琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:50:17
+ */
+@Api(tags = "绀句繚鏂规閫傜敤浜哄憳琛�")
+@RestController
+@RequestMapping("/schemeApplicableStaff")
+public class SchemeApplicableStaffController extends BaseController {
+
+
+ @Autowired
+ private SchemeApplicableStaffService schemeApplicableStaffService;
+
+
+ @GetMapping("/listPage")
+ @ApiOperation(value = "鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, SchemeApplicableStaff schemeApplicableStaff) {
+ return schemeApplicableStaffService.listPage(page,schemeApplicableStaff);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation(value = "娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ @Log(title = "绀句繚鏂规閫傜敤浜哄憳琛�", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody SchemeApplicableStaff schemeApplicableStaff) {
+ return schemeApplicableStaffService.add(schemeApplicableStaff);
+ }
+
+ @PostMapping("/updateSchemeApplicableStaff")
+ @ApiOperation(value = "淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ @Log(title = "绀句繚鏂规閫傜敤浜哄憳琛�", businessType = BusinessType.UPDATE)
+ public AjaxResult updateSchemeApplicableStaff(@RequestBody SchemeApplicableStaff schemeApplicableStaff) {
+ return schemeApplicableStaffService.updateSchemeApplicableStaff(schemeApplicableStaff);
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation(value = "鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ @Log(title = "绀句繚鏂规閫傜敤浜哄憳琛�", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ return schemeApplicableStaffService.delete(ids);
+ }
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/SchemeInsuranceDetailController.java b/src/main/java/com/ruoyi/staff/controller/SchemeInsuranceDetailController.java
new file mode 100644
index 0000000..488be7e
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/SchemeInsuranceDetailController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:52:23
+ */
+@RestController
+@RequestMapping("/schemeInsuranceDetail")
+public class SchemeInsuranceDetailController {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/SchemeApplicableStaffMapper.java b/src/main/java/com/ruoyi/staff/mapper/SchemeApplicableStaffMapper.java
new file mode 100644
index 0000000..ebb385d
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/SchemeApplicableStaffMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.mapper;
+
+import com.ruoyi.staff.pojo.SchemeApplicableStaff;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 绀句繚鏂规閫傜敤浜哄憳琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:50:17
+ */
+@Mapper
+public interface SchemeApplicableStaffMapper extends BaseMapper<SchemeApplicableStaff> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/SchemeInsuranceDetailMapper.java b/src/main/java/com/ruoyi/staff/mapper/SchemeInsuranceDetailMapper.java
new file mode 100644
index 0000000..fe7251b
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/SchemeInsuranceDetailMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.mapper;
+
+import com.ruoyi.staff.pojo.SchemeInsuranceDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:52:23
+ */
+@Mapper
+public interface SchemeInsuranceDetailMapper extends BaseMapper<SchemeInsuranceDetail> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/SchemeApplicableStaff.java b/src/main/java/com/ruoyi/staff/pojo/SchemeApplicableStaff.java
new file mode 100644
index 0000000..e61df92
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/SchemeApplicableStaff.java
@@ -0,0 +1,84 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+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 java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 绀句繚鏂规閫傜敤浜哄憳琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:50:17
+ */
+@Getter
+@Setter
+@TableName("scheme_applicable_staff")
+@ApiModel(value = "SchemeApplicableStaff瀵硅薄", description = "绀句繚鏂规閫傜敤浜哄憳琛�")
+public class SchemeApplicableStaff implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("绀句繚鏂规淇濋櫓绂忓埄鏄庣粏")
+ @TableField(exist = false)
+ private List<SchemeInsuranceDetail> schemeInsuranceDetailList;
+
+ @ApiModelProperty("涓婚敭ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("鏍囬")
+ private String title;
+
+ @ApiModelProperty("閮ㄩ棬ids,澶氫釜浣跨敤,闅斿紑")
+ private String deptIds;
+
+ @ApiModelProperty("閮ㄩ棬鍚嶇О,澶氫釜浣跨敤,闅斿紑")
+ @TableField(exist = false)
+ private String deptNames;
+
+ @ApiModelProperty("浜哄憳鍚嶇О,澶氫釜浣跨敤,闅斿紑")
+ private String staffNames;
+
+ @ApiModelProperty("浜哄憳id,澶氫釜浣跨敤,闅斿紑")
+ private String staffIds;
+
+ @ApiModelProperty("淇濋櫓绫诲瀷鍚嶇О澶氫釜浣跨敤,闅斿紑")
+ private String insuranceTypes;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @TableField(exist = false)
+ @ApiModelProperty("鍒涘缓浜哄悕绉�")
+ private String createUserName;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8", shape = JsonFormat.Shape.STRING)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/SchemeInsuranceDetail.java b/src/main/java/com/ruoyi/staff/pojo/SchemeInsuranceDetail.java
new file mode 100644
index 0000000..9facc7b
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/SchemeInsuranceDetail.java
@@ -0,0 +1,69 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+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 java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:52:23
+ */
+@Getter
+@Setter
+@TableName("scheme_insurance_detail")
+@ApiModel(value = "SchemeInsuranceDetail瀵硅薄", description = "绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛�")
+public class SchemeInsuranceDetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("鏄庣粏ID锛堜富閿級")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("鍏宠仈鐨勭ぞ淇濇柟妗圛D")
+ private Long schemeId;
+
+ @ApiModelProperty("淇濋櫓绫诲瀷锛堝鍖荤枟淇濋櫓銆佸吇鑰佷繚闄╃瓑锛�")
+ private String insuranceType;
+
+ @ApiModelProperty("缂磋垂鍩烘暟")
+ private BigDecimal paymentBase;
+
+ @ApiModelProperty("鏄惁璋冪敤鍩烘湰宸ヨ祫锛�1-鍚︼紝2-鏄�")
+ private Integer useBasicSalary;
+
+ @ApiModelProperty("涓汉缂磋垂姣斾緥锛�%锛�")
+ private BigDecimal personalRatio;
+
+ @ApiModelProperty("涓汉鍥哄畾缂磋垂閲戦")
+ private BigDecimal personalFixed;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
index 785b722..3ca6fcb 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -69,6 +69,11 @@
private Long sysDeptId;
/**
+ * 瑙掕壊
+ */
+ private Long roleId;
+
+ /**
* 瀹跺涵浣忓潃
*/
@Excel(name = "瀹跺涵浣忓潃", sort = 6)
diff --git a/src/main/java/com/ruoyi/staff/service/SchemeApplicableStaffService.java b/src/main/java/com/ruoyi/staff/service/SchemeApplicableStaffService.java
new file mode 100644
index 0000000..da9a2d7
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/SchemeApplicableStaffService.java
@@ -0,0 +1,27 @@
+package com.ruoyi.staff.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.SchemeApplicableStaff;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 绀句繚鏂规閫傜敤浜哄憳琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:50:17
+ */
+public interface SchemeApplicableStaffService extends IService<SchemeApplicableStaff> {
+
+ AjaxResult listPage(Page page, SchemeApplicableStaff schemeApplicableStaff);
+
+ AjaxResult add(SchemeApplicableStaff schemeApplicableStaff);
+
+ AjaxResult updateSchemeApplicableStaff(SchemeApplicableStaff schemeApplicableStaff);
+
+ AjaxResult delete(List<Long> ids);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/SchemeInsuranceDetailService.java b/src/main/java/com/ruoyi/staff/service/SchemeInsuranceDetailService.java
new file mode 100644
index 0000000..3d698e7
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/SchemeInsuranceDetailService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.staff.service;
+
+import com.ruoyi.staff.pojo.SchemeInsuranceDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:52:23
+ */
+public interface SchemeInsuranceDetailService extends IService<SchemeInsuranceDetail> {
+
+}
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);
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/SchemeInsuranceDetailServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/SchemeInsuranceDetailServiceImpl.java
new file mode 100644
index 0000000..801649e
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeInsuranceDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service.impl;
+
+import com.ruoyi.staff.pojo.SchemeInsuranceDetail;
+import com.ruoyi.staff.mapper.SchemeInsuranceDetailMapper;
+import com.ruoyi.staff.service.SchemeInsuranceDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 绀句繚鏂规淇濋櫓绂忓埄鏄庣粏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 11:52:23
+ */
+@Service
+public class SchemeInsuranceDetailServiceImpl extends ServiceImpl<SchemeInsuranceDetailMapper, SchemeInsuranceDetail> implements SchemeInsuranceDetailService {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index d421345..02253f5 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -6,10 +6,15 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dto.WordDateDto;
import com.ruoyi.project.system.domain.SysPost;
+import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysPostMapper;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.project.system.service.impl.SysUserServiceImpl;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.mapper.StaffContractMapper;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
@@ -22,6 +27,8 @@
import freemarker.template.Template;
import lombok.AllArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -35,6 +42,7 @@
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
+import java.util.stream.Collectors;
@AllArgsConstructor
@Service
@@ -50,6 +58,12 @@
@Autowired
private StaffLeaveMapper staffLeaveMapper;
+ @Autowired
+ private SysUserServiceImpl sysUserService;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
//鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
@Override
@@ -64,14 +78,29 @@
String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
// 鍒ゆ柇缂栧彿鏄惁瀛樺湪
List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
- if (staffOnJobs.size()>0){
+ if (staffOnJobs != null && !staffOnJobs.isEmpty()){
throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
}
+
// 鍒涘缓鍏ヨ亴鏁版嵁
staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
staffOnJobPrams.setStaffState(1);
staffOnJobMapper.insert(staffOnJobPrams);
-
+ // 鏌ヨ鐢ㄦ埛鏄惁宸茬粡鏂板
+ SysUser sysUser = sysUserService.selectUserById(staffOnJobPrams.getId());
+ if(sysUser == null){
+ SysUser sysUser1 = new SysUser();
+ sysUser1.setUserName(staffOnJobPrams.getStaffNo());
+ sysUser1.setNickName(staffOnJobPrams.getStaffName());
+ String s = SecurityUtils.encryptPassword("123456");
+ sysUser1.setPassword(s);
+ Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()};
+ sysUser1.setPostIds(posts);
+ sysUser1.setRoleIds(new Long[]{staffOnJobPrams.getRoleId()});
+ sysUser1.setDeptIds(new Long[]{staffOnJobPrams.getSysDeptId()});
+ sysUser1.setStatus("0");
+ sysUserService.insertUser(sysUser1);
+ }
// 鍒涘缓鍚堝悓璁板綍
StaffContract staffContract = new StaffContract();
staffContract.setStaffOnJobId(staffOnJobPrams.getId());
@@ -112,10 +141,22 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int delStaffOnJobs(List<Integer> ids) {
+ List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().in(StaffOnJob::getId, ids));
+ if(CollectionUtils.isEmpty(staffOnJobs)){
+ throw new BaseException("璇ュ憳宸ヤ笉瀛樺湪,鏃犳硶鍒犻櫎!!!");
+ }
// 鍒犻櫎鍏ヨ亴鏁版嵁
staffOnJobMapper.deleteBatchIds(ids);
// 鍒犻櫎绂昏亴鏁版嵁
staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
+ // 鍒犻櫎鐢ㄦ埛鏁版嵁
+ List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
+ .in(SysUser::getUserName, staffOnJobs.stream().map(StaffOnJob::getStaffNo).collect(Collectors.toList())));
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ Long[] longs = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new);
+ sysUserService.deleteUserByIds(longs);
+ }
+
// 鍒犻櫎鍚堝悓鏁版嵁
return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ff56f9d..3196942 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -74,9 +74,9 @@
druid:
# 涓诲簱鏁版嵁婧�
master:
- url: jdbc:mysql://localhost:3306/product-inventory-management-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://1.15.17.182:9999/product-inventory-management-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
- password: 123456
+ password: xd@123456..
# 浠庡簱鏁版嵁婧�
slave:
# 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
diff --git a/src/main/resources/mapper/staff/SchemeApplicableStaffMapper.xml b/src/main/resources/mapper/staff/SchemeApplicableStaffMapper.xml
new file mode 100644
index 0000000..4f2952d
--- /dev/null
+++ b/src/main/resources/mapper/staff/SchemeApplicableStaffMapper.xml
@@ -0,0 +1,20 @@
+<?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.staff.mapper.SchemeApplicableStaffMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.SchemeApplicableStaff">
+ <id column="id" property="id" />
+ <result column="title" property="title" />
+ <result column="dept_ids" property="deptIds" />
+ <result column="staff_names" property="staffNames" />
+ <result column="staff_ids" property="staffIds" />
+ <result column="insurance_types" property="insuranceTypes" />
+ <result column="remark" property="remark" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_user" property="createUser" />
+ <result column="update_user" property="updateUser" />
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/staff/SchemeInsuranceDetailMapper.xml b/src/main/resources/mapper/staff/SchemeInsuranceDetailMapper.xml
new file mode 100644
index 0000000..3aa237b
--- /dev/null
+++ b/src/main/resources/mapper/staff/SchemeInsuranceDetailMapper.xml
@@ -0,0 +1,20 @@
+<?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.staff.mapper.SchemeInsuranceDetailMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.SchemeInsuranceDetail">
+ <id column="id" property="id" />
+ <result column="scheme_id" property="schemeId" />
+ <result column="insurance_type" property="insuranceType" />
+ <result column="payment_base" property="paymentBase" />
+ <result column="use_basic_salary" property="useBasicSalary" />
+ <result column="personal_ratio" property="personalRatio" />
+ <result column="personal_fixed" property="personalFixed" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_user" property="createUser" />
+ <result column="update_user" property="updateUser" />
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/system/SysDeptMapper.xml b/src/main/resources/mapper/system/SysDeptMapper.xml
index afc1130..ee5256f 100644
--- a/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -52,7 +52,7 @@
order by d.parent_id, d.order_num
</select>
- <select id="selectDeptListByRoleId" resultType="Long">
+ <select id="selectDeptListByRoleId" resultType="java.lang.Long">
select d.dept_id
from sys_dept d
left join sys_role_dept rd on d.dept_id = rd.dept_id
@@ -165,7 +165,7 @@
update sys_dept set del_flag = '2' where dept_id = #{deptId}
</delete>
- <select id="maxLevelDeptId">
+ <select id="maxLevelDeptId" resultType="java.lang.Long">
WITH RECURSIVE DepartmentHierarchy AS (
SELECT dept_id, parent_id
FROM sys_dept
diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml
index d837b7e..e4f818a 100644
--- a/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/src/main/resources/mapper/system/SysUserMapper.xml
@@ -139,6 +139,7 @@
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_id = #{userId}
+ and u.del_flag = '0'
</select>
<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
@@ -157,6 +158,7 @@
where u.user_id in <foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
+ and u.del_flag = '0'
</select>
<select id="selectRegistrantIds" resultType="com.ruoyi.project.system.domain.SysUser">
SELECT user_id, nick_name FROM sys_user
@@ -179,6 +181,7 @@
<foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
+ and del_flag = '0'
</select>
<select id="selectUserByNickName" resultType="com.ruoyi.project.system.domain.SysUser"
parameterType="java.lang.String">
--
Gitblit v1.9.3