已修改9个文件
107 ■■■■ 文件已修改
src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/system/SysUserDeptMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java
@@ -18,4 +18,7 @@
    private SalesLedgerDto salesLedgerDto;
    private String salesContractNo;
    private String orderNo;
    private String afterSalesServiceNo;
}
src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
@@ -34,6 +34,12 @@
    @ApiOperation("新增/修改人员打卡规则配置")
    @PostMapping("/add")
    public R add(@RequestBody PersonalAttendanceLocationConfig personalAttendanceLocationConfig){
        // 班次需要不能够重复
        if (personalAttendanceLocationConfigService.lambdaQuery().eq(PersonalAttendanceLocationConfig::getShift, personalAttendanceLocationConfig.getShift()).one() != null) {
            return R.fail("班次不能重复");
        }
        return R.ok(personalAttendanceLocationConfigService.saveOrUpdate(personalAttendanceLocationConfig));
    }
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
@@ -8,6 +8,7 @@
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@@ -27,12 +28,17 @@
    @ApiModelProperty(value = "离职备注")
    private String remark;
    @ApiModelProperty(value = "离职日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
    private LocalDate leaveDate;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
@@ -1,6 +1,8 @@
package com.ruoyi.staff.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -119,19 +121,25 @@
        IPage<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShiftPage(page, time, userName, sysDeptId);
        //查询所有班次(打卡规则)
        List<PersonalAttendanceLocationConfig> personalAttendanceLocationConfigs = personalAttendanceLocationConfigMapper.selectList(null);
        mapIPage.getRecords().forEach(i -> {
            String[] shiftTimes = i.getShiftTime().split(";");
        for (PerformanceShiftMapDto i : mapIPage.getRecords()) {
            List<String> shiftTimes = StrUtil.split(i.getShiftTime(), ";");
            if(CollUtil.isEmpty(shiftTimes)){
                continue;
            }
            double totalAttendance = 0;//总出勤天数
            List<Map<String, Object>> map = new ArrayList<>();
            // 分割日期
            for (String shiftTime : shiftTimes) {
                i.setShiftTime(null);
                Map<String, Object> hashMap = new HashMap<>();
                String[] shiftTimeAndShift = shiftTime.split(":");
                List<String> shiftTimeAndShift = StrUtil.split(shiftTime, ":");
                if(CollUtil.isEmpty(shiftTimeAndShift) || shiftTimeAndShift.size() != 3){
                    continue;
                }
                //排班详细数据
                hashMap.put("id", shiftTimeAndShift[2]);
                hashMap.put("shift", shiftTimeAndShift[1]);
                hashMap.put("time", shiftTimeAndShift[0]);
                hashMap.put("id", shiftTimeAndShift.get(2));
                hashMap.put("shift", shiftTimeAndShift.get(1));
                hashMap.put("time", shiftTimeAndShift.get(0));
                map.add(hashMap);
                i.setList(map);
                //汇总的各班次统计数据
@@ -139,20 +147,20 @@
                    if (!i.getMonthlyAttendance().containsKey(personalAttendanceLocationConfig.getShift())){
                        i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), 0);
                    }
                    if (personalAttendanceLocationConfig.getShift().equals(shiftTimeAndShift[1])) {
                    if (personalAttendanceLocationConfig.getShift().equals(shiftTimeAndShift.get(1))) {
                        BigDecimal bigDecimal = new BigDecimal(i.getMonthlyAttendance().get(personalAttendanceLocationConfig.getShift()).toString());
                        i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), bigDecimal.add(new BigDecimal("1")));
                    }
                }
                //统计总出勤天数(早/中/晚/夜)都算出勤,其余都是休息
                if (shiftTimeAndShift[1].contains("早") ||
                        shiftTimeAndShift[1].contains("中") ||
                        shiftTimeAndShift[1].contains("晚") ||
                        shiftTimeAndShift[1].contains("夜")) {
                if (shiftTimeAndShift.get(1).contains("早") ||
                        shiftTimeAndShift.get(1).contains("中") ||
                        shiftTimeAndShift.get(1).contains("晚") ||
                        shiftTimeAndShift.get(1).contains("夜")) {
                    i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 1);
                }
            }
        });
        }
        // 获取header时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.staff.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;
@@ -8,8 +9,10 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.staff.dto.StaffLeaveDto;
import com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.StaffLeaveService;
import lombok.AllArgsConstructor;
@@ -20,6 +23,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
import static com.ruoyi.common.enums.StaffLeaveReason.StaffLeaveReasonOther;
@@ -34,6 +38,9 @@
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private PersonalAttendanceRecordsMapper personalAttendanceRecordsMapper;
    //新增离职列表分页查询
    @Override
@@ -71,6 +78,7 @@
        SysUser sysUser = sysUserMapper.selectUserByUserName(staffOnJob.getStaffNo());
        if (sysUser != null) {
            sysUser.setStatus("1");
            sysUser.setDelFlag("2");
            sysUserMapper.updateUser(sysUser);
        }
@@ -90,6 +98,7 @@
        String reason = staffLeaveDto.getReason();
        leave.setReason(reason);
        leave.setLeaveDate(staffLeaveDto.getLeaveDate());
        // 校验离职原因是否为其他,如果是其他,备注赋值
        if (StaffLeaveReasonOther.getCode().equals(reason)){
            leave.setRemark(staffLeaveDto.getRemark());
@@ -103,6 +112,21 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int del(List<Integer> ids) {
        List<StaffLeave> staffLeaves = staffLeaveMapper.selectBatchIds(ids);
        // 查询离职记录,获取对应的staffOnJobId
        List<Long> staffOnJobIds = staffLeaves.stream()
                .map(StaffLeave::getStaffOnJobId)
                .collect(Collectors.toList());
        // 删除打卡记录
        if (!staffOnJobIds.isEmpty()) {
            personalAttendanceRecordsMapper.delete(new LambdaQueryWrapper<PersonalAttendanceRecords>()
                    .in(PersonalAttendanceRecords::getStaffOnJobId, staffOnJobIds));
        }
        // 删除员工台账
        staffOnJobMapper.deleteBatchIds(staffOnJobIds);
        // 删除离职数据
        return staffLeaveMapper.deleteBatchIds(ids);
    }
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -55,6 +55,9 @@
    private StaffLeaveMapper staffLeaveMapper;
    @Autowired
    private PersonalAttendanceRecordsMapper personalAttendanceRecordsMapper;
    @Autowired
    private SysUserServiceImpl sysUserService;
    @Autowired
@@ -215,6 +218,8 @@
        staffOnJobMapper.deleteBatchIds(ids);
        // 删除离职数据
        staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
        // 删除打卡记录
        personalAttendanceRecordsMapper.delete(Wrappers.<PersonalAttendanceRecords>lambdaQuery().in(PersonalAttendanceRecords::getStaffOnJobId, ids));
        // 删除用户数据
        List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
                .in(SysUser::getUserName, staffOnJobs.stream().map(StaffOnJob::getStaffNo).collect(Collectors.toList())));
src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -12,12 +12,10 @@
import com.ruoyi.project.system.mapper.SysUserDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.staff.dto.CalculateSalaryDto;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.mapper.StaffSalaryDetailMapper;
import com.ruoyi.staff.pojo.SchemeApplicableStaff;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.pojo.StaffSalaryDetail;
import com.ruoyi.staff.pojo.StaffSalaryMain;
import com.ruoyi.staff.pojo.*;
import com.ruoyi.staff.mapper.StaffSalaryMainMapper;
import com.ruoyi.staff.service.StaffSalaryDetailService;
import com.ruoyi.staff.service.StaffSalaryMainService;
@@ -61,6 +59,9 @@
    @Autowired
    private StaffOnJobMapper staffOnJobMapper;
    @Autowired
    private StaffLeaveMapper staffLeaveMapper;
    @Autowired
    private AccountExpenseMapper accountExpenseMapper;
@@ -155,10 +156,21 @@
        if(CollectionUtils.isEmpty(longs)){
            return AjaxResult.error("无员工");
        }
        List<Map<String, Object>> mapList = new ArrayList<>();
        for (Map<String, Object> id : longs) {
            // 判断员工是否为当月离职
            if((Integer) id.get("staffState") == 0){
                StaffLeave id1 = staffLeaveMapper.selectOne(new LambdaQueryWrapper<StaffLeave>()
                        .eq(StaffLeave::getStaffOnJobId, id.get("id"))
                        .like(StaffLeave::getLeaveDate, calculateSalaryDto.getDate()));
                if(id1 == null){
                    continue;
                }
            }
            schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id,calculateSalaryDto.getDate());
            mapList.add(id);
        }
        return AjaxResult.success(longs);
        return AjaxResult.success(mapList);
    }
    public List<Map<String, Object>> setSchemeApplicableStaffUserInfo(List<Long> ids) {
src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml
@@ -11,6 +11,12 @@
        <if test="req.feedbackDate != null">
            AND feedback_date BETWEEN #{req.feedbackDate} AND #{req.feedbackDate}
        </if>
        <if test="req.afterSalesServiceNo != null and req.afterSalesServiceNo != ''">
            AND ass.after_sales_service_no like CONCAT('%', #{req.afterSalesServiceNo}, '%')
        </if>
        <if test="req.orderNo != null and req.orderNo != '' ">
            AND sl.sales_contract_no like CONCAT('%', #{req.orderNo}, '%')
        </if>
        <if test="req.disDate != null">
            AND dis_date BETWEEN #{req.disDate} AND #{req.disDate}
        </if>
src/main/resources/mapper/system/SysUserDeptMapper.xml
@@ -9,7 +9,8 @@
        T1.staff_no as staffNo,
        T1.staff_name as staffName,
        T2.dept_id as deptId,
        T2.dept_name as deptName
        T2.dept_name as deptName,
        T1.staff_state as staffState
        FROM
        staff_on_job T1
        LEFT JOIN sys_dept T2 ON T1.sys_dept_id = T2.dept_id