瀏覽代碼

更新教职工工资

Administrator 1 年之前
父節點
當前提交
38c6339ef7
共有 16 個文件被更改,包括 759 次插入2 次删除
  1. 130 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/pay/XiaoyuanPayController.java
  2. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java
  3. 66 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/XiaoyuanPay.java
  4. 71 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/bo/XiaoyuanPayBo.java
  5. 82 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/vo/XiaoyuanPayVo.java
  6. 47 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/XiaoYuanPayListener.java
  7. 74 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/XiaoYuanPayUtil.java
  8. 6 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysConfigMapper.java
  9. 16 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/pay/XiaoyuanPayMapper.java
  10. 7 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java
  11. 14 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java
  12. 168 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/pay/XiaoyuanPayServiceImpl.java
  13. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/record/RecordLeaveServiceImpl.java
  14. 56 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/pay/IXiaoyuanPayService.java
  15. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/pay/XiaoyuanPayMapper.xml
  16. 4 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml

+ 130 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/pay/XiaoyuanPayController.java

@@ -0,0 +1,130 @@
+package org.dromara.system.controller.pay;
+
+import java.util.List;
+import java.util.Map;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.domain.AjaxResult;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.pay.bo.XiaoyuanPayBo;
+import org.dromara.system.domain.pay.vo.XiaoyuanPayVo;
+import org.dromara.system.domain.score.bo.ScoreDataBo;
+import org.dromara.system.listener.ScoreDateUtil;
+import org.dromara.system.listener.XiaoYuanPayUtil;
+import org.dromara.system.service.pay.IXiaoyuanPayService;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * 教职工工资条
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/xiaoYuan/pay")
+public class XiaoyuanPayController extends BaseController {
+
+    private final IXiaoyuanPayService xiaoyuanPayService;
+
+    /**
+     * 查询教职工工资条列表
+     */
+    @SaCheckPermission("xiaoYuan:pay:list")
+    @GetMapping("/list")
+    public AjaxResult list(XiaoyuanPayBo bo, PageQuery pageQuery) {
+        return AjaxResult.success(xiaoyuanPayService.queryPageList(bo, pageQuery));
+    }
+
+
+
+    /**
+     * 教职工工资导入数据
+     *
+     * @param file          导入文件
+     */
+    @SaCheckPermission("xiaoYuan:data:importData")
+    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
+        //获取到处理后的数据
+        List<Map<String, String>> maps = XiaoYuanPayUtil.importExcel(file);
+        //进行新增操作
+        xiaoyuanPayService.importData(maps);
+        return R.ok();
+    }
+
+    /**
+     * 导出教职工工资条列表
+     */
+    @SaCheckPermission("xiaoYuan:pay:export")
+    @Log(title = "教职工工资条", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XiaoyuanPayBo bo, HttpServletResponse response) {
+        List<XiaoyuanPayVo> list = xiaoyuanPayService.queryList(bo);
+        ExcelUtil.exportExcel(list, "教职工工资条", XiaoyuanPayVo.class, response);
+    }
+
+    /**
+     * 获取教职工工资条详细信息
+     *
+     * @param payId 主键
+     */
+    @SaCheckPermission("xiaoYuan:pay:query")
+    @GetMapping("/{payId}")
+    public R<XiaoyuanPayVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long payId) {
+        return R.ok(xiaoyuanPayService.queryById(payId));
+    }
+
+    /**
+     * 新增教职工工资条
+     */
+    @SaCheckPermission("xiaoYuan:pay:add")
+    @Log(title = "教职工工资条", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XiaoyuanPayBo bo) {
+        return toAjax(xiaoyuanPayService.insertByBo(bo));
+    }
+
+    /**
+     * 修改教职工工资条
+     */
+    @SaCheckPermission("xiaoYuan:pay:edit")
+    @Log(title = "教职工工资条", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XiaoyuanPayBo bo) {
+        return toAjax(xiaoyuanPayService.updateByBo(bo));
+    }
+
+    /**
+     * 删除教职工工资条
+     *
+     * @param payIds 主键串
+     */
+    @SaCheckPermission("xiaoYuan:pay:remove")
+    @Log(title = "教职工工资条", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{payIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] payIds) {
+        return toAjax(xiaoyuanPayService.deleteWithValidByIds(List.of(payIds), true));
+    }
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java

@@ -72,6 +72,17 @@ public class SysConfigController extends BaseController {
         return R.ok(configService.selectConfigByKey(configKey));
     }
 
+
+    /**
+     * 根据参数键名查询参数值 不带租户默认系统租户
+     * @param configKey 参数Key
+     * @return
+     */
+    @GetMapping(value = "/scoreWatermark/{configKey}")
+    public R<Void> getScoreWatermark(@PathVariable String configKey) {
+        return R.ok(configService.getScoreWatermark(configKey));
+    }
+
     /**
      * 新增参数配置
      */

+ 66 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/XiaoyuanPay.java

@@ -0,0 +1,66 @@
+package org.dromara.system.domain.pay;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 教职工工资条对象 xiaoyuan_pay
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("xiaoyuan_pay")
+public class XiaoyuanPay extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 新闻ID
+     */
+    @TableId(value = "pay_id")
+    private Long payId;
+
+    /**
+     * 教职工姓名
+     */
+    private String teacherName;
+
+    /**
+     * 教职工id
+     */
+    private Long teacherId;
+
+    /**
+     * 教职工工号
+     */
+    private String teacherNum;
+
+    /**
+     * 表头
+     */
+    private String tableHead;
+
+    /**
+     * 内容
+     */
+    private String tableDetail;
+
+    /**
+     * 发放时间
+     */
+    private String payTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 71 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/bo/XiaoyuanPayBo.java

@@ -0,0 +1,71 @@
+package org.dromara.system.domain.pay.bo;
+
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.system.domain.pay.XiaoyuanPay;
+
+/**
+ * 教职工工资条业务对象 xiaoyuan_pay
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XiaoyuanPay.class, reverseConvertGenerate = false)
+public class XiaoyuanPayBo extends BaseEntity {
+
+    /**
+     * 新闻ID
+     */
+
+    private Long payId;
+
+    /**
+     * 教职工姓名
+     */
+
+    private String teacherName;
+
+    /**
+     * 教职工id
+     */
+
+    private Long teacherId;
+    /**
+     * 教职工工号
+     */
+    private String teacherNum;
+
+    /**
+     * 表头
+     */
+
+    private String tableHead;
+
+    /**
+     * 内容
+     */
+    //@NotBlank(message = "内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String tableDetail;
+
+    /**
+     * 发放时间
+     */
+    private String payTime;
+
+
+    /**
+     * 备注
+     */
+    //@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/pay/vo/XiaoyuanPayVo.java

@@ -0,0 +1,82 @@
+package org.dromara.system.domain.pay.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.system.domain.pay.XiaoyuanPay;
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 教职工工资条视图对象 xiaoyuan_pay
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XiaoyuanPay.class)
+public class XiaoyuanPayVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 新闻ID
+     */
+    @ExcelProperty(value = "新闻ID")
+    private Long payId;
+
+    /**
+     * 教职工姓名
+     */
+    @ExcelProperty(value = "教职工姓名")
+    private String teacherName;
+
+    /**
+     * 教职工id
+     */
+    @ExcelProperty(value = "教职工id")
+    private Long teacherId;
+
+    /**
+     * 教职工工号
+     */
+    private String teacherNum;
+
+    /**
+     * 表头
+     */
+    @ExcelProperty(value = "表头")
+    private String tableHead;
+
+    /**
+     * 内容
+     */
+    @ExcelProperty(value = "内容")
+    private String tableDetail;
+
+    /**
+     * 发放时间
+     */
+    private String payTime;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+    /**
+     * 返回 的动态表头数据
+     */
+    @TableField(exist = false)
+    private Map<String,Object> map;
+
+
+
+}

+ 47 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/XiaoYuanPayListener.java

@@ -0,0 +1,47 @@
+package org.dromara.system.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学生成绩自定义导入
+ *
+ * @author Lion Li
+ */
+@Slf4j
+public class XiaoYuanPayListener extends AnalysisEventListener<Map<Integer, String>> {
+    //表头数据(存储所有的表头数据)
+    private List<Map<Integer, String>> headList = new ArrayList<>();
+    //数据体
+    private List<Map<Integer, String>> dataList = new ArrayList<>();
+
+
+    @Override//这里会一行行的返回头
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        //存储全部表头数据
+        headList.add(headMap);
+    }
+
+    @Override// 处理每一行数据
+    public void invoke(Map<Integer, String> data, AnalysisContext context) {
+        dataList.add(data);
+    }
+
+    @Override// 全部处理结束执行
+    public void doAfterAllAnalysed(AnalysisContext context) {
+    }
+
+    public List<Map<Integer, String>> getHeadList() {
+        return headList;
+    }
+
+    public List<Map<Integer, String>> getDataList() {
+        return dataList;
+    }
+
+}

+ 74 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/XiaoYuanPayUtil.java

@@ -0,0 +1,74 @@
+package org.dromara.system.listener;
+
+import com.alibaba.excel.EasyExcelFactory;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 学生成绩导入
+ * @Author: tjf
+ * @Date: 2023/8/31 10:36
+ * @Describe:
+ */
+public class XiaoYuanPayUtil {
+
+    /**
+     * 动态表头导入功能
+     *
+     * @param file 文件
+     * @return
+     */
+    public static List<Map<String, String>> importExcel(MultipartFile file) {
+        try {
+            // 首先校验传入文件是否为空
+            if (file == null) {
+                throw new RuntimeException("传入数据为空");
+            }
+            // 引入监听器(此处需注意,监听器不可被Spring管理)
+            XiaoYuanPayListener readListener = new XiaoYuanPayListener();
+            // 开始处理excel
+            EasyExcelFactory.read(file.getInputStream(), readListener)
+                .sheet(0)
+                .doRead();
+            // 获取表头(验空)
+            List<Map<Integer, String>> headList = readListener.getHeadList();
+            if (CollectionUtils.isEmpty(headList)) {
+                throw new RuntimeException("Excel表头不能为空");
+            }
+            // 获取表数据(验空)
+            List<Map<Integer, String>> dataList = readListener.getDataList();
+            if (CollectionUtils.isEmpty(dataList)) {
+                throw new RuntimeException("Excel数据内容不能为空");
+            }
+            //获取头部,取最后一次解析的列头数据
+            Map<Integer, String> excelHeadIdxNameMap = headList.get(headList.size() - 1);
+           if (!excelHeadIdxNameMap.containsValue("姓名")){
+               throw new RuntimeException("表头不能缺少姓名");
+           }
+            if (!excelHeadIdxNameMap.containsValue("工号")){
+                throw new RuntimeException("表头不能缺少工号");
+            }
+            if (!excelHeadIdxNameMap.containsValue("发放时间")){
+                throw new RuntimeException("表头不能缺少发放时间");
+            }
+            //封装数据体
+            List<Map<String, String>> excelDataList = new ArrayList<Map<String, String>>();
+            for (Map<Integer, String> dataRow : dataList) {
+                HashMap<String, String> rowData = new HashMap<>();
+                excelHeadIdxNameMap.entrySet().forEach(columnHead -> {
+                    rowData.put(columnHead.getValue(), dataRow.get(columnHead.getKey()));
+                });
+                excelDataList.add(rowData);
+            }
+            return excelDataList;
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("导入失败");
+        }
+    }
+}

+ 6 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysConfigMapper.java

@@ -1,5 +1,9 @@
 package org.dromara.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.poi.ss.formula.functions.T;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.system.domain.SysConfig;
 import org.dromara.system.domain.vo.SysConfigVo;
@@ -10,5 +14,6 @@ import org.dromara.system.domain.vo.SysConfigVo;
  * @author Lion Li
  */
 public interface SysConfigMapper extends BaseMapperPlus<SysConfig, SysConfigVo> {
-
+    @InterceptorIgnore(tenantLine = "true")
+    SysConfig getScoreWatermark (String configKey);
 }

+ 16 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/pay/XiaoyuanPayMapper.java

@@ -0,0 +1,16 @@
+package org.dromara.system.mapper.pay;
+
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.pay.XiaoyuanPay;
+import org.dromara.system.domain.pay.vo.XiaoyuanPayVo;
+
+/**
+ * 教职工工资条Mapper接口
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+public interface XiaoyuanPayMapper extends BaseMapperPlus<XiaoyuanPay, XiaoyuanPayVo> {
+
+}

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java

@@ -33,6 +33,13 @@ public interface ISysConfigService {
      */
     String selectConfigByKey(String configKey);
 
+    /**
+     * 根据参数键名查询参数值 不带租户默认系统租户
+     * @param configKey 参数Key
+     * @return
+     */
+    String getScoreWatermark(String configKey);
+
     /**
      * 获取注册开关
      * @param tenantId 租户id

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java

@@ -78,6 +78,20 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
         return StringUtils.EMPTY;
     }
 
+    /**
+     * 根据参数键名查询参数值 不带租户默认系统租户
+     * @param configKey 参数Key
+     * @return
+     */
+    @Override
+    public String getScoreWatermark(String configKey) {
+        SysConfig retConfig = baseMapper.getScoreWatermark(configKey);
+        if (ObjectUtil.isNotNull(retConfig)) {
+            return retConfig.getConfigValue();
+        }
+        return StringUtils.EMPTY;
+    }
+
     /**
      * 获取注册开关
      * @param tenantId 租户id

+ 168 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/pay/XiaoyuanPayServiceImpl.java

@@ -0,0 +1,168 @@
+package org.dromara.system.service.impl.pay;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.pay.XiaoyuanPay;
+import org.dromara.system.domain.pay.bo.XiaoyuanPayBo;
+import org.dromara.system.domain.pay.vo.XiaoyuanPayVo;
+import org.dromara.system.domain.vo.SysDictDataVo;
+import org.dromara.system.mapper.pay.XiaoyuanPayMapper;
+import org.dromara.system.service.impl.SysDictTypeServiceImpl;
+import org.dromara.system.service.pay.IXiaoyuanPayService;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 教职工工资条Service业务层处理
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+@RequiredArgsConstructor
+@Service
+public class XiaoyuanPayServiceImpl implements IXiaoyuanPayService {
+
+    private final XiaoyuanPayMapper baseMapper;
+
+    private final SysDictTypeServiceImpl sysDictTypeService;
+
+    /**
+     * 查询教职工工资条
+     */
+    @Override
+    public XiaoyuanPayVo queryById(Long payId){
+        return baseMapper.selectVoById(payId);
+    }
+
+    /**
+     * 查询教职工工资条列表
+     */
+    @Override
+    public Page<XiaoyuanPayVo> queryPageList(XiaoyuanPayBo bo, PageQuery pageQuery) {
+        Map<String,Object> map =new HashMap<>();
+        LambdaQueryWrapper<XiaoyuanPay> lqw = buildQueryWrapper(bo);
+        Page<XiaoyuanPayVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        //处理的返回值List
+        List<XiaoyuanPayVo> resultList = new ArrayList<>();
+        XiaoyuanPayVo vo = new XiaoyuanPayVo();
+        List<XiaoyuanPayVo> records = result.getRecords();
+        List<String> detailList = new ArrayList<>();
+        if (records!= null && records.size()> 0){
+            map.put("tableLabel",records.get(0).getTableHead());
+            for (XiaoyuanPayVo record : records) {
+                String tableDetail = record.getTableDetail();
+                tableDetail.replace("=",":");
+                detailList.add(tableDetail);
+            }
+            map.put("tableData",detailList);
+        }
+        vo.setMap(map);
+        resultList.add(vo);
+        result.setRecords(resultList);
+        return result;
+    }
+
+    /**
+     * 查询教职工工资条列表
+     */
+    @Override
+    public List<XiaoyuanPayVo> queryList(XiaoyuanPayBo bo) {
+        LambdaQueryWrapper<XiaoyuanPay> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XiaoyuanPay> buildQueryWrapper(XiaoyuanPayBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XiaoyuanPay> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getTeacherName()), XiaoyuanPay::getTeacherName, bo.getTeacherName());
+        lqw.eq(bo.getTeacherId() != null, XiaoyuanPay::getTeacherId, bo.getTeacherId());
+        lqw.eq(StringUtils.isNotBlank(bo.getTableHead()), XiaoyuanPay::getTableHead, bo.getTableHead());
+        lqw.eq(StringUtils.isNotBlank(bo.getTableDetail()), XiaoyuanPay::getTableDetail, bo.getTableDetail());
+        lqw.eq(StringUtils.isNotBlank(bo.getPayTime()), XiaoyuanPay::getPayTime, bo.getPayTime());
+        return lqw;
+    }
+
+    /**
+     * 新增教职工工资条
+     */
+    @Override
+    public Boolean insertByBo(XiaoyuanPayBo bo) {
+        XiaoyuanPay add = MapstructUtils.convert(bo, XiaoyuanPay.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setPayId(add.getPayId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改教职工工资条
+     */
+    @Override
+    public Boolean updateByBo(XiaoyuanPayBo bo) {
+        XiaoyuanPay update = MapstructUtils.convert(bo, XiaoyuanPay.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XiaoyuanPay entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除教职工工资条
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    /**
+     * 教职工工资表导入数据
+     * @param maps
+     */
+    @Override
+    public void importData(List<Map<String, String>> maps) {
+        //去字典值中匹配学科名称 sys_subject
+        List<SysDictDataVo> sysSubject = sysDictTypeService.selectDictDataByType("wages");
+        //工资条所需要的所有表头信息
+        List<Map <String,Object>> sysDictList = new ArrayList<>();
+        for (SysDictDataVo sysDictDataVo : sysSubject) {
+            Map <String,Object> sysDictMap = new HashMap<>();
+            sysDictMap.put("label",sysDictDataVo.getDictLabel());
+            sysDictMap.put("prop",sysDictDataVo.getDictLabel());
+            sysDictList.add(sysDictMap);
+        }
+        List<XiaoyuanPayBo> boList = new ArrayList<>();
+        for (Map<String, String> map : maps) {
+            XiaoyuanPayBo bo = new XiaoyuanPayBo();
+            //组装数据
+            bo.setTeacherName(map.get("姓名"));
+            bo.setTeacherNum(map.get("工号"));
+            bo.setPayTime(map.get("发放时间"));
+            bo.setTableHead(sysDictList.toString());
+            bo.setTableDetail(map.toString());
+            bo.setCreateTime(DateUtils.getNowDate());
+            boList.add(bo);
+        }
+        baseMapper.insertBatch(MapstructUtils.convert(boList,XiaoyuanPay.class));
+    }
+
+}

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/record/RecordLeaveServiceImpl.java

@@ -142,7 +142,6 @@ public class RecordLeaveServiceImpl implements IRecordLeaveService {
     public Boolean insertByBo(RecordLeaveBo bo) {
         RecordLeave add = MapstructUtils.convert(bo, RecordLeave.class);
         validEntityBeforeSave(add);
-        add.setDeptId(LoginHelper.getDeptId());
         add.setSubmitTime(DateUtils.getNowDate());
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {

+ 56 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/pay/IXiaoyuanPayService.java

@@ -0,0 +1,56 @@
+package org.dromara.system.service.pay;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.pay.bo.XiaoyuanPayBo;
+import org.dromara.system.domain.pay.vo.XiaoyuanPayVo;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 教职工工资条Service接口
+ *
+ * @author boman
+ * @date 2023-09-05
+ */
+public interface IXiaoyuanPayService {
+
+    /**
+     * 查询教职工工资条
+     */
+    XiaoyuanPayVo queryById(Long payId);
+
+    /**
+     * 查询教职工工资条列表
+     */
+    Page<XiaoyuanPayVo> queryPageList(XiaoyuanPayBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询教职工工资条列表
+     */
+    List<XiaoyuanPayVo> queryList(XiaoyuanPayBo bo);
+
+    /**
+     * 新增教职工工资条
+     */
+    Boolean insertByBo(XiaoyuanPayBo bo);
+
+    /**
+     * 修改教职工工资条
+     */
+    Boolean updateByBo(XiaoyuanPayBo bo);
+
+    /**
+     * 校验并批量删除教职工工资条信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 教职工工资表导入数据
+     * @param maps
+     */
+    void importData(List<Map<String, String>> maps);
+}

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/pay/XiaoyuanPayMapper.xml

@@ -0,0 +1,7 @@
+<?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="org.dromara.system.mapper.XiaoyuanPayMapper">
+
+</mapper>

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml

@@ -4,4 +4,8 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.SysConfigMapper">
 
+
+    <select id="getScoreWatermark" resultType="org.dromara.system.domain.SysConfig">
+        select * from sys_config where 	 config_key = #{configKey} AND tenant_id = '000000'
+    </select>
 </mapper>