liyong
8 天以前 8ca3c6594a0f5bad30c13bc7c73ab613888f5688
Merge remote-tracking branch 'origin/dev_New' into dev_New
已添加26个文件
已修改7个文件
878 ■■■■■ 文件已修改
doc/20260306_craete_purchase_return_orders.sql 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/controller/RolesController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/dto/RoleDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/pojo/Roles.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffEducationController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffEducation.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffEducationService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffEducationMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/20260306_craete_purchase_return_orders.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
#产品退货单表
drop table if exists purchase_return_orders;
create table purchase_return_orders
(
    id                 bigint auto_increment primary key,
    no                 varchar(255) null comment '退货单编号',
    return_type        tinyint not null default 0 comment '退货方式 0退货退款 1拒收',
    supplier_id        bigint  not null default 0 comment '供应商id',
    project_id         bigint  not null default 0 comment '项目id',
    project_phase      tinyint not null default 0 comment '项目阶段',
    prepared_at        datetime null comment '制单日期',
    prepared_user_id   bigint  not null default 0 comment '制单人id',
    return_user_id     bigint  not null default 0 comment '退料人id',
    purchase_ledger_id bigint  not null default 0 comment '采购订单id',
    remark             text null comment '备注',
    create_time        datetime null comment '录入时间',
    update_time        datetime null comment '更新时间',
    index              idx_purchase_ledger_id (purchase_ledger_id),
    index              idx_project_id (project_id)
);
#产品退货单与采购产品关联表
drop table if exists purchase_return_order_products;
create table purchase_return_order_products
(
    id                       bigint auto_increment primary key,
    purchase_return_order_id bigint not null default 0 comment '退货单id',
    sales_ledger_product_id  bigint not null default 0 comment '采购产品id',
    create_time              datetime null comment '录入时间',
    update_time              datetime null comment '更新时间',
    index                    idx_purchase_return_order_id (purchase_return_order_id),
    index                    idx_sales_ledger_product_id (sales_ledger_product_id)
);
pom.xml
@@ -315,6 +315,13 @@
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.43</version>
        </dependency>
    </dependencies>
    <build>
src/main/java/com/ruoyi/projectManagement/controller/RolesController.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.projectManagement.dto.RoleDto;
import com.ruoyi.projectManagement.mapper.RolesMapper;
import com.ruoyi.projectManagement.pojo.Roles;
import com.ruoyi.projectManagement.service.RolesService;
@@ -17,7 +18,7 @@
@RestController
@AllArgsConstructor
@RequestMapping("/roles")
@RequestMapping("/projectManagement/roles")
@Api(value = "Roles", tags = "")
public class RolesController {
@@ -32,9 +33,11 @@
    @PostMapping("/add")
    @ApiOperation("新增")
    public AjaxResult add(@RequestBody Roles role) {
        role.setNo(OrderUtils.countTodayByCreateTime(rolesMapper, "XMJS"));
        return AjaxResult.success(rolesservice.save(role));
    public AjaxResult add(@RequestBody RoleDto roleDto) {
        if (roleDto.getIsDefaultNo()) {
            roleDto.setNo(OrderUtils.countTodayByCreateTime(rolesMapper, "XMJS"));
        }
        return AjaxResult.success(rolesservice.save(roleDto));
    }
    @PostMapping("/update")
src/main/java/com/ruoyi/projectManagement/dto/RoleDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.projectManagement.dto;
import com.ruoyi.projectManagement.pojo.Roles;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RoleDto extends Roles {
    // æ˜¯å¦ä½¿ç”¨ç³»ç»Ÿç¼–号
    @ApiModelProperty("是否使用系统编号")
    private Boolean isDefaultNo;
}
src/main/java/com/ruoyi/projectManagement/pojo/Roles.java
@@ -38,10 +38,6 @@
    @ApiModelProperty(value="状态(1:启用, 0:禁用)")
    private Integer status;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java
@@ -1,24 +1,32 @@
package com.ruoyi.projectManagement.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.projectManagement.mapper.RolesMapper;
import com.ruoyi.projectManagement.pojo.Roles;
import com.ruoyi.projectManagement.service.RolesService;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@AllArgsConstructor
@Service
@RequiredArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class RolesServiceImpl extends ServiceImpl<RolesMapper, Roles> implements RolesService {
    private final RolesMapper rolesmapper;
    @Override
    public IPage<Roles> listPage(Page<Roles> page, Roles roles) {
        return rolesmapper.selectPage(page, null);
        LambdaQueryWrapper<Roles> queryWrapper = new LambdaQueryWrapper<>();
        if (roles.getName() != null) {
            queryWrapper.like(Roles::getName, roles.getName());
        }
        if (roles.getStatus() != null) {
            queryWrapper.eq(Roles::getStatus, roles.getStatus());
        }
        return rolesmapper.selectPage(page, queryWrapper);
    }
}
src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.purchase.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-06 11:44:38
 */
@RestController
@RequestMapping("/purchaseReturnOrders")
public class PurchaseReturnOrdersController {
}
src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.purchase.mapper;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-06 11:44:38
 */
@Mapper
public interface PurchaseReturnOrdersMapper extends BaseMapper<PurchaseReturnOrders> {
}
src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.purchase.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-06 11:44:38
 */
@Getter
@Setter
@TableName("purchase_return_orders")
@ApiModel(value = "PurchaseReturnOrders对象", description = "采购退货单")
public class PurchaseReturnOrders implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("退货单编号")
    private String no;
    @ApiModelProperty("退货方式 0退货退款 1拒收")
    private Integer returnType;
    @ApiModelProperty("供应商id")
    private Long supplierId;
    @ApiModelProperty("项目id")
    private Long projectId;
    @ApiModelProperty("项目阶段")
    private Integer projectPhase;
    @ApiModelProperty("制单日期")
    private LocalDateTime preparedAt;
    @ApiModelProperty("制单人id")
    private Long preparedUserId;
    @ApiModelProperty("退料人id")
    private Long returnUserId;
    @ApiModelProperty("采购订单id")
    private Long purchaseLedgerId;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("录入时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.purchase.service;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-06 11:44:38
 */
public interface PurchaseReturnOrdersService extends IService<PurchaseReturnOrders> {
}
src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.purchase.service.impl;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-06 11:44:38
 */
@Service
public class PurchaseReturnOrdersServiceImpl extends ServiceImpl<PurchaseReturnOrdersMapper, PurchaseReturnOrders> implements PurchaseReturnOrdersService {
}
src/main/java/com/ruoyi/staff/controller/StaffEducationController.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 04:33:08
 */
@RestController
@RequestMapping("/staffEducation")
public class StaffEducationController {
}
src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.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 04:34:17
 */
@RestController
@RequestMapping("/staffEmergencyContact")
public class StaffEmergencyContactController {
}
src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.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 04:33:36
 */
@RestController
@RequestMapping("/staffWorkExperience")
public class StaffWorkExperienceController {
}
src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
@@ -4,6 +4,7 @@
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.staff.pojo.StaffOnJob;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -18,8 +19,10 @@
    private String contractTerm;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractStartTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractEndTime;
}
src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.staff.mapper;
import com.ruoyi.staff.pojo.StaffEducation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å‘˜å·¥æ•™è‚²ç»åŽ†è¡¨ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:08
 */
@Mapper
public interface StaffEducationMapper extends BaseMapper<StaffEducation> {
}
src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.staff.mapper;
import com.ruoyi.staff.pojo.StaffEmergencyContact;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å‘˜å·¥ç´§æ€¥è”系人表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:34:17
 */
@Mapper
public interface StaffEmergencyContactMapper extends BaseMapper<StaffEmergencyContact> {
}
src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.staff.mapper;
import com.ruoyi.staff.pojo.StaffWorkExperience;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * å‘˜å·¥å·¥ä½œç»åŽ†è¡¨ Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:36
 */
@Mapper
public interface StaffWorkExperienceMapper extends BaseMapper<StaffWorkExperience> {
}
src/main/java/com/ruoyi/staff/pojo/StaffEducation.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * å‘˜å·¥æ•™è‚²ç»åŽ†è¡¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:08
 */
@Getter
@Setter
@TableName("staff_education")
@ApiModel(value = "StaffEducation对象", description = "员工教育经历表")
public class StaffEducation implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("关联staff_on_job表主键ID")
    private Long staffOnJobId;
    @ApiModelProperty("学历")
    private String education;
    @ApiModelProperty("毕业院校")
    private String schoolName;
    @ApiModelProperty("入学时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate enrollTime;
    @ApiModelProperty("毕业时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate graduateTime;
    @ApiModelProperty("专业")
    private String major;
    @ApiModelProperty("学位")
    private String degree;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}
src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * å‘˜å·¥ç´§æ€¥è”系人表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:34:17
 */
@Getter
@Setter
@TableName("staff_emergency_contact")
@ApiModel(value = "StaffEmergencyContact对象", description = "员工紧急联系人表")
public class StaffEmergencyContact implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("关联staff_on_job表主键ID")
    private Long staffOnJobId;
    @ApiModelProperty("紧急联系人姓名")
    private String contactName;
    @ApiModelProperty("紧急联系人关系")
    private String contactRelation;
    @ApiModelProperty("紧急联系人手机")
    private String contactPhone;
    @ApiModelProperty("紧急联系人住址")
    private String contactAddress;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -12,6 +12,7 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
 * äººå‘˜ç®¡ç†--员工台账/合同管理
@@ -208,5 +209,42 @@
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "别名")
    private String alias;
    @ApiModelProperty(value = "出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;
    @ApiModelProperty(value = "民族")
    private String nation;
    @ApiModelProperty(value = "婚姻状况")
    private String maritalStatus;
    @ApiModelProperty(value = "试用期(月)")
    private Integer proTerm;
    @ApiModelProperty(value = "转正日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date positiveDate;
    @ApiModelProperty(value = "基本工资")
    private BigDecimal basicSalary;
    @ApiModelProperty(value = "员工教育经历集合")
    @TableField(exist = false)
    private List<StaffEducation> staffEducationList;
    @ApiModelProperty(value = "员工工作经历集合")
    @TableField(exist = false)
    private List<StaffWorkExperience> staffWorkExperienceList;
    @ApiModelProperty(value = "员工紧急联系人集合")
    @TableField(exist = false)
    private List<StaffEmergencyContact> staffEmergencyContactList;
}
src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
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.LocalDate;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
 * å‘˜å·¥å·¥ä½œç»åŽ†è¡¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:36
 */
@Getter
@Setter
@TableName("staff_work_experience")
@ApiModel(value = "StaffWorkExperience对象", description = "员工工作经历表")
public class StaffWorkExperience implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("关联staff_on_job表主键ID")
    private Long staffOnJobId;
    @ApiModelProperty("前公司")
    private String formerCompany;
    @ApiModelProperty("前公司部门")
    private String formerDept;
    @ApiModelProperty("前公司职位")
    private String formerPosition;
    @ApiModelProperty("开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate startDate;
    @ApiModelProperty("结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;
    @ApiModelProperty("工作描述")
    private String workDesc;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}
src/main/java/com/ruoyi/staff/service/StaffEducationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.staff.service;
import com.ruoyi.staff.pojo.StaffEducation;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å‘˜å·¥æ•™è‚²ç»åŽ†è¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:08
 */
public interface StaffEducationService extends IService<StaffEducation> {
}
src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.staff.service;
import com.ruoyi.staff.pojo.StaffEmergencyContact;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å‘˜å·¥ç´§æ€¥è”系人表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:34:17
 */
public interface StaffEmergencyContactService extends IService<StaffEmergencyContact> {
}
src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.staff.service;
import com.ruoyi.staff.pojo.StaffWorkExperience;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * å‘˜å·¥å·¥ä½œç»åŽ†è¡¨ æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:36
 */
public interface StaffWorkExperienceService extends IService<StaffWorkExperience> {
}
src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.staff.service.impl;
import com.ruoyi.staff.pojo.StaffEducation;
import com.ruoyi.staff.mapper.StaffEducationMapper;
import com.ruoyi.staff.service.StaffEducationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å‘˜å·¥æ•™è‚²ç»åŽ†è¡¨ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:08
 */
@Service
public class StaffEducationServiceImpl extends ServiceImpl<StaffEducationMapper, StaffEducation> implements StaffEducationService {
}
src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.staff.service.impl;
import com.ruoyi.staff.pojo.StaffEmergencyContact;
import com.ruoyi.staff.mapper.StaffEmergencyContactMapper;
import com.ruoyi.staff.service.StaffEmergencyContactService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å‘˜å·¥ç´§æ€¥è”系人表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:34:17
 */
@Service
public class StaffEmergencyContactServiceImpl extends ServiceImpl<StaffEmergencyContactMapper, StaffEmergencyContact> implements StaffEmergencyContactService {
}
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -16,12 +16,8 @@
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;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.pojo.StaffLeave;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.mapper.*;
import com.ruoyi.staff.pojo.*;
import com.ruoyi.staff.service.IStaffOnJobService;
import freemarker.template.Configuration;
import freemarker.template.Template;
@@ -64,6 +60,24 @@
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private StaffEducationServiceImpl staffEducationService;
    @Autowired
    private StaffEducationMapper staffEducationMapper;
    @Autowired
    private StaffWorkExperienceMapper staffWorkExperienceMapper;
    @Autowired
    private StaffWorkExperienceServiceImpl staffWorkExperienceServiceImpl;
    @Autowired
    private StaffEmergencyContactMapper staffEmergencyContactMapper;
    @Autowired
    private StaffEmergencyContactServiceImpl staffEmergencyContactServiceImpl;
    //在职员工台账分页查询
    @Override
@@ -94,13 +108,17 @@
            sysUser1.setNickName(staffOnJobPrams.getStaffName());
            String s = SecurityUtils.encryptPassword("123456");
            sysUser1.setPassword(s);
            Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()};
            sysUser1.setPostIds(posts);
            if(staffOnJobPrams.getSysPostId() != null){
                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);
        }
        // ç»‘定子表数据
        bingingStaffOnJobExtra(staffOnJobPrams.getId(),staffOnJobPrams);
        // åˆ›å»ºåˆåŒè®°å½•
        StaffContract staffContract = new StaffContract();
        staffContract.setStaffOnJobId(staffOnJobPrams.getId());
@@ -132,9 +150,57 @@
            staffContractMapper.updateById(contract);
        }
        // åˆ é™¤æ‰€æœ‰å­è¡¨æ•°æ®
        delStaffOnJobExtra(Arrays.asList(id));
        // ç»‘定子表数据
        bingingStaffOnJobExtra(id,staffOnJobParams);
        // æ›´æ–°å‘˜å·¥æ•°æ®
        staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime());
        return staffOnJobMapper.updateById(staffOnJobParams);
    }
    /**
     * ç»‘定员工子表数据
     * @param staffOnJobPrams
     * @param id
     */
    public void bingingStaffOnJobExtra(Long id,StaffOnJob staffOnJobPrams) {
        // æ–°å¢žæ•™è‚²ç»åކ
        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEducationList())){
            staffOnJobPrams.getStaffEducationList().stream()
                    .filter(Objects::nonNull) // è¿‡æ»¤null对象,避免空指针
                    .forEach(staff -> staff.setStaffOnJobId(id)); // èµ‹å€¼
            staffEducationService.saveBatch(staffOnJobPrams.getStaffEducationList());
        }
        // æ–°å¢žå·¥ä½œç»åކ
        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffWorkExperienceList())){
            staffOnJobPrams.getStaffWorkExperienceList().stream()
                    .filter(Objects::nonNull) // è¿‡æ»¤null对象,避免空指针
                    .forEach(staff -> staff.setStaffOnJobId(id)); // èµ‹å€¼
            staffWorkExperienceServiceImpl.saveBatch(staffOnJobPrams.getStaffWorkExperienceList());
        }
        // æ–°å¢žç´§æ€¥è”系人
        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEmergencyContactList())){
            staffOnJobPrams.getStaffEmergencyContactList().stream()
                    .filter(Objects::nonNull) // è¿‡æ»¤null对象,避免空指针
                    .forEach(staff -> staff.setStaffOnJobId(id)); // èµ‹å€¼
            staffEmergencyContactServiceImpl.saveBatch(staffOnJobPrams.getStaffEmergencyContactList());
        }
    }
    /**
     * é€šè¿‡å‘˜å·¥id删除教育经历,工作经历,紧急联系人
     * @param ids
     * @return
     */
    public void delStaffOnJobExtra(List<Long> ids) {
        // åˆ é™¤æ•™è‚²ç»åކ
        staffEducationService.remove(Wrappers.<StaffEducation>lambdaQuery().in(StaffEducation::getStaffOnJobId,ids));
        // åˆ é™¤å·¥ä½œç»åކ
        staffWorkExperienceServiceImpl.remove(Wrappers.<StaffWorkExperience>lambdaQuery().in(StaffWorkExperience::getStaffOnJobId,ids));
        // åˆ é™¤ç´§æ€¥è”系人
        staffEmergencyContactServiceImpl.remove(Wrappers.<StaffEmergencyContact>lambdaQuery().in(StaffEmergencyContact::getStaffOnJobId,ids));
    }
    //删除入职
@@ -156,6 +222,8 @@
            Long[] longs = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new);
            sysUserService.deleteUserByIds(longs);
        }
        // åˆ é™¤å­è¡¨æ•°æ®
        delStaffOnJobExtra(ids.stream().map(Integer::longValue).collect(Collectors.toList()));
        // åˆ é™¤åˆåŒæ•°æ®
        return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
@@ -213,6 +281,13 @@
            staffOnJobDto.setContractStartTime(contract.getContractStartTime());
            staffOnJobDto.setContractEndTime(contract.getContractEndTime());
        }
        // èŽ·å–å­è¡¨æ•°æ®
        staffOnJobDto.setStaffEducationList(staffEducationMapper.selectList(Wrappers.<StaffEducation>lambdaQuery()
                .eq(StaffEducation::getStaffOnJobId, staffOnJob.getId())));
        staffOnJobDto.setStaffWorkExperienceList(staffWorkExperienceMapper.selectList(Wrappers.<StaffWorkExperience>lambdaQuery()
                .eq(StaffWorkExperience::getStaffOnJobId, staffOnJob.getId())));
        staffOnJobDto.setStaffEmergencyContactList(staffEmergencyContactMapper.selectList(Wrappers.<StaffEmergencyContact>lambdaQuery()
                .eq(StaffEmergencyContact::getStaffOnJobId, staffOnJob.getId())));
        return staffOnJobDto;
    }
src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.ruoyi.staff.service.impl;
import com.ruoyi.staff.pojo.StaffWorkExperience;
import com.ruoyi.staff.mapper.StaffWorkExperienceMapper;
import com.ruoyi.staff.service.StaffWorkExperienceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * å‘˜å·¥å·¥ä½œç»åŽ†è¡¨ æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-03-05 04:33:36
 */
@Service
public class StaffWorkExperienceServiceImpl extends ServiceImpl<StaffWorkExperienceMapper, StaffWorkExperience> implements StaffWorkExperienceService {
}
src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?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.purchase.mapper.PurchaseReturnOrdersMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.purchase.pojo.PurchaseReturnOrders">
        <id column="id" property="id" />
        <result column="no" property="no" />
        <result column="return_type" property="returnType" />
        <result column="supplier_id" property="supplierId" />
        <result column="project_id" property="projectId" />
        <result column="project_phase" property="projectPhase" />
        <result column="prepared_at" property="preparedAt" />
        <result column="prepared_user_id" property="preparedUserId" />
        <result column="return_user_id" property="returnUserId" />
        <result column="purchase_ledger_id" property="purchaseLedgerId" />
        <result column="remark" property="remark" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
    </resultMap>
</mapper>
src/main/resources/mapper/staff/StaffEducationMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?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.StaffEducationMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffEducation">
        <id column="id" property="id" />
        <result column="staff_on_job_id" property="staffOnJobId" />
        <result column="education" property="education" />
        <result column="school_name" property="schoolName" />
        <result column="enroll_time" property="enrollTime" />
        <result column="graduate_time" property="graduateTime" />
        <result column="major" property="major" />
        <result column="degree" property="degree" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
    </resultMap>
</mapper>
src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
<?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.StaffEmergencyContactMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffEmergencyContact">
        <id column="id" property="id" />
        <result column="staff_on_job_id" property="staffOnJobId" />
        <result column="contact_name" property="contactName" />
        <result column="contact_relation" property="contactRelation" />
        <result column="contact_phone" property="contactPhone" />
        <result column="contact_address" property="contactAddress" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
    </resultMap>
</mapper>
src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?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.StaffWorkExperienceMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffWorkExperience">
        <id column="id" property="id" />
        <result column="staff_on_job_id" property="staffOnJobId" />
        <result column="former_company" property="formerCompany" />
        <result column="former_dept" property="formerDept" />
        <result column="former_position" property="formerPosition" />
        <result column="start_date" property="startDate" />
        <result column="end_date" property="endDate" />
        <result column="work_desc" property="workDesc" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
    </resultMap>
</mapper>