package com.hxzk.gps.service.impl.Attendance;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hxzk.gps.controller.Attendance.dto.TableSearchResult.TableSearchResult;
import com.hxzk.gps.entity.Attendance.TbKaoqing;
import com.hxzk.gps.entity.Attendance.TbRealkaoqing;
import com.hxzk.gps.entity.Fence.TbFence;
import com.hxzk.gps.mapper.Attendance.TbKaoqingMapper;
import com.hxzk.gps.result.ListDataResult;
import com.hxzk.gps.result.ResultTable;
import com.hxzk.gps.result.table;
import com.hxzk.gps.service.Attendance.TbKaoqingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hxzk.gps.service.Company.TbCompanyService;
import com.hxzk.gps.service.Fence.TbFenceService;
import com.hxzk.gps.util.GetUser.UserInfoUtil;
import com.hxzk.gps.util.MessageUtils.MessageUtils;
import com.hxzk.gps.util.Time.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author YuZhiTong
* @since 2025-05-27
*/
@Service
public class TbKaoqingServiceImpl extends ServiceImpl implements TbKaoqingService {
@Autowired
TbKaoqingMapper KaoqingMapper;
@Autowired
TbFenceService fenceService;
@Autowired
TbCompanyService companyService;
@Override
public ResultTable FindAttendanceInfo(TableSearchResult TableSearchResult) {
PageHelper.startPage(TableSearchResult.getTableList().getPageNum(),TableSearchResult.getTableList().getPageSize());
if (TableSearchResult.getKaoqing().getIntime() == null){
TableSearchResult.getKaoqing().setIntime(TimeUtil.GetYearMonthDay());
}else{
TableSearchResult.getKaoqing().setIntime(TimeUtil.ZhuanDate(TableSearchResult.getKaoqing().getIntime()));
}
PageInfo info = new PageInfo<>(KaoqingMapper.FindAttendanceInfo(UserInfoUtil.getUserCompany(), TableSearchResult.getKaoqing().getIntime(),TableSearchResult.getKaoqing().getName(),TableSearchResult.getKaoqing().getTagid()));
table achortable = new table<>(info.getList(),TableSearchResult.getTableList().getPageNum(),TableSearchResult.getTableList().getPageSize(),info.getTotal());
return ListDataResult.resultTableSuccess(achortable, MessageUtils.getMessage("Success"));
}
@Override
public List FindRealAttendanceInfo(TableSearchResult TableSearchResult) {
List companyname = companyService.getChildCompanyNames(UserInfoUtil.getUserCompany());
QueryWrapper queryWrapperFence = new QueryWrapper<>();
queryWrapperFence.in("company",companyname);
queryWrapperFence.eq("type",MessageUtils.getMessage("Attendance"));
List fenceList = fenceService.getBaseMapper().selectList(queryWrapperFence);
List kaoqin = KaoqingMapper.findKaoQinQuYu();
List filteredKaoqin = new ArrayList<>();
// 遍历 fences 列表
for (TbFence fence : fenceList) {
String fenceName = fence.getName(); // 假设 TbFence 类中有一个 getFenceName 方法
int totalPeople = 0;
// 在 kaoqin 列表中查找当前围栏的实时考勤信息
for (TbRealkaoqing kq : kaoqin) {
if (kq.getArea().equals(fenceName)) { // 假设 TbRealkaoqing 类中有一个 getFenceName 方法
totalPeople = Integer.parseInt(kq.getTagid()); // 假设 TbRealkaoqing 类中有一个 getTotalPeople 方法
break;
}
}
// 创建一个新的 TbRealkaoqing 对象并添加到 filteredKaoqin 列表中
TbRealkaoqing newKq = new TbRealkaoqing();
newKq.setName(fenceName);
newKq.setTagid(String.valueOf(totalPeople));
newKq.setIntime(TimeUtil.GetTime());
filteredKaoqin.add(newKq);
}
return filteredKaoqin;
}
}