java110
2023-06-13 ae42d2da37fe9d161e7058b51367b95f24c3d97a
service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java
@@ -1,10 +1,8 @@
package com.java110.common.cmd.attendanceClasses;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.smo.impl.AttendanceClassesTaskDetailInnerServiceSMOImpl;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.client.FileUploadTemplate;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
@@ -14,17 +12,14 @@
import com.java110.dto.attendanceClasses.AttendanceClassesDto;
import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto;
import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto;
import com.java110.dto.attendanceClassesStaff.AttendanceClassesStaffDto;
import com.java110.dto.attendanceClasses.AttendanceClassesStaffDto;
import com.java110.dto.file.FileDto;
import com.java110.dto.org.OrgStaffRelDto;
import com.java110.dto.store.StoreUserDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.common.*;
import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
import com.java110.intf.store.IStoreInnerServiceSMO;
import com.java110.intf.user.IAttendanceClassesStaffV1InnerServiceSMO;
import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.attendanceClasses.AttendanceClassesPo;
import com.java110.po.attendanceClassesTask.AttendanceClassesTaskPo;
import com.java110.po.attendanceClassesTaskDetail.AttendanceClassesTaskDetailPo;
import com.java110.po.attendanceLog.AttendanceLogPo;
@@ -36,7 +31,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -165,8 +159,8 @@
        attendanceLogPo.setStoreId(storeUserDtos.get(0).getStoreId());
        attendanceLogPo.setStaffId(reqJson.getString("staffId"));
        attendanceLogPo.setClockTime(reqJson.getString("checkTime"));
        attendanceLogPo.setDepartmentId(attendanceClassesDto.getClassesObjId());
        attendanceLogPo.setDepartmentName(attendanceClassesDto.getClassesObjName());
        attendanceLogPo.setDepartmentId(attendanceClassesDto.getClassesId());
        attendanceLogPo.setDepartmentName(attendanceClassesDto.getClassesName());
        attendanceLogPo.setStaffName(userDtos.get(0).getName());
        attendanceLogPo.setFacePath(photo);
@@ -182,10 +176,27 @@
        attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
        attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
        attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
        attendanceClassesTaskDetailDto.setState(AttendanceClassesTaskDetailDto.STATE_WAIT);
        List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
        if (attendanceClassesTaskDetailDtos == null || attendanceClassesTaskDetailDtos.size() < 1) {
            context.setResponseEntity(ResultVo.error("不是考勤范围内"));
            attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
            attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
            attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
            attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
            attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
            if (attendanceClassesTaskDetailDtos != null && attendanceClassesTaskDetailDtos.size() > 0) {
                String specName = "上班:";
                if (!AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(attendanceClassesTaskDetailDtos.get(0).getSpecCd())) {
                    specName = "下班:";
                }
                updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "重复打卡");
                context.setResponseEntity(ResultVo.error("重复打卡"));
                return;
            }
            updateAttendanceLogRemark(attendanceLogPo.getLogId(), "未到时间");
            context.setResponseEntity(ResultVo.error("未到时间"));
            return;
        }
@@ -199,8 +210,13 @@
        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("checkTime"))));
        attendanceClassesTaskDetailPo.setFacePath(photo);
        flag = attendanceClassesTaskDetailInnerServiceSMOImpl.updateAttendanceClassesTaskDetail(attendanceClassesTaskDetailPo);
        String specName = "上班:";
        if (!AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(nowAttendanceClassesTaskDetailDto.getSpecCd())) {
            specName = "下班:";
        }
        if (flag < 1) {
            updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "考勤失败");
            throw new CmdException("考勤失败");
        }
@@ -219,9 +235,30 @@
        flag = attendanceClassesTaskInnerServiceSMOImpl.updateAttendanceClassesTask(attendanceClassesTaskPo);
        if (flag < 1) {
            throw new CmdException("考勤失败");
//        if (flag < 1) {
//            updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "考勤失败");
//            throw new CmdException("考勤失败");
//        }
        String msg = "打卡成功";
        if (AttendanceClassesTaskDetailDto.STATE_LATE.equals(attendanceClassesTaskDetailPo.getState())) {
            msg = "打卡迟到";
        }
        if (AttendanceClassesTaskDetailDto.STATE_LEAVE.equals(attendanceClassesTaskDetailPo.getState())) {
            msg = "打卡早退";
        }
        updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + msg);
        context.setResponseEntity(ResultVo.createResponseEntity(ResultVo.CODE_OK, msg));
    }
    private void updateAttendanceLogRemark(String logId, String remark) {
        AttendanceLogPo attendanceLogPo = new AttendanceLogPo();
        attendanceLogPo.setLogId(logId);
        attendanceLogPo.setRemark(remark.length() > 1000 ? remark.substring(0, 1000) : remark);
        attendanceLogInnerServiceSMOImpl.updateAttendanceLog(attendanceLogPo);
    }
    /**