package com.hxzk.gps.service.impl.Person;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hxzk.gps.controller.Person.Results.PersonResult;
import com.hxzk.gps.controller.Person.dto.PersonTreeTableDto;
import com.hxzk.gps.controller.Role.Results.RoleResult;
import com.hxzk.gps.entity.Log.TbLoginLog;
import com.hxzk.gps.entity.Person.TbPerson;
import com.hxzk.gps.entity.Role.Role;
import com.hxzk.gps.entity.System.TbSystemOperationLog;
import com.hxzk.gps.entity.Tag.TbTag;
import com.hxzk.gps.mapper.Person.TbPersonMapper;
import com.hxzk.gps.result.ListDataResult;
import com.hxzk.gps.result.ResultList;
import com.hxzk.gps.result.ResultTable;
import com.hxzk.gps.result.table;
import com.hxzk.gps.service.Company.TbCompanyService;
import com.hxzk.gps.service.Person.TbPersonService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hxzk.gps.service.System.TbSystemOperationLogService;
import com.hxzk.gps.service.Tag.TbTagService;
import com.hxzk.gps.util.GetUser.UserInfoUtil;
import com.hxzk.gps.util.MessageUtils.MessageUtils;
import com.hxzk.gps.util.Result.ReturnMessage;
import com.hxzk.gps.util.Result.TableDto;
import com.hxzk.gps.controller.System.SystemLogUtil;
import com.hxzk.gps.util.Time.TimeUtil;
import com.hxzk.gps.util.UDP.UDP_Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
*
* 服务实现类
*
*
* @author YuZhiTong
* @since 2025-05-16
*/
@Service
public class TbPersonServiceImpl extends ServiceImpl implements TbPersonService {
@Autowired
TbCompanyService companyService;
@Autowired
public TbSystemOperationLogService systemOperationLogService;
@Autowired
TbPersonMapper personMapper;
@Autowired
TbTagService tagService;
/*@
* 人员列表信息
* @param PersonTreeTableDto 人员参数信息
* @return 人员信息
*/
@Override
public PersonResult FindPersonInfo(PersonTreeTableDto personTreeTableDto) {
// 创建查询包装器
QueryWrapper queryWrapper = new QueryWrapper<>();
// 处理部门 ID 为空的情况
if (StringUtils.isEmpty(personTreeTableDto.getDepartmentId())) {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
queryWrapper.in("companyid", list);
} else {
List list = companyService.getChildCompanyIds(personTreeTableDto.getDepartmentId());
queryWrapper.in("companyid", list);
}
// 处理模糊查询条件 - 使用嵌套条件
if (StringUtils.isNotEmpty(personTreeTableDto.getPTagid())) {
queryWrapper.and(wrapper -> wrapper
.like("p_tagid", personTreeTableDto.getPTagid())
.or()
.like("p_name", personTreeTableDto.getPTagid()));
}
Optional.ofNullable(personTreeTableDto.getPdepartment()).ifPresent(department ->
queryWrapper.like("p_department", department));
Optional.ofNullable(personTreeTableDto.getPonline()).ifPresent(online ->
queryWrapper.like("p_online", online));
// 排序
queryWrapper.orderByDesc("p_tagid");
// 方式1:使用PageHelper的分页查询
Page page = PageHelper.startPage(personTreeTableDto.getPageNum(), personTreeTableDto.getPageSize())
.doSelectPage(() -> baseMapper.selectList(queryWrapper));
// 方式2:或者使用selectPage方法(如果你的baseMapper继承自PageMapper)
// Page page = new Page<>(personTreeTableDto.getPageNum(), personTreeTableDto.getPageSize());
// baseMapper.selectPage(page, queryWrapper);
// 封装角色列表
TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal());
// 获取成功消息
String message = MessageUtils.getMessage("Success");
// 返回结果
return new PersonResult(200, message, tableDto);
}
@Override
public PersonResult FindCarInfo(PersonTreeTableDto personTreeTableDto) {
// 创建查询包装器
QueryWrapper queryWrapper = new QueryWrapper<>();
// 处理部门 ID 为空的情况
if (StringUtils.isEmpty(personTreeTableDto.getDepartmentId())) {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
queryWrapper.in("companyid", list);
} else {
List list = companyService.getChildCompanyIds(personTreeTableDto.getDepartmentId());
queryWrapper.in("companyid", list);
}
// 处理模糊查询条件
Optional.ofNullable(personTreeTableDto.getPName()).ifPresent(pname ->
queryWrapper.like("p_name", pname));
Optional.ofNullable(personTreeTableDto.getPTagid()).ifPresent(ptagid ->
queryWrapper.like("p_tagid", ptagid));
// 添加车辆标签条件
queryWrapper.and(wrapper ->
wrapper.eq("baoliu19", MessageUtils.getMessage("CarTag"))
.or()
.eq("baoliu19", MessageUtils.getMessage("CarTag1")));
// 使用PageHelper进行分页查询
Page page = PageHelper.startPage(personTreeTableDto.getPageNum(), personTreeTableDto.getPageSize())
.doSelectPage(() -> baseMapper.selectList(queryWrapper));
// 封装角色列表
TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal());
// 获取成功消息
String message = MessageUtils.getMessage("Success");
// 返回结果 - 修正构造函数参数
return new PersonResult(200, message, tableDto);
}
@Override
public PersonResult FindMaterialsInfo(PersonTreeTableDto personTreeTableDto) {
// 创建查询包装器
QueryWrapper queryWrapper = new QueryWrapper<>();
// 处理部门 ID 为空的情况
if (StringUtils.isEmpty(personTreeTableDto.getDepartmentId())) {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
queryWrapper.in("companyid", list);
} else {
List list = companyService.getChildCompanyIds(personTreeTableDto.getDepartmentId());
queryWrapper.in("companyid", list);
}
// 处理模糊查询条件
Optional.ofNullable(personTreeTableDto.getPName()).ifPresent(pname ->
queryWrapper.like("p_name", pname));
Optional.ofNullable(personTreeTableDto.getPTagid()).ifPresent(ptagid ->
queryWrapper.like("p_tagid", ptagid));
// 添加物资标签条件
queryWrapper.eq("baoliu19", MessageUtils.getMessage("MaterialsTag"));
// 使用PageHelper进行分页查询
Page page = PageHelper.startPage(personTreeTableDto.getPageNum(), personTreeTableDto.getPageSize())
.doSelectPage(() -> baseMapper.selectList(queryWrapper));
// 封装角色列表
TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal());
// 获取成功消息
String message = MessageUtils.getMessage("Success");
// 返回结果 - 修正构造函数参数
return new PersonResult(200, message, tableDto);
}
@Override
public ResultList PersonPosition() {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
list.add(Long.valueOf(UserInfoUtil.getUserCompanyId()));
List info = personMapper.PersonPosition(list);
return ListDataResult.resultListSuccess(info,MessageUtils.getMessage("Success"));
}
@Override
public ResultList RealPosition() {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
list.add(Long.valueOf(UserInfoUtil.getUserCompanyId()));
List info = personMapper.RealPosition(list);
return ListDataResult.resultListSuccess(info,MessageUtils.getMessage("Success"));
}
@Override
public ResultList RealPosition2D() {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
list.add(Long.valueOf(UserInfoUtil.getUserCompanyId()));
List info = personMapper.RealPosition2D(list);
return ListDataResult.resultListSuccess(info,MessageUtils.getMessage("Success"));
}
@Override
public ReturnMessage add(TbPerson person) {
/*
声明操作状态
* */
boolean isSuccess = false;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("p_tagid",person.getPTagid());
try {
person.setPAddtiem(TimeUtil.GetTime());
baseMapper.update(person,queryWrapper);
UpdateTagCompany(person);
/*
发送指令到CS
* */
UDP_Person.UpPersonToCs(person);
isSuccess = true;
}catch (Exception e){
}
return SystemLogUtil.handleUpdateResult(isSuccess,"PersonAdd",person.getPTagid());
}
@Override
public ReturnMessage update(TbPerson person) {
/*
声明操作状态
* */
boolean isSuccess = false;
if(person.getPTagid().contains(",")){
String TagList =person.getPTagid();
for (int i = 0; i ();
queryWrapper.eq("p_tagid",TagList.split(",")[i]);
try {
person.setPTagid(TagList.split(",")[i]);
person.setPAddtiem(TimeUtil.GetTime());
baseMapper.update(person,queryWrapper);
UpdateTagCompany(person);
/*
发送指令到CS
* */
UDP_Person.UpPersonToCs(person);
isSuccess = true;
}catch (Exception e){
}
}
return SystemLogUtil.handleUpdateResult(isSuccess,"PersonUpdate",TagList);
}else{
//
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("p_tagid",person.getPTagid());
try {
person.setPAddtiem(TimeUtil.GetTime());
baseMapper.update(person,queryWrapper);
UpdateTagCompany(person);
/*
发送指令到CS
* */
UDP_Person.UpPersonToCs(person);
isSuccess = true;
}catch (Exception e){
}
}
return SystemLogUtil.handleUpdateResult(isSuccess,"PersonUpdate",person.getPTagid());
}
@Override
public ReturnMessage delete(TbPerson person) {
/*
声明操作状态
* */
boolean isSuccess = false;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("p_tagid",person.getPTagid());
try {
baseMapper.delete(queryWrapper);
/*
发送指令到CS
* */
UDP_Person.DePersonToCs(person);
isSuccess = true;
}catch (Exception e){
}
return SystemLogUtil.handleDeleteResult(isSuccess,"PersonDelete",person.getPTagid());
}
/*
* 修改设备所属公司
* */
private void UpdateTagCompany(TbPerson person) {
QueryWrapper queryWrapperTag = new QueryWrapper<>();
queryWrapperTag.eq("tag_id", person.getPTagid());
TbTag tag = new TbTag();
tag.setCompany(person.getCompany());
tag.setTagId(person.getPTagid());
tagService.getBaseMapper().update(tag, queryWrapperTag);
}
}