Your Name
2023-01-16 5fc2fc57afc63a906ec5567e91aeab72d20aab7d
service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java
@@ -13,9 +13,11 @@
import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto;
import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto;
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.IUserV1InnerServiceSMO;
import com.java110.po.attendanceClasses.AttendanceClassesPo;
@@ -30,6 +32,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -44,7 +47,6 @@
)
@Java110ParamsDoc(params = {
        @Java110ParamDoc(name = "classId", length = 30, remark = "班次ID"),
        @Java110ParamDoc(name = "staffId", length = 30, remark = "打卡员工"),
        @Java110ParamDoc(name = "checkTime", type = "String", length = 30, remark = "考勤时间 YYYY-MM-DD hh24:mi:ss"),
        @Java110ParamDoc(name = "photo", type = "String", length = 2048, remark = "考勤图片"),
@@ -89,12 +91,14 @@
    @Autowired
    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
    @Autowired
    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "classId", "未包含班次");
        Assert.hasKeyAndValue(reqJson, "staffId", "未包含员工");
        Assert.hasKeyAndValue(reqJson, "clockTime", "未包含考勤时间");
        Assert.hasKeyAndValue(reqJson, "checkTime", "未包含考勤时间");
    }
    @Override
@@ -112,22 +116,44 @@
        Assert.listOnlyOne(storeUserDtos, "员工不存在");
        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
        orgStaffRelDto.setStoreId(storeUserDtos.get(0).getStoreId());
        orgStaffRelDto.setStaffId(reqJson.getString("staffId"));
        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
        if(orgStaffRelDtos == null || orgStaffRelDtos.size() < 1){
            throw new CmdException("员工没有考勤任务");
        }
        List<String> orgIds = new ArrayList<>();
        for(OrgStaffRelDto orgStaffRelDto1: orgStaffRelDtos){
            orgIds.add(orgStaffRelDto1.getOrgId());
        }
        // 考勤班次是否存在
        AttendanceClassesDto attendanceClassesDto = new AttendanceClassesDto();
        attendanceClassesDto.setStoreId(storeUserDtos.get(0).getStoreId());
        attendanceClassesDto.setClassesId(reqJson.getString("classId"));
        attendanceClassesDto.setClassesObjIds(orgIds.toArray(new String[orgIds.size()]));
        List<AttendanceClassesDto> attendanceClassesDtos = attendanceClassesV1InnerServiceSMOImpl.queryAttendanceClassess(attendanceClassesDto);
        Assert.listOnlyOne(attendanceClassesDtos, "班次不存在");
        if(attendanceClassesDtos == null || attendanceClassesDtos.size() < 1){
            throw new CmdException("班次不存在");
        }
       // Assert.listOnlyOne(attendanceClassesDtos, "班次不存在");
        for(AttendanceClassesDto tmpAttendanceClassesDto : attendanceClassesDtos) {
            doCheckInAttendanceLog(context, reqJson, storeUserDtos, userDtos, tmpAttendanceClassesDto);
        }
    }
    private void doCheckInAttendanceLog(ICmdDataFlowContext context, JSONObject reqJson, List<StoreUserDto> storeUserDtos, List<UserDto> userDtos, AttendanceClassesDto attendanceClassesDto) {
        AttendanceLogPo attendanceLogPo = new AttendanceLogPo();
        attendanceLogPo.setLogId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_logId));
        attendanceLogPo.setStoreId(storeUserDtos.get(0).getStoreId());
        attendanceLogPo.setStaffId(reqJson.getString("staffId"));
        attendanceLogPo.setClockTime(reqJson.getString("clockTime"));
        attendanceLogPo.setDepartmentId(attendanceClassesDtos.get(0).getClassesObjId());
        attendanceLogPo.setDepartmentName(attendanceClassesDtos.get(0).getClassesObjName());
        attendanceLogPo.setClockTime(reqJson.getString("checkTime"));
        attendanceLogPo.setDepartmentId(attendanceClassesDto.getClassesObjId());
        attendanceLogPo.setDepartmentName(attendanceClassesDto.getClassesObjName());
        attendanceLogPo.setStaffName(userDtos.get(0).getName());
        int flag = attendanceLogInnerServiceSMOImpl.saveAttendanceLog(attendanceLogPo);
@@ -139,8 +165,8 @@
        // 查询是否为上班
        AttendanceClassesTaskDetailDto attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
        attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("clockTime"));
        attendanceClassesTaskDetailDto.setClassId(reqJson.getString("classId"));
        attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
        attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
        attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
        List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
@@ -165,8 +191,8 @@
        AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo();
        attendanceClassesTaskDetailPo.setDetailId(nowAttendanceClassesTaskDetailDto.getDetailId());
        attendanceClassesTaskDetailPo.setCheckTime(reqJson.getString("clockTime"));
        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("clockTime"))));
        attendanceClassesTaskDetailPo.setCheckTime(reqJson.getString("checkTime"));
        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("checkTime"))));
        attendanceClassesTaskDetailPo.setFacePath(photo);
        flag = attendanceClassesTaskDetailInnerServiceSMOImpl.updateAttendanceClassesTaskDetail(attendanceClassesTaskDetailPo);
@@ -198,23 +224,23 @@
     * 考勤状态计算
     *
     * @param nowAttendanceClassesTaskDetailDto
     * @param clockTime
     * @param checkTime
     * @return
     */
    private String getState(AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto, Date clockTime) {
    private String getState(AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto, Date checkTime) {
        Date value = DateUtil.getDateFromStringA(nowAttendanceClassesTaskDetailDto.getValue());
        if (AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(nowAttendanceClassesTaskDetailDto.getSpecCd())) {
            if (clockTime.after(value)) {
            if (checkTime.after(value)) {
                return AttendanceClassesTaskDetailDto.STATE_LATE;
            }
            return AttendanceClassesTaskDetailDto.STATE_NORMAL;
        }
        if (clockTime.before(value)) {
        if (checkTime.before(value)) {
            return AttendanceClassesTaskDetailDto.STATE_LEAVE;
        }
        return AttendanceClassesTaskDetailDto.STATE_NORMAL;