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å¼ï¼å¦æå ç´ ä¸ºnullï¼è½¬æ¢ä¸º0Lï¼å¯æ ¹æ®ä¸å¡è°æ´ï¼æ¯å¦æå¼å¸¸ï¼ .map(id -> id != null ? id.longValue() : -1L) // å°Stream<Long>转æ¢ä¸ºLong[]æ°ç» .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ï¼ç´æ¥è¿åfalse return false; } } return false; } /** * æ¥è¯¢å½å¤©ï¼åºäºcreateTimeåæ®µï¼çè®°å½æ°é src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java
@@ -39,6 +39,7 @@ private Date updateTime; /** 夿³¨ */ @TableField(exist = false) private String remark; /** 请æ±åæ° */ 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() 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> { /** * æ¥è¯¢é¨é¨ç®¡çæ°æ® 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); } 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); } } 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 { } 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> { } 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> { } 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; } 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("å ³èçç¤¾ä¿æ¹æ¡ID") 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; } src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -69,6 +69,11 @@ private Long sysDeptId; /** * è§è² */ private Long roleId; /** * å®¶åºä½å */ @Excel(name = "å®¶åºä½å", sort = 6) 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); } 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> { } 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); } } 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 { } 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)); } 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: # 仿°æ®æºå¼å ³/é»è®¤å ³é 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> 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> 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 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">