This commit is contained in:
2026-04-11 19:11:08 +08:00
parent 62ffe1b5c3
commit 36758e0039
11 changed files with 412 additions and 154 deletions

View File

@ -29,4 +29,6 @@ public class TbZdyFgrwDkDto {
@ApiModelProperty(value = "打卡图片") @ApiModelProperty(value = "打卡图片")
private String dktp; private String dktp;
} }

View File

@ -16,7 +16,7 @@ import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("tb_zdy_fgrwlq") @TableName("tb_zdy_fgrwlq")
@ApiModel(value = "TbZdyFgrwlq 对象", description = "巡逻方格任务领取") @ApiModel(value = "TbZdyFgrwlq 对象", description = "巡逻方格任务领取")
public class TbZdyFgrwlq extends BaseEntity implements Serializable, Cloneable { public class TbZdyFgrwlq extends BaseEntity implements Serializable, Cloneable {
@ -29,6 +29,9 @@ public class TbZdyFgrwlq extends BaseEntity implements Serializable, Cloneable {
@ApiModelProperty(value = "方格任务id") @ApiModelProperty(value = "方格任务id")
private String fgrwid; private String fgrwid;
@ApiModelProperty(value = "报备id")
private String bbid;
@ApiModelProperty(value = "方格任务状态D_BZ_QWRWZT 01领取 02已领取 03已完成") @ApiModelProperty(value = "方格任务状态D_BZ_QWRWZT 01领取 02已领取 03已完成")
private String fgrwzt; private String fgrwzt;

View File

@ -42,7 +42,7 @@ public class TbZdyFgrwlqdk extends BaseEntity implements Serializable, Cloneable
@ApiModelProperty(value = "打卡人身份证号") @ApiModelProperty(value = "打卡人身份证号")
private String darsfzh; private String darsfzh;
@ApiModelProperty(value = "打卡秃瓢") @ApiModelProperty(value = "打卡图片")
private String dktp; private String dktp;
@ApiModelProperty(value = "打卡时间") @ApiModelProperty(value = "打卡时间")
@ -73,4 +73,18 @@ public class TbZdyFgrwlqdk extends BaseEntity implements Serializable, Cloneable
@ApiModelProperty(value = "所属市公安局代码") @ApiModelProperty(value = "所属市公安局代码")
private String sssgajdm; private String sssgajdm;
@ApiModelProperty(value = "离开图片")
private String lktp;
@ApiModelProperty(value = "离开时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lksj;
@ApiModelProperty(value = "离开经度")
private BigDecimal lkjd;
@ApiModelProperty(value = "离开纬度")
private BigDecimal lkwd;
} }

View File

@ -35,4 +35,7 @@ public class TbZdyFgrwQuery extends BasePage {
@ApiModelProperty(value = "任务领取人id") @ApiModelProperty(value = "任务领取人id")
private String fgrwlqrid; private String fgrwlqrid;
@ApiModelProperty(value = "报备id")
private String bbid;
} }

View File

@ -6,7 +6,6 @@ import com.google.common.collect.Maps;
import com.mosty.base.model.dto.wzzx.LocationConvertDTO; import com.mosty.base.model.dto.wzzx.LocationConvertDTO;
import com.mosty.base.model.dto.wzzx.LocationInfo; import com.mosty.base.model.dto.wzzx.LocationInfo;
import com.mosty.base.model.entity.wzzx.TbWzSswz; import com.mosty.base.model.entity.wzzx.TbWzSswz;
import com.mosty.base.utils.CoordinateTransform;
import com.mosty.base.utils.CoordinateUtils; import com.mosty.base.utils.CoordinateUtils;
import com.mosty.base.utils.DateUtils; import com.mosty.base.utils.DateUtils;
import com.mosty.common.base.domain.BaseController; import com.mosty.common.base.domain.BaseController;
@ -101,29 +100,22 @@ public class LocationInfoController extends BaseController {
locationInfo.setSourceName("移动设备"); locationInfo.setSourceName("移动设备");
locationInfo.setSourceCode("02"); locationInfo.setSourceCode("02");
// Long startTime = System.currentTimeMillis(); // Long startTime = System.currentTimeMillis();
// 入库之前将坐标进行转换 // 保存原始坐标
locationInfo.setSourceLat(locationInfo.getLat()); locationInfo.setSourceLat(locationInfo.getLat());
locationInfo.setSourceLng(locationInfo.getLng()); locationInfo.setSourceLng(locationInfo.getLng());
// double[] transfromPonint = CoordinateTransform.transformGCJ02ToWGS84(locationInfo.getLng(), // 只保留8位小数
// locationInfo.getLat()); BigDecimal reLngBd = BigDecimal.valueOf(locationInfo.getLng());
// // 只保留8位小数 double reLngDouble = reLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
// BigDecimal reLngBd = BigDecimal.valueOf(transfromPonint[0]); locationInfo.setLng(reLngDouble);
// double reLngDouble = reLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); BigDecimal reLatBd = BigDecimal.valueOf(locationInfo.getLat());
// locationInfo.setLng(reLngDouble); double reLatDouble = reLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
// // 只保留8位小数 locationInfo.setLat(reLatDouble);
// BigDecimal reLatBd = BigDecimal.valueOf(transfromPonint[1]); // 上次坐标精度处理
// double reLatDouble = reLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
// locationInfo.setLat(reLatDouble);
//上传坐标转行
if (locationInfo.getLastLng() != null && locationInfo.getLastLat() != null) { if (locationInfo.getLastLng() != null && locationInfo.getLastLat() != null) {
double[] lastTransfromPonint = CoordinateTransform.transformGCJ02ToWGS84(locationInfo.getLastLng(), BigDecimal lastReLngBd = BigDecimal.valueOf(locationInfo.getLastLng());
locationInfo.getLastLat());
// 只保留8位小数
BigDecimal lastReLngBd = BigDecimal.valueOf(lastTransfromPonint[0]);
double lastReLngDouble = lastReLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); double lastReLngDouble = lastReLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
locationInfo.setLastLng(lastReLngDouble); locationInfo.setLastLng(lastReLngDouble);
// 只保留8位小数 BigDecimal lastReLatBd = BigDecimal.valueOf(locationInfo.getLastLat());
BigDecimal lastReLatBd = BigDecimal.valueOf(lastTransfromPonint[1]);
double lastReLatDouble = lastReLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); double lastReLatDouble = lastReLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue();
locationInfo.setLastLat(lastReLatDouble); locationInfo.setLastLat(lastReLatDouble);
} }
@ -132,7 +124,6 @@ public class LocationInfoController extends BaseController {
} }
//实时存储位置 //实时存储位置
locationInfoService.locationReceive(locationInfo); locationInfoService.locationReceive(locationInfo);
Long endTime = System.currentTimeMillis();
locationInfo.setLastLat(locationInfo.getLat()); locationInfo.setLastLat(locationInfo.getLat());
locationInfo.setLastLng(locationInfo.getLng()); locationInfo.setLastLng(locationInfo.getLng());
return ResponseResult.success("添加成功", locationInfo); return ResponseResult.success("添加成功", locationInfo);

View File

@ -57,8 +57,6 @@ public class LocationInfoServiceImpl extends ServiceImpl<TbWzXfwzMapper, TbWzXfw
long sswzTime = 0; long sswzTime = 0;
long lswzTime = 0; long lswzTime = 0;
long xfbbTime = 0; long xfbbTime = 0;
//经度、纬度为空不接收数据 //经度、纬度为空不接收数据
try { try {
if (locationInfo.getLng() == null && locationInfo.getLat() == null) { if (locationInfo.getLng() == null && locationInfo.getLat() == null) {
@ -301,9 +299,9 @@ public class LocationInfoServiceImpl extends ServiceImpl<TbWzXfwzMapper, TbWzXfw
} }
String redisKey = Constant.WZ_XFWZ + locationInfo.getBbid(); String redisKey = Constant.WZ_XFWZ + locationInfo.getBbid();
//直接去redis存在问题 20240307 //直接去redis存在问题 20240307
TbWzXfwz xfwz = redisService.getCacheObject(redisKey); // TbWzXfwz xfwz = redisService.getCacheObject(redisKey);
Integer lc = 0; Integer lc = 0;
// TbWzXfwz xfwz = this.baseMapper.queryByBbid(locationInfo.getBbid()); TbWzXfwz xfwz = this.baseMapper.queryByBbid(locationInfo.getBbid());
if (ObjectUtils.isEmpty(xfwz)) { if (ObjectUtils.isEmpty(xfwz)) {
xfwz = new TbWzXfwz(); xfwz = new TbWzXfwz();
} }

View File

@ -57,6 +57,7 @@ public class TbWzLswzServiceImpl extends ServiceImpl<TbWzSswzMapper, TbWzSswz> i
if (StringUtils.isNotBlank(locationInfo.getUserId())) { if (StringUtils.isNotBlank(locationInfo.getUserId())) {
sjly = sjly + "-" + locationInfo.getUserId(); sjly = sjly + "-" + locationInfo.getUserId();
} }
lswz.setId(UUIDGenerator.getUUID());
lswz.setSjly(sjly); lswz.setSjly(sjly);
lswz.setSjlydm("02"); lswz.setSjlydm("02");
lswz.setYwid(locationInfo.getBbid()); lswz.setYwid(locationInfo.getBbid());

View File

@ -4,8 +4,11 @@ package com.mosty.yjzl.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwLkDto;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqdkQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwlqdkVO;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO; import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO;
import com.mosty.common.base.domain.ResponseResult; import com.mosty.common.base.domain.ResponseResult;
import com.mosty.common.token.JwtSysUser; import com.mosty.common.token.JwtSysUser;
@ -88,4 +91,25 @@ public class TbZdyFgrwController {
public ResponseResult<Boolean> zdyRwdk(@RequestBody TbZdyFgrwDkDto dto) { public ResponseResult<Boolean> zdyRwdk(@RequestBody TbZdyFgrwDkDto dto) {
return ResponseResult.success(tbZdyFgrwService.zdyRwdk(dto)); return ResponseResult.success(tbZdyFgrwService.zdyRwdk(dto));
} }
@ApiOperation(value = "自定义任务离开打卡")
@PostMapping("/zdyLkdk")
@JwtSysUser
public ResponseResult<Boolean> zdyLkdk(@RequestBody TbZdyFgrwLkDto dto) {
return ResponseResult.success(tbZdyFgrwService.zdyLkdk(dto));
}
@ApiOperation(value = "打卡记录分页查询")
@GetMapping("/selectDkList")
@JwtSysUser
public ResponseResult<IPage<TbZdyFgrwlqdkVO>> selectDkList(TbZdyFgrwlqdkQuery query) {
return ResponseResult.success(tbZdyFgrwService.selectDkList(query));
}
@ApiOperation(value = "根据报备ID查询任务详情列表")
@GetMapping("/getFgrwListByBbid")
@JwtSysUser
public ResponseResult<List<TbZdyFgrwVO>> getFgrwListByBbid(TbZdyFgrwQuery query) {
return ResponseResult.success(tbZdyFgrwService.getFgrwListByBbid(query));
}
} }

View File

@ -8,12 +8,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwLkDto;
import com.mosty.base.model.entity.qwzx.TbQwXfbb; import com.mosty.base.model.entity.qwzx.TbQwXfbb;
import com.mosty.base.model.entity.yjzl.zddw.*; import com.mosty.base.model.entity.yjzl.zddw.TbZdyFgbxd;
import com.mosty.base.model.entity.yjzl.zddw.TbZdyFgrw;
import com.mosty.base.model.entity.yjzl.zddw.TbZdyFgrwlq;
import com.mosty.base.model.entity.yjzl.zddw.TbZdyFgrwlqdk;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgdw;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqdkQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery;
import com.mosty.base.model.vo.base.DeptInfoVo; import com.mosty.base.model.vo.base.DeptInfoVo;
import com.mosty.base.model.vo.yjzl.TbZdxlFgdwVO; import com.mosty.base.model.vo.yjzl.TbZdxlFgdwVO;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwlqdkVO;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO; import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO;
import com.mosty.base.utils.*; import com.mosty.base.utils.*;
import com.mosty.common.base.exception.BusinessException; import com.mosty.common.base.exception.BusinessException;
@ -43,27 +50,28 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
private final TbZdxlFgdwMapper tbZdxlFgdwMapper; private final TbZdxlFgdwMapper tbZdxlFgdwMapper;
private final TbZdyFgrwlqdkMapper tbZdyFgrwlqdkMapper; private final TbZdyFgrwlqdkMapper tbZdyFgrwlqdkMapper;
private final TbQwzxAdaptRemoteService tbQwzxAdaptRemoteService; private final TbQwzxAdaptRemoteService tbQwzxAdaptRemoteService;
@Override @Override
public Boolean addTbZdyrw(TbZdyFgrwDto dto) { public Boolean addTbZdyrw(TbZdyFgrwDto dto) {
UserInfo user = UserInfoManager.get(); UserInfo user = UserInfoManager.get();
TbZdyFgrw fgrw = new TbZdyFgrw(); TbZdyFgrw fgrw = new TbZdyFgrw();
BeanUtils.copyProperties(dto,fgrw); BeanUtils.copyProperties(dto, fgrw);
fgrw.setId(UUIDGenerator.getUUID()); fgrw.setId(UUIDGenerator.getUUID());
fgrw.setFgrwzt("01"); fgrw.setFgrwzt("01");
if(Objects.isNull(dto.getXfrq())){ if (Objects.isNull(dto.getXfrq())) {
fgrw.setXfrq(new Date()); fgrw.setXfrq(new Date());
} }
TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId()); TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId());
if(Objects.nonNull(tbZdxlFgdw)){ if (Objects.nonNull(tbZdxlFgdw)) {
fgrw.setFgmc(tbZdxlFgdw.getMc1()); fgrw.setFgmc(tbZdxlFgdw.getMc1());
fgrw.setXfbm(tbZdxlFgdw.getSsbm()); fgrw.setXfbm(tbZdxlFgdw.getSsbm());
fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm()); fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm());
} }
if(StringUtils.isEmpty(dto.getSsbmdm())){ if (StringUtils.isEmpty(dto.getSsbmdm())) {
dto.setSsbmdm(user.getDeptCode()); dto.setSsbmdm(user.getDeptCode());
} }
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm()); DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm());
if(Objects.nonNull(dept)){ if (Objects.nonNull(dept)) {
fgrw.setSsbm(dept.getDeptname()); fgrw.setSsbm(dept.getDeptname());
fgrw.setSsbmdm(dept.getDeptcode()); fgrw.setSsbmdm(dept.getDeptcode());
fgrw.setSsxgajdm(dept.getFxjcode()); fgrw.setSsxgajdm(dept.getFxjcode());
@ -72,10 +80,10 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
fgrw.setSssgajdm(dept.getDszcode()); fgrw.setSssgajdm(dept.getDszcode());
} }
this.baseMapper.insert(fgrw); this.baseMapper.insert(fgrw);
if(!CollectionUtils.isEmpty(dto.getDtoList())){ if (!CollectionUtils.isEmpty(dto.getDtoList())) {
dto.getDtoList().forEach(tbZdyFgbxdDto -> { dto.getDtoList().forEach(tbZdyFgbxdDto -> {
TbZdyFgbxd bxd = new TbZdyFgbxd(); TbZdyFgbxd bxd = new TbZdyFgbxd();
BeanUtils.copyProperties(tbZdyFgbxdDto,bxd); BeanUtils.copyProperties(tbZdyFgbxdDto, bxd);
bxd.setId(UUIDGenerator.getUUID()); bxd.setId(UUIDGenerator.getUUID());
bxd.setFgrwid(fgrw.getId()); bxd.setFgrwid(fgrw.getId());
this.tbZdyFgbxdMapper.insert(bxd); this.tbZdyFgbxdMapper.insert(bxd);
@ -88,21 +96,21 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
public Boolean editTbZdyrw(TbZdyFgrwDto dto) { public Boolean editTbZdyrw(TbZdyFgrwDto dto) {
UserInfo user = UserInfoManager.get(); UserInfo user = UserInfoManager.get();
TbZdyFgrw fgrw = new TbZdyFgrw(); TbZdyFgrw fgrw = new TbZdyFgrw();
BeanUtils.copyProperties(dto,fgrw); BeanUtils.copyProperties(dto, fgrw);
if(Objects.isNull(dto.getXfrq())){ if (Objects.isNull(dto.getXfrq())) {
fgrw.setXfrq(new Date()); fgrw.setXfrq(new Date());
} }
TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId()); TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId());
if(Objects.nonNull(tbZdxlFgdw)){ if (Objects.nonNull(tbZdxlFgdw)) {
fgrw.setFgmc(tbZdxlFgdw.getMc1()); fgrw.setFgmc(tbZdxlFgdw.getMc1());
fgrw.setXfbm(tbZdxlFgdw.getSsbm()); fgrw.setXfbm(tbZdxlFgdw.getSsbm());
fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm()); fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm());
} }
if(StringUtils.isEmpty(dto.getSsbmdm())){ if (StringUtils.isEmpty(dto.getSsbmdm())) {
dto.setSsbmdm(user.getDeptCode()); dto.setSsbmdm(user.getDeptCode());
} }
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm()); DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm());
if(Objects.nonNull(dept)){ if (Objects.nonNull(dept)) {
fgrw.setSsbm(dept.getDeptname()); fgrw.setSsbm(dept.getDeptname());
fgrw.setSsbmdm(dept.getDeptcode()); fgrw.setSsbmdm(dept.getDeptcode());
fgrw.setSsxgajdm(dept.getFxjcode()); fgrw.setSsxgajdm(dept.getFxjcode());
@ -113,12 +121,12 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
this.baseMapper.updateById(fgrw); this.baseMapper.updateById(fgrw);
this.tbZdyFgbxdMapper.delete( this.tbZdyFgbxdMapper.delete(
new LambdaQueryWrapper<TbZdyFgbxd>() new LambdaQueryWrapper<TbZdyFgbxd>()
.eq(TbZdyFgbxd::getFgrwid,fgrw.getId()) .eq(TbZdyFgbxd::getFgrwid, fgrw.getId())
); );
if(!CollectionUtils.isEmpty(dto.getDtoList())){ if (!CollectionUtils.isEmpty(dto.getDtoList())) {
dto.getDtoList().forEach(tbZdyFgbxdDto -> { dto.getDtoList().forEach(tbZdyFgbxdDto -> {
TbZdyFgbxd bxd = new TbZdyFgbxd(); TbZdyFgbxd bxd = new TbZdyFgbxd();
BeanUtils.copyProperties(tbZdyFgbxdDto,bxd); BeanUtils.copyProperties(tbZdyFgbxdDto, bxd);
bxd.setId(UUIDGenerator.getUUID()); bxd.setId(UUIDGenerator.getUUID());
bxd.setFgrwid(fgrw.getId()); bxd.setFgrwid(fgrw.getId());
this.tbZdyFgbxdMapper.insert(bxd); this.tbZdyFgbxdMapper.insert(bxd);
@ -137,27 +145,27 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
UserInfo userInfo = UserInfoManager.get(); UserInfo userInfo = UserInfoManager.get();
query.setSsbmdm(this.tbBaseAdaptRemoteService.getSsbm(query.getSsbmdm(), null)); query.setSsbmdm(this.tbBaseAdaptRemoteService.getSsbm(query.getSsbmdm(), null));
IPage<TbZdyFgrw> page = this.baseMapper.selectPage( IPage<TbZdyFgrw> page = this.baseMapper.selectPage(
new Page<>(query.getPageCurrent(),query.getPageSize()), new Page<>(query.getPageCurrent(), query.getPageSize()),
new LambdaQueryWrapper<TbZdyFgrw>() new LambdaQueryWrapper<TbZdyFgrw>()
.like(StringUtils.isNotEmpty(query.getFgRwmc()),TbZdyFgrw::getFgRwmc,query.getFgRwmc()) .like(StringUtils.isNotEmpty(query.getFgRwmc()), TbZdyFgrw::getFgRwmc, query.getFgRwmc())
.likeRight(StringUtils.isNotEmpty(query.getSsbmdm()),TbZdyFgrw::getSsbmdm,query.getSsbmdm()) .likeRight(StringUtils.isNotEmpty(query.getSsbmdm()), TbZdyFgrw::getSsbmdm, query.getSsbmdm())
.eq(StringUtils.isNotEmpty(query.getXfbmdm()),TbZdyFgrw::getXfbmdm,query.getXfbmdm()) .eq(StringUtils.isNotEmpty(query.getXfbmdm()), TbZdyFgrw::getXfbmdm, query.getXfbmdm())
.eq(StringUtils.isNotEmpty(query.getFgrwzt()),TbZdyFgrw::getFgrwzt,query.getFgrwzt()) .eq(StringUtils.isNotEmpty(query.getFgrwzt()), TbZdyFgrw::getFgrwzt, query.getFgrwzt())
.orderByDesc(TbZdyFgrw::getXfrq) .orderByDesc(TbZdyFgrw::getXtCjsj)
); );
List<TbZdyFgrwVO> voList = new ArrayList<>(); List<TbZdyFgrwVO> voList = new ArrayList<>();
if(!CollectionUtils.isEmpty(page.getRecords())){ if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().forEach(tbZdyFgrw -> { page.getRecords().forEach(tbZdyFgrw -> {
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne( TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>() new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId())
.eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) // .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId())
.last(" limit 1 ") .last(" limit 1 ")
); );
TbZdyFgrwVO vo = new TbZdyFgrwVO(); TbZdyFgrwVO vo = new TbZdyFgrwVO();
BeanUtils.copyProperties(tbZdyFgrw,vo); BeanUtils.copyProperties(tbZdyFgrw, vo);
vo.setFgrwzt(tbZdyFgrw.getFgrwzt()); vo.setFgrwzt(tbZdyFgrw.getFgrwzt());
if(Objects.nonNull(rwlq)){ if (Objects.nonNull(rwlq)) {
vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqr(rwlq.getFgrwlqr());
vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrid(rwlq.getFgrwlqrid());
vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh());
@ -166,7 +174,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
voList.add(vo); voList.add(vo);
}); });
} }
IPage<TbZdyFgrwVO> pageVo = new Page<>(page.getCurrent(),page.getSize()); IPage<TbZdyFgrwVO> pageVo = new Page<>(page.getCurrent(), page.getSize());
pageVo.setTotal(page.getTotal()); pageVo.setTotal(page.getTotal());
pageVo.setRecords(voList); pageVo.setRecords(voList);
return pageVo; return pageVo;
@ -185,35 +193,37 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
// ); // );
// List<String> ids = mylqs.stream().map(TbZdyFgrwlq::getFgrwid).collect(Collectors.toList()); // List<String> ids = mylqs.stream().map(TbZdyFgrwlq::getFgrwid).collect(Collectors.toList());
//今日待领取任务 //今日待领取任务
IPage<TbZdyFgrw> page = this.baseMapper.selectPage( IPage<TbZdyFgrw> page = new Page<>();
new Page<>(query.getPageCurrent(),query.getPageSize()),
new LambdaQueryWrapper<TbZdyFgrw>()
.like(StringUtils.isNotEmpty(query.getFgRwmc()),TbZdyFgrw::getFgRwmc,query.getFgRwmc())
.likeRight(StringUtils.isNotEmpty(query.getSsbmdm()),TbZdyFgrw::getSsbmdm,query.getSsbmdm())
.eq(StringUtils.isNotEmpty(query.getXfbmdm()),TbZdyFgrw::getXfbmdm,query.getXfbmdm())
.eq(TbZdyFgrw::getXfrq,DateUtils.getNowDate())
.eq(TbZdyFgrw::getFgrwzt,"01")
// .notIn(!CollectionUtils.isEmpty(ids),TbZdyFgrw::getId,ids)
.orderByDesc(TbZdyFgrw::getXfrq)
);
//历史任务(自己已领取任务) //历史任务(自己已领取任务)
if("02".equals(query.getAppRwlx())){ if ("02".equals(query.getAppRwlx())) {
IPage<TbZdyFgrw> pageDto = PageUtils.buildPage(query.getPageSize(),query.getPageCurrent()); IPage<TbZdyFgrw> pageDto = PageUtils.buildPage(query.getPageSize(), query.getPageCurrent());
page = this.baseMapper.getLqfgrw(pageDto,query); page = this.baseMapper.getLqfgrw(pageDto, query);
} else {
page = this.baseMapper.selectPage(
new Page<>(query.getPageCurrent(), query.getPageSize()),
new LambdaQueryWrapper<TbZdyFgrw>()
.like(StringUtils.isNotEmpty(query.getFgRwmc()), TbZdyFgrw::getFgRwmc, query.getFgRwmc())
.likeRight(StringUtils.isNotEmpty(query.getSsbmdm()), TbZdyFgrw::getSsbmdm, query.getSsbmdm())
.eq(StringUtils.isNotEmpty(query.getXfbmdm()), TbZdyFgrw::getXfbmdm, query.getXfbmdm())
.eq(TbZdyFgrw::getXfrq, DateUtils.getNowDate())
.eq(TbZdyFgrw::getFgrwzt, "01")
// .notIn(!CollectionUtils.isEmpty(ids),TbZdyFgrw::getId,ids)
.orderByDesc(TbZdyFgrw::getXtCjsj)
);
} }
List<TbZdyFgrwVO> voList = new ArrayList<>(); List<TbZdyFgrwVO> voList = new ArrayList<>();
if(!CollectionUtils.isEmpty(page.getRecords())){ if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().forEach(tbZdyFgrw -> { page.getRecords().forEach(tbZdyFgrw -> {
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne( TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>() new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId())
.eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId())
.last(" limit 1 ") .last(" limit 1 ")
); );
TbZdyFgrwVO vo = new TbZdyFgrwVO(); TbZdyFgrwVO vo = new TbZdyFgrwVO();
BeanUtils.copyProperties(tbZdyFgrw,vo); BeanUtils.copyProperties(tbZdyFgrw, vo);
vo.setFgrwzt("01"); vo.setFgrwzt("01");
if(Objects.nonNull(rwlq)){ if (Objects.nonNull(rwlq)) {
vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqr(rwlq.getFgrwlqr());
vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrid(rwlq.getFgrwlqrid());
vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh());
@ -222,7 +232,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
voList.add(vo); voList.add(vo);
}); });
} }
IPage<TbZdyFgrwVO> pageVo = new Page<>(page.getCurrent(),page.getSize()); IPage<TbZdyFgrwVO> pageVo = new Page<>(page.getCurrent(), page.getSize());
pageVo.setTotal(page.getTotal()); pageVo.setTotal(page.getTotal());
pageVo.setRecords(voList); pageVo.setRecords(voList);
return pageVo; return pageVo;
@ -233,15 +243,15 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
TbZdyFgrwVO vo = new TbZdyFgrwVO(); TbZdyFgrwVO vo = new TbZdyFgrwVO();
UserInfo userInfo = UserInfoManager.get(); UserInfo userInfo = UserInfoManager.get();
TbZdyFgrw tbZdyFgrw = this.baseMapper.selectById(query.getFgrwid()); TbZdyFgrw tbZdyFgrw = this.baseMapper.selectById(query.getFgrwid());
if(Objects.isNull(tbZdyFgrw)) throw new BusinessException("方格任务不存在!"); if (Objects.isNull(tbZdyFgrw)) throw new BusinessException("方格任务不存在!");
BeanUtils.copyProperties(tbZdyFgrw,vo); BeanUtils.copyProperties(tbZdyFgrw, vo);
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne( TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>() new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId())
.eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId())
.last(" limit 1 ") .last(" limit 1 ")
); );
if(Objects.nonNull(rwlq)){ if (Objects.nonNull(rwlq)) {
vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqr(rwlq.getFgrwlqr());
vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrid(rwlq.getFgrwlqrid());
vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh());
@ -249,39 +259,46 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
} }
List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList( List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList(
new LambdaQueryWrapper<TbZdyFgbxd>() new LambdaQueryWrapper<TbZdyFgbxd>()
.eq(TbZdyFgbxd::getFgrwid,query.getFgrwid()) .eq(TbZdyFgbxd::getFgrwid, query.getFgrwid())
); );
if(!CollectionUtils.isEmpty(bxds)){ if (!CollectionUtils.isEmpty(bxds)) {
List<Map<String,Object>> bxddks = new ArrayList<>(); List<Map<String, Object>> bxddks = new ArrayList<>();
bxds.forEach( bxd ->{ bxds.forEach(bxd -> {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("bxdMc",bxd.getBxdMc()); map.put("bxdMc", bxd.getBxdMc());
TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne( TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlqdk>() new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.eq(TbZdyFgrwlqdk::getFgbxdid,bxd.getId()) .eq(TbZdyFgrwlqdk::getFgbxdid, bxd.getId())
.eq(TbZdyFgrwlqdk::getFgrwid,tbZdyFgrw.getId()) .eq(TbZdyFgrwlqdk::getFgrwid, tbZdyFgrw.getId())
.eq(TbZdyFgrwlqdk::getDkrid,userInfo.getUserId().toString()) // .eq(TbZdyFgrwlqdk::getDkrid,userInfo.getUserId().toString())
.orderByDesc(TbZdyFgrwlqdk::getDksj) .orderByDesc(TbZdyFgrwlqdk::getDksj)
.last(" limit 1 ") .last(" limit 1 ")
); );
if(Objects.nonNull(dk)){ if (Objects.nonNull(dk)) {
map.put("fgrwid",bxd.getFgrwid()); map.put("fgrwid", bxd.getFgrwid());
map.put("bxdid",bxd.getId()); map.put("bxdid", bxd.getId());
map.put("bxdMc",bxd.getBxdMc()); map.put("bxdMc", bxd.getBxdMc());
map.put("jd",bxd.getJd()); map.put("jd", bxd.getJd());
map.put("wd",bxd.getWd()); map.put("wd", bxd.getWd());
map.put("dkzt","已打卡"); map.put("dkzt", "已打卡");
map.put("dksj",dk.getDksj()); map.put("dksj", dk.getDksj());
map.put("dktp",dk.getDktp()); map.put("dkr", dk.getDkr());
}else { map.put("dktp", dk.getDktp());
map.put("fgrwid",bxd.getFgrwid()); map.put("id", dk.getId());
map.put("bxdid",bxd.getId()); map.put("lktp", dk.getLktp());
map.put("bxdMc",bxd.getBxdMc()); map.put("lksj", dk.getLksj());
map.put("jd",bxd.getJd()); map.put("lkjd", dk.getLkjd());
map.put("wd",bxd.getWd()); map.put("lkwd", dk.getLkwd());
map.put("dkzt","未打卡");
map.put("dksj",""); } else {
map.put("dktp",""); map.put("fgrwid", bxd.getFgrwid());
map.put("bxdid", bxd.getId());
map.put("bxdMc", bxd.getBxdMc());
map.put("jd", bxd.getJd());
map.put("wd", bxd.getWd());
map.put("dkzt", "未打卡");
map.put("dksj", "");
map.put("dktp", "");
} }
bxddks.add(map); bxddks.add(map);
}); });
@ -293,8 +310,8 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
return vo; return vo;
} }
private TbZdxlFgdwVO buildAllInfoByEntity(TbZdxlFgdw entity){ private TbZdxlFgdwVO buildAllInfoByEntity(TbZdxlFgdw entity) {
if(ObjectUtils.isEmpty(entity)){ if (ObjectUtils.isEmpty(entity)) {
return null; return null;
} }
TbZdxlFgdwVO resultVO = BeanUtil.copyProperties(entity, TbZdxlFgdwVO.class); TbZdxlFgdwVO resultVO = BeanUtil.copyProperties(entity, TbZdxlFgdwVO.class);
@ -312,21 +329,23 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
@Override @Override
public Boolean getLqrw(TbZdyFgrwlqQuery query) { public Boolean getLqrw(TbZdyFgrwlqQuery query) {
UserInfo userInfo = UserInfoManager.get(); UserInfo userInfo = UserInfoManager.get();
TbQwXfbb tbQwXfbb = this.baseMapper.selectXfbbByFzrSfzh(userInfo.getIdEntityCard(),DateUtils.getNowDate()); TbQwXfbb tbQwXfbb = this.baseMapper.selectXfbbByFzrSfzh(userInfo.getIdEntityCard(), DateUtils.getNowDate());
if(Objects.isNull(tbQwXfbb)) throw new BusinessException("请先报备,再领取!"); if (Objects.isNull(tbQwXfbb)) throw new BusinessException("请先报备,再领取!");
TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid()); TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid());
if(Objects.isNull(fgrw)) throw new BusinessException("方格任务不存在!"); if (Objects.isNull(fgrw)) throw new BusinessException("方格任务不存在!");
fgrw.setFgrwzt("02"); fgrw.setFgrwzt("02");
this.baseMapper.updateById(fgrw); this.baseMapper.updateById(fgrw);
int num = this.tbZdyFgrwlqMapper.selectCount( int num = this.tbZdyFgrwlqMapper.selectCount(
new LambdaQueryWrapper<TbZdyFgrwlq>() new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId().toString()) .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId().toString())
.eq(TbZdyFgrwlq::getFgrwid,query.getFgrwid()) .eq(TbZdyFgrwlq::getFgrwid, query.getFgrwid())
); );
if(num>1) throw new BusinessException("方格任务已领取,请勿重复领取!"); if (num > 1) throw new BusinessException("方格任务已领取,请勿重复领取!");
TbZdyFgrwlq rwlq = new TbZdyFgrwlq(); TbZdyFgrwlq rwlq = new TbZdyFgrwlq();
rwlq.setId(UUIDGenerator.getUUID()); rwlq.setId(UUIDGenerator.getUUID());
rwlq.setFgrwzt("02"); rwlq.setFgrwzt("02");
rwlq.setBbid(tbQwXfbb.getId());
rwlq.setFgrwid(query.getFgrwid()); rwlq.setFgrwid(query.getFgrwid());
rwlq.setFgrwlqrid(userInfo.getUserId().toString()); rwlq.setFgrwlqrid(userInfo.getUserId().toString());
rwlq.setFgrwlqrsfzh(userInfo.getIdEntityCard()); rwlq.setFgrwlqrsfzh(userInfo.getIdEntityCard());
@ -343,58 +362,63 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid()); TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid());
List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList( List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList(
new LambdaQueryWrapper<TbZdyFgbxd>() new LambdaQueryWrapper<TbZdyFgbxd>()
.eq(TbZdyFgbxd::getFgrwid,query.getFgrwid()) .eq(TbZdyFgbxd::getFgrwid, query.getFgrwid())
); );
TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(fgrw.getFgId()); TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(fgrw.getFgId());
TbZdxlFgdwVO fgdwVO = buildAllInfoByEntity(tbZdxlFgdw); TbZdxlFgdwVO fgdwVO = buildAllInfoByEntity(tbZdxlFgdw);
res.put("fgdwVO",fgdwVO); res.put("fgdwVO", fgdwVO);
res.put("fgrw",fgrw); res.put("fgrw", fgrw);
List<Map<String,Object>> maps = new ArrayList<>(); List<Map<String, Object>> maps = new ArrayList<>();
if(!CollectionUtils.isEmpty(bxds)){ if (!CollectionUtils.isEmpty(bxds)) {
bxds.forEach( bxd ->{ bxds.forEach(bxd -> {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("bxdMc",bxd.getBxdMc()); map.put("bxdMc", bxd.getBxdMc());
TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne( TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlqdk>() new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.eq(TbZdyFgrwlqdk::getFgbxdid,bxd.getId()) .eq(TbZdyFgrwlqdk::getFgbxdid, bxd.getId())
.eq(TbZdyFgrwlqdk::getFgrwid,fgrw.getId()) .eq(TbZdyFgrwlqdk::getFgrwid, fgrw.getId())
.eq(TbZdyFgrwlqdk::getDkrid,user.getUserId().toString()) .eq(TbZdyFgrwlqdk::getDkrid, user.getUserId().toString())
.orderByDesc(TbZdyFgrwlqdk::getDksj) .orderByDesc(TbZdyFgrwlqdk::getDksj)
.last(" limit 1 ") .last(" limit 1 ")
); );
if(Objects.nonNull(dk)){ if (Objects.nonNull(dk)) {
map.put("fgrwid",bxd.getFgrwid()); map.put("fgrwid", bxd.getFgrwid());
map.put("bxdid",bxd.getId()); map.put("bxdid", bxd.getId());
map.put("jd",bxd.getJd()); map.put("jd", bxd.getJd());
map.put("wd",bxd.getWd()); map.put("wd", bxd.getWd());
map.put("dkzt","已打卡"); map.put("dkzt", "已打卡");
map.put("dksj",dk.getDksj()); map.put("dksj", dk.getDksj());
map.put("dktp",dk.getDktp()); map.put("dktp", dk.getDktp());
}else { map.put("id", dk.getId());
map.put("fgrwid",bxd.getFgrwid()); map.put("lktp", dk.getLktp());
map.put("bxdid",bxd.getId()); map.put("lksj", dk.getLksj());
map.put("jd",bxd.getJd()); map.put("lkjd", dk.getLkjd());
map.put("wd",bxd.getWd()); map.put("lkwd", dk.getLkwd());
map.put("dkzt","未打卡"); } else {
map.put("dksj",""); map.put("fgrwid", bxd.getFgrwid());
map.put("dktp",""); map.put("bxdid", bxd.getId());
map.put("jd", bxd.getJd());
map.put("wd", bxd.getWd());
map.put("dkzt", "未打卡");
map.put("dksj", "");
map.put("dktp", "");
} }
maps.add(map); maps.add(map);
}); });
} }
res.put("bxds",maps); res.put("bxds", maps);
//最新打卡时间 //最新打卡时间
TbZdyFgrwlqdk zxdk = this.tbZdyFgrwlqdkMapper.selectOne( TbZdyFgrwlqdk zxdk = this.tbZdyFgrwlqdkMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlqdk>() new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.eq(TbZdyFgrwlqdk::getFgrwid,fgrw.getId()) .eq(TbZdyFgrwlqdk::getFgrwid, fgrw.getId())
.eq(TbZdyFgrwlqdk::getDkrid,user.getUserId().toString()) .eq(TbZdyFgrwlqdk::getDkrid, user.getUserId().toString())
.orderByDesc(TbZdyFgrwlqdk::getDksj) .orderByDesc(TbZdyFgrwlqdk::getDksj)
.last(" limit 1 ") .last(" limit 1 ")
); );
if(Objects.nonNull(zxdk)){ if (Objects.nonNull(zxdk)) {
res.put("zxdksj",zxdk.getDksj()); res.put("zxdksj", zxdk.getDksj());
}else{ } else {
res.put("zxdksj",""); res.put("zxdksj", "");
} }
return res; return res;
} }
@ -404,15 +428,15 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
UserInfo user = UserInfoManager.get(); UserInfo user = UserInfoManager.get();
int num = this.tbZdyFgrwlqMapper.selectCount( int num = this.tbZdyFgrwlqMapper.selectCount(
new LambdaQueryWrapper<TbZdyFgrwlq>() new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(TbZdyFgrwlq::getFgrwid,dto.getFgrwid()) .eq(TbZdyFgrwlq::getFgrwid, dto.getFgrwid())
.eq(TbZdyFgrwlq::getFgrwlqrid,user.getUserId().toString()) .eq(TbZdyFgrwlq::getFgrwlqrid, user.getUserId().toString())
); );
if(num ==0 ) throw new BusinessException("您还没有领取该任务!"); if (num == 0) throw new BusinessException("您还没有领取该任务!");
TbZdyFgbxd tbZdyFgbxd = this.tbZdyFgbxdMapper.selectById(dto.getBxdid()); TbZdyFgbxd tbZdyFgbxd = this.tbZdyFgbxdMapper.selectById(dto.getBxdid());
long jl = PositionUtil.getDistance(dto.getJd().doubleValue(), dto.getWd().doubleValue(),tbZdyFgbxd.getJd().doubleValue(),tbZdyFgbxd.getWd().doubleValue()); long jl = PositionUtil.getDistance(dto.getJd().doubleValue(), dto.getWd().doubleValue(), tbZdyFgbxd.getJd().doubleValue(), tbZdyFgbxd.getWd().doubleValue());
if(jl > 100L) throw new BusinessException("您的位置在卡点100米以外无法打卡"); if (jl > 100L) throw new BusinessException("您的位置在卡点100米以外无法打卡");
TbZdyFgrwlqdk tbZdyFgrwlqdk = new TbZdyFgrwlqdk(); TbZdyFgrwlqdk tbZdyFgrwlqdk = new TbZdyFgrwlqdk();
BeanUtils.copyProperties(dto,tbZdyFgrwlqdk); BeanUtils.copyProperties(dto, tbZdyFgrwlqdk);
tbZdyFgrwlqdk.setId(UUIDGenerator.getUUID()); tbZdyFgrwlqdk.setId(UUIDGenerator.getUUID());
tbZdyFgrwlqdk.setDksj(new Date()); tbZdyFgrwlqdk.setDksj(new Date());
tbZdyFgrwlqdk.setDkrid(user.getUserId().toString()); tbZdyFgrwlqdk.setDkrid(user.getUserId().toString());
@ -420,7 +444,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
tbZdyFgrwlqdk.setDarsfzh(user.getIdEntityCard()); tbZdyFgrwlqdk.setDarsfzh(user.getIdEntityCard());
tbZdyFgrwlqdk.setFgbxdid(dto.getBxdid()); tbZdyFgrwlqdk.setFgbxdid(dto.getBxdid());
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(user.getDeptCode()); DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(user.getDeptCode());
if(Objects.nonNull(dept)){ if (Objects.nonNull(dept)) {
tbZdyFgrwlqdk.setSsbm(dept.getDeptname()); tbZdyFgrwlqdk.setSsbm(dept.getDeptname());
tbZdyFgrwlqdk.setSsbmdm(dept.getDeptcode()); tbZdyFgrwlqdk.setSsbmdm(dept.getDeptcode());
tbZdyFgrwlqdk.setSsxgajdm(dept.getFxjcode()); tbZdyFgrwlqdk.setSsxgajdm(dept.getFxjcode());
@ -431,4 +455,190 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
this.tbZdyFgrwlqdkMapper.insert(tbZdyFgrwlqdk); this.tbZdyFgrwlqdkMapper.insert(tbZdyFgrwlqdk);
return true; return true;
} }
@Override
public Boolean zdyLkdk(TbZdyFgrwLkDto dto) {
TbZdyFgrwlqdk tbZdyFgrwlqdk = this.tbZdyFgrwlqdkMapper.selectById(dto.getId());
if (Objects.isNull(tbZdyFgrwlqdk)) throw new BusinessException("打卡记录不存在!");
if (Objects.nonNull(tbZdyFgrwlqdk.getLksj())) throw new BusinessException("已离开打卡,请勿重复操作!");
// 校验距离
TbZdyFgbxd tbZdyFgbxd = this.tbZdyFgbxdMapper.selectById(tbZdyFgrwlqdk.getFgbxdid());
if (Objects.nonNull(tbZdyFgbxd)) {
long jl = PositionUtil.getDistance(dto.getLkjd().doubleValue(), dto.getLkwd().doubleValue(),
tbZdyFgbxd.getJd().doubleValue(), tbZdyFgbxd.getWd().doubleValue());
if (jl > 100L) throw new BusinessException("您的位置在卡点100米以外无法离开打卡");
}
// 更新离开信息
tbZdyFgrwlqdk.setLktp(dto.getLktp());
tbZdyFgrwlqdk.setLksj(new Date());
tbZdyFgrwlqdk.setLkjd(dto.getLkjd());
tbZdyFgrwlqdk.setLkwd(dto.getLkwd());
this.tbZdyFgrwlqdkMapper.updateById(tbZdyFgrwlqdk);
return true;
}
@Override
public IPage<TbZdyFgrwlqdkVO> selectDkList(TbZdyFgrwlqdkQuery query) {
query.setSsbmdm(this.tbBaseAdaptRemoteService.getSsbm(query.getSsbmdm(), null));
IPage<TbZdyFgrwlqdk> page = this.tbZdyFgrwlqdkMapper.selectPage(
new Page<>(query.getPageCurrent(), query.getPageSize()),
new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.eq(StringUtils.isNotEmpty(query.getFgrwid()), TbZdyFgrwlqdk::getFgrwid, query.getFgrwid())
.eq(StringUtils.isNotEmpty(query.getFgbxdid()), TbZdyFgrwlqdk::getFgbxdid, query.getFgbxdid())
.eq(StringUtils.isNotEmpty(query.getDkrid()), TbZdyFgrwlqdk::getDkrid, query.getDkrid())
.like(StringUtils.isNotEmpty(query.getDkr()), TbZdyFgrwlqdk::getDkr, query.getDkr())
.likeRight(StringUtils.isNotEmpty(query.getSsbmdm()), TbZdyFgrwlqdk::getSsbmdm, query.getSsbmdm())
.orderByDesc(TbZdyFgrwlqdk::getDksj)
);
List<TbZdyFgrwlqdkVO> voList = new ArrayList<>();
if (!CollectionUtils.isEmpty(page.getRecords())) {
// 批量查询点位名称
Set<String> bxdIds = page.getRecords().stream()
.map(TbZdyFgrwlqdk::getFgbxdid)
.filter(StringUtils::isNotEmpty)
.collect(Collectors.toSet());
Map<String, String> bxdNameMap = new HashMap<>();
if (!CollectionUtils.isEmpty(bxdIds)) {
List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectBatchIds(bxdIds);
bxdNameMap = bxds.stream()
.collect(Collectors.toMap(TbZdyFgbxd::getId, TbZdyFgbxd::getBxdMc, (v1, v2) -> v1));
}
Map<String, String> finalBxdNameMap = bxdNameMap;
page.getRecords().forEach(dk -> {
TbZdyFgrwlqdkVO vo = new TbZdyFgrwlqdkVO();
BeanUtils.copyProperties(dk, vo);
vo.setBxdMc(finalBxdNameMap.get(dk.getFgbxdid()));
voList.add(vo);
});
}
IPage<TbZdyFgrwlqdkVO> pageVo = new Page<>(page.getCurrent(), page.getSize());
pageVo.setTotal(page.getTotal());
pageVo.setRecords(voList);
return pageVo;
}
@Override
public List<TbZdyFgrwVO> getFgrwListByBbid(TbZdyFgrwQuery query) {
// 根据报备ID查询任务领取记录
List<TbZdyFgrwlq> lqList = this.tbZdyFgrwlqMapper.selectList(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.eq(StringUtils.isNotEmpty(query.getBbid()), TbZdyFgrwlq::getBbid, query.getBbid())
);
if (CollectionUtils.isEmpty(lqList)) {
return new ArrayList<>();
}
// 获取任务ID列表
List<String> fgrwIds = lqList.stream()
.map(TbZdyFgrwlq::getFgrwid)
.collect(Collectors.toList());
// 批量查询任务详情
List<TbZdyFgrw> fgrwList = this.baseMapper.selectBatchIds(fgrwIds);
if (CollectionUtils.isEmpty(fgrwList)) {
return new ArrayList<>();
}
// 批量查询所有任务的点位
List<TbZdyFgbxd> allBxds = this.tbZdyFgbxdMapper.selectList(
new LambdaQueryWrapper<TbZdyFgbxd>()
.in(TbZdyFgbxd::getFgrwid, fgrwIds)
);
// 按任务ID分组点位
Map<String, List<TbZdyFgbxd>> bxdMap = CollectionUtils.isEmpty(allBxds)
? new HashMap<>()
: allBxds.stream().collect(Collectors.groupingBy(TbZdyFgbxd::getFgrwid));
// 构建领取记录映射包含领取人ID用于筛选打卡记录
Map<String, TbZdyFgrwlq> lqMap = lqList.stream()
.collect(Collectors.toMap(TbZdyFgrwlq::getFgrwid, v -> v, (v1, v2) -> v1));
// 获取所有领取人ID
Set<String> dkrids = lqList.stream()
.map(TbZdyFgrwlq::getFgrwlqrid)
.filter(StringUtils::isNotEmpty)
.collect(Collectors.toSet());
// 批量查询所有任务的打卡记录
List<TbZdyFgrwlqdk> allDks = CollectionUtils.isEmpty(dkrids) ? new ArrayList<>()
: this.tbZdyFgrwlqdkMapper.selectList(
new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.in(TbZdyFgrwlqdk::getFgrwid, fgrwIds)
.in(TbZdyFgrwlqdk::getDkrid, dkrids)
.orderByDesc(TbZdyFgrwlqdk::getDksj)
);
// 按 fgrwid+fgbxdid 分组,取最新的一条打卡记录
Map<String, TbZdyFgrwlqdk> dkMap = new HashMap<>();
if (!CollectionUtils.isEmpty(allDks)) {
for (TbZdyFgrwlqdk dk : allDks) {
String key = dk.getFgrwid() + "_" + dk.getFgbxdid();
if (!dkMap.containsKey(key)) {
dkMap.put(key, dk);
}
}
}
// 组装返回数据
List<TbZdyFgrwVO> voList = new ArrayList<>();
fgrwList.forEach(fgrw -> {
TbZdyFgrwVO vo = new TbZdyFgrwVO();
BeanUtils.copyProperties(fgrw, vo);
// 设置领取人信息
TbZdyFgrwlq lq = lqMap.get(fgrw.getId());
if (Objects.nonNull(lq)) {
vo.setFgrwlqr(lq.getFgrwlqr());
vo.setFgrwlqrid(lq.getFgrwlqrid());
vo.setFgrwlqrsfzh(lq.getFgrwlqrsfzh());
vo.setFgrwzt(lq.getFgrwzt());
}
// 设置任务点位(含打卡信息)
List<TbZdyFgbxd> bxds = bxdMap.get(fgrw.getId());
if (!CollectionUtils.isEmpty(bxds)) {
List<Map<String, Object>> bxdMaps = bxds.stream().map(bxd -> {
Map<String, Object> map = new HashMap<>();
map.put("bxdid", bxd.getId());
map.put("bxdMc", bxd.getBxdMc());
map.put("jd", bxd.getJd());
map.put("wd", bxd.getWd());
// 查询该点位的打卡记录
String dkKey = fgrw.getId() + "_" + bxd.getId();
TbZdyFgrwlqdk dk = dkMap.get(dkKey);
if (Objects.nonNull(dk)) {
// 开始打卡信息
map.put("dkzt", "已打卡");
map.put("dksj", dk.getDksj());
map.put("dktp", dk.getDktp());
map.put("dkJd", dk.getJd());
map.put("dkWd", dk.getWd());
// 离开打卡信息
map.put("lksj", dk.getLksj());
map.put("lktp", dk.getLktp());
map.put("lkJd", dk.getLkjd());
map.put("lkWd", dk.getLkwd());
} else {
map.put("dkzt", "未打卡");
map.put("dksj", null);
map.put("dktp", null);
map.put("dkJd", null);
map.put("dkWd", null);
map.put("lksj", null);
map.put("lktp", null);
map.put("lkJd", null);
map.put("lkWd", null);
}
return map;
}).collect(Collectors.toList());
vo.setBxds(bxdMaps);
}
voList.add(vo);
});
return voList;
}
} }

View File

@ -3,8 +3,11 @@ package com.mosty.yjzl.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDto;
import com.mosty.base.model.dto.yjzl.TbZdyFgrwLkDto;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqdkQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwQuery;
import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery; import com.mosty.base.model.query.yjzl.TbZdyFgrwlqQuery;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwlqdkVO;
import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO; import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -30,4 +33,13 @@ public interface TbZdyFgrwService {
Map<String,Object> getFgrwDkXq(TbZdyFgrwQuery query); Map<String,Object> getFgrwDkXq(TbZdyFgrwQuery query);
Boolean zdyRwdk(TbZdyFgrwDkDto dto); Boolean zdyRwdk(TbZdyFgrwDkDto dto);
Boolean zdyLkdk(TbZdyFgrwLkDto dto);
IPage<TbZdyFgrwlqdkVO> selectDkList(TbZdyFgrwlqdkQuery query);
/**
* 根据报备ID查询任务详情列表含任务点位
*/
List<TbZdyFgrwVO> getFgrwListByBbid(TbZdyFgrwQuery query);
} }

View File

@ -16,7 +16,7 @@
<if test="dto.fgrwlqrid != null and dto.fgrwlqrid != ''"> <if test="dto.fgrwlqrid != null and dto.fgrwlqrid != ''">
and rwlq.fgrwlqrid = #{dto.fgrwlqrid} and rwlq.fgrwlqrid = #{dto.fgrwlqrid}
</if> </if>
order by fgrw.xfrq desc order by rwlq.xt_cjsj desc
</select> </select>
<select id="selectXfbbByFzrSfzh" resultType="com.mosty.base.model.entity.qwzx.TbQwXfbb"> <select id="selectXfbbByFzrSfzh" resultType="com.mosty.base.model.entity.qwzx.TbQwXfbb">