diff --git a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/dto/yjzl/TbZdyFgrwDkDto.java b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/dto/yjzl/TbZdyFgrwDkDto.java index 6365d15..2c7a2e2 100644 --- a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/dto/yjzl/TbZdyFgrwDkDto.java +++ b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/dto/yjzl/TbZdyFgrwDkDto.java @@ -29,4 +29,6 @@ public class TbZdyFgrwDkDto { @ApiModelProperty(value = "打卡图片") private String dktp; + + } diff --git a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlq.java b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlq.java index 1bc31f7..33a5982 100644 --- a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlq.java +++ b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlq.java @@ -16,7 +16,7 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("tb_zdy_fgrwlq") + @TableName("tb_zdy_fgrwlq") @ApiModel(value = "TbZdyFgrwlq 对象", description = "巡逻方格任务领取") public class TbZdyFgrwlq extends BaseEntity implements Serializable, Cloneable { @@ -29,6 +29,9 @@ public class TbZdyFgrwlq extends BaseEntity implements Serializable, Cloneable { @ApiModelProperty(value = "方格任务id") private String fgrwid; + @ApiModelProperty(value = "报备id") + private String bbid; + @ApiModelProperty(value = "方格任务状态D_BZ_QWRWZT 01领取 02已领取 03已完成") private String fgrwzt; diff --git a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlqdk.java b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlqdk.java index a2edd04..21935e0 100644 --- a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlqdk.java +++ b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/entity/yjzl/zddw/TbZdyFgrwlqdk.java @@ -42,7 +42,7 @@ public class TbZdyFgrwlqdk extends BaseEntity implements Serializable, Cloneable @ApiModelProperty(value = "打卡人身份证号") private String darsfzh; - @ApiModelProperty(value = "打卡秃瓢") + @ApiModelProperty(value = "打卡图片") private String dktp; @ApiModelProperty(value = "打卡时间") @@ -73,4 +73,18 @@ public class TbZdyFgrwlqdk extends BaseEntity implements Serializable, Cloneable @ApiModelProperty(value = "所属市公安局代码") 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; + } diff --git a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/query/yjzl/TbZdyFgrwQuery.java b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/query/yjzl/TbZdyFgrwQuery.java index 68a3a43..8078471 100644 --- a/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/query/yjzl/TbZdyFgrwQuery.java +++ b/feign-client-api/mosty-base-feign-sdk/src/main/java/com/mosty/base/model/query/yjzl/TbZdyFgrwQuery.java @@ -35,4 +35,7 @@ public class TbZdyFgrwQuery extends BasePage { @ApiModelProperty(value = "任务领取人id") private String fgrwlqrid; + + @ApiModelProperty(value = "报备id") + private String bbid; } diff --git a/mosty-wzzx/src/main/java/com/mosty/wzzx/controller/LocationInfoController.java b/mosty-wzzx/src/main/java/com/mosty/wzzx/controller/LocationInfoController.java index 7b279b7..ca4deda 100644 --- a/mosty-wzzx/src/main/java/com/mosty/wzzx/controller/LocationInfoController.java +++ b/mosty-wzzx/src/main/java/com/mosty/wzzx/controller/LocationInfoController.java @@ -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.LocationInfo; 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.DateUtils; import com.mosty.common.base.domain.BaseController; @@ -101,29 +100,22 @@ public class LocationInfoController extends BaseController { locationInfo.setSourceName("移动设备"); locationInfo.setSourceCode("02"); // Long startTime = System.currentTimeMillis(); - // 入库之前将坐标进行转换 + // 保存原始坐标 locationInfo.setSourceLat(locationInfo.getLat()); locationInfo.setSourceLng(locationInfo.getLng()); -// double[] transfromPonint = CoordinateTransform.transformGCJ02ToWGS84(locationInfo.getLng(), -// locationInfo.getLat()); -// // 只保留8位小数 -// BigDecimal reLngBd = BigDecimal.valueOf(transfromPonint[0]); -// double reLngDouble = reLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); -// locationInfo.setLng(reLngDouble); -// // 只保留8位小数 -// BigDecimal reLatBd = BigDecimal.valueOf(transfromPonint[1]); -// double reLatDouble = reLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); -// locationInfo.setLat(reLatDouble); - //上传坐标转行 + // 只保留8位小数 + BigDecimal reLngBd = BigDecimal.valueOf(locationInfo.getLng()); + double reLngDouble = reLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); + locationInfo.setLng(reLngDouble); + BigDecimal reLatBd = BigDecimal.valueOf(locationInfo.getLat()); + double reLatDouble = reLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); + locationInfo.setLat(reLatDouble); + // 上次坐标精度处理 if (locationInfo.getLastLng() != null && locationInfo.getLastLat() != null) { - double[] lastTransfromPonint = CoordinateTransform.transformGCJ02ToWGS84(locationInfo.getLastLng(), - locationInfo.getLastLat()); - // 只保留8位小数 - BigDecimal lastReLngBd = BigDecimal.valueOf(lastTransfromPonint[0]); + BigDecimal lastReLngBd = BigDecimal.valueOf(locationInfo.getLastLng()); double lastReLngDouble = lastReLngBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); locationInfo.setLastLng(lastReLngDouble); - // 只保留8位小数 - BigDecimal lastReLatBd = BigDecimal.valueOf(lastTransfromPonint[1]); + BigDecimal lastReLatBd = BigDecimal.valueOf(locationInfo.getLastLat()); double lastReLatDouble = lastReLatBd.setScale(8, BigDecimal.ROUND_HALF_UP).doubleValue(); locationInfo.setLastLat(lastReLatDouble); } @@ -132,7 +124,6 @@ public class LocationInfoController extends BaseController { } //实时存储位置 locationInfoService.locationReceive(locationInfo); - Long endTime = System.currentTimeMillis(); locationInfo.setLastLat(locationInfo.getLat()); locationInfo.setLastLng(locationInfo.getLng()); return ResponseResult.success("添加成功", locationInfo); diff --git a/mosty-wzzx/src/main/java/com/mosty/wzzx/service/impl/LocationInfoServiceImpl.java b/mosty-wzzx/src/main/java/com/mosty/wzzx/service/impl/LocationInfoServiceImpl.java index 3f641df..785b40d 100644 --- a/mosty-wzzx/src/main/java/com/mosty/wzzx/service/impl/LocationInfoServiceImpl.java +++ b/mosty-wzzx/src/main/java/com/mosty/wzzx/service/impl/LocationInfoServiceImpl.java @@ -57,8 +57,6 @@ public class LocationInfoServiceImpl extends ServiceImpl i if (StringUtils.isNotBlank(locationInfo.getUserId())) { sjly = sjly + "-" + locationInfo.getUserId(); } + lswz.setId(UUIDGenerator.getUUID()); lswz.setSjly(sjly); lswz.setSjlydm("02"); lswz.setYwid(locationInfo.getBbid()); diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdyFgrwController.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdyFgrwController.java index 071b8e0..47e442b 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdyFgrwController.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdyFgrwController.java @@ -4,8 +4,11 @@ package com.mosty.yjzl.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto; 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.TbZdyFgrwlqQuery; +import com.mosty.base.model.vo.yjzl.TbZdyFgrwlqdkVO; import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO; import com.mosty.common.base.domain.ResponseResult; import com.mosty.common.token.JwtSysUser; @@ -88,4 +91,25 @@ public class TbZdyFgrwController { public ResponseResult zdyRwdk(@RequestBody TbZdyFgrwDkDto dto) { return ResponseResult.success(tbZdyFgrwService.zdyRwdk(dto)); } + + @ApiOperation(value = "自定义任务离开打卡") + @PostMapping("/zdyLkdk") + @JwtSysUser + public ResponseResult zdyLkdk(@RequestBody TbZdyFgrwLkDto dto) { + return ResponseResult.success(tbZdyFgrwService.zdyLkdk(dto)); + } + + @ApiOperation(value = "打卡记录分页查询") + @GetMapping("/selectDkList") + @JwtSysUser + public ResponseResult> selectDkList(TbZdyFgrwlqdkQuery query) { + return ResponseResult.success(tbZdyFgrwService.selectDkList(query)); + } + + @ApiOperation(value = "根据报备ID查询任务详情列表") + @GetMapping("/getFgrwListByBbid") + @JwtSysUser + public ResponseResult> getFgrwListByBbid(TbZdyFgrwQuery query) { + return ResponseResult.success(tbZdyFgrwService.getFgrwListByBbid(query)); + } } diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdyFgrwServiceImpl.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdyFgrwServiceImpl.java index cb28d23..53d6a1e 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdyFgrwServiceImpl.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdyFgrwServiceImpl.java @@ -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.TbZdyFgrwDto; +import com.mosty.base.model.dto.yjzl.TbZdyFgrwLkDto; 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.TbZdyFgrwlqQuery; import com.mosty.base.model.vo.base.DeptInfoVo; 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.utils.*; import com.mosty.common.base.exception.BusinessException; @@ -43,27 +50,28 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl { TbZdyFgbxd bxd = new TbZdyFgbxd(); - BeanUtils.copyProperties(tbZdyFgbxdDto,bxd); + BeanUtils.copyProperties(tbZdyFgbxdDto, bxd); bxd.setId(UUIDGenerator.getUUID()); bxd.setFgrwid(fgrw.getId()); this.tbZdyFgbxdMapper.insert(bxd); @@ -88,21 +96,21 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl() - .eq(TbZdyFgbxd::getFgrwid,fgrw.getId()) + .eq(TbZdyFgbxd::getFgrwid, fgrw.getId()) ); - if(!CollectionUtils.isEmpty(dto.getDtoList())){ + if (!CollectionUtils.isEmpty(dto.getDtoList())) { dto.getDtoList().forEach(tbZdyFgbxdDto -> { TbZdyFgbxd bxd = new TbZdyFgbxd(); - BeanUtils.copyProperties(tbZdyFgbxdDto,bxd); + BeanUtils.copyProperties(tbZdyFgbxdDto, bxd); bxd.setId(UUIDGenerator.getUUID()); bxd.setFgrwid(fgrw.getId()); this.tbZdyFgbxdMapper.insert(bxd); @@ -137,27 +145,27 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl page = this.baseMapper.selectPage( - new Page<>(query.getPageCurrent(),query.getPageSize()), + new Page<>(query.getPageCurrent(), query.getPageSize()), new LambdaQueryWrapper() - .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(StringUtils.isNotEmpty(query.getFgrwzt()),TbZdyFgrw::getFgrwzt,query.getFgrwzt()) - .orderByDesc(TbZdyFgrw::getXfrq) + .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(StringUtils.isNotEmpty(query.getFgrwzt()), TbZdyFgrw::getFgrwzt, query.getFgrwzt()) + .orderByDesc(TbZdyFgrw::getXtCjsj) ); List voList = new ArrayList<>(); - if(!CollectionUtils.isEmpty(page.getRecords())){ + if (!CollectionUtils.isEmpty(page.getRecords())) { page.getRecords().forEach(tbZdyFgrw -> { TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne( new LambdaQueryWrapper() - .eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) - .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) + .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId()) +// .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) .last(" limit 1 ") ); TbZdyFgrwVO vo = new TbZdyFgrwVO(); - BeanUtils.copyProperties(tbZdyFgrw,vo); + BeanUtils.copyProperties(tbZdyFgrw, vo); vo.setFgrwzt(tbZdyFgrw.getFgrwzt()); - if(Objects.nonNull(rwlq)){ + if (Objects.nonNull(rwlq)) { vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); @@ -166,7 +174,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl pageVo = new Page<>(page.getCurrent(),page.getSize()); + IPage pageVo = new Page<>(page.getCurrent(), page.getSize()); pageVo.setTotal(page.getTotal()); pageVo.setRecords(voList); return pageVo; @@ -185,35 +193,37 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl ids = mylqs.stream().map(TbZdyFgrwlq::getFgrwid).collect(Collectors.toList()); //今日待领取任务 - IPage page = this.baseMapper.selectPage( - new Page<>(query.getPageCurrent(),query.getPageSize()), - new LambdaQueryWrapper() - .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) - ); + IPage page = new Page<>(); //历史任务(自己已领取任务) - if("02".equals(query.getAppRwlx())){ - IPage pageDto = PageUtils.buildPage(query.getPageSize(),query.getPageCurrent()); - page = this.baseMapper.getLqfgrw(pageDto,query); + if ("02".equals(query.getAppRwlx())) { + IPage pageDto = PageUtils.buildPage(query.getPageSize(), query.getPageCurrent()); + page = this.baseMapper.getLqfgrw(pageDto, query); + } else { + page = this.baseMapper.selectPage( + new Page<>(query.getPageCurrent(), query.getPageSize()), + new LambdaQueryWrapper() + .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 voList = new ArrayList<>(); - if(!CollectionUtils.isEmpty(page.getRecords())){ + if (!CollectionUtils.isEmpty(page.getRecords())) { page.getRecords().forEach(tbZdyFgrw -> { TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne( new LambdaQueryWrapper() - .eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) - .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) + .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId()) + .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId()) .last(" limit 1 ") ); TbZdyFgrwVO vo = new TbZdyFgrwVO(); - BeanUtils.copyProperties(tbZdyFgrw,vo); + BeanUtils.copyProperties(tbZdyFgrw, vo); vo.setFgrwzt("01"); - if(Objects.nonNull(rwlq)){ + if (Objects.nonNull(rwlq)) { vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); @@ -222,7 +232,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl pageVo = new Page<>(page.getCurrent(),page.getSize()); + IPage pageVo = new Page<>(page.getCurrent(), page.getSize()); pageVo.setTotal(page.getTotal()); pageVo.setRecords(voList); return pageVo; @@ -233,15 +243,15 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl() - .eq(TbZdyFgrwlq::getFgrwid,tbZdyFgrw.getId()) - .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId()) + .eq(TbZdyFgrwlq::getFgrwid, tbZdyFgrw.getId()) + .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId()) .last(" limit 1 ") ); - if(Objects.nonNull(rwlq)){ + if (Objects.nonNull(rwlq)) { vo.setFgrwlqr(rwlq.getFgrwlqr()); vo.setFgrwlqrid(rwlq.getFgrwlqrid()); vo.setFgrwlqrsfzh(rwlq.getFgrwlqrsfzh()); @@ -249,39 +259,46 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl bxds = this.tbZdyFgbxdMapper.selectList( new LambdaQueryWrapper() - .eq(TbZdyFgbxd::getFgrwid,query.getFgrwid()) + .eq(TbZdyFgbxd::getFgrwid, query.getFgrwid()) ); - if(!CollectionUtils.isEmpty(bxds)){ - List> bxddks = new ArrayList<>(); - bxds.forEach( bxd ->{ + if (!CollectionUtils.isEmpty(bxds)) { + List> bxddks = new ArrayList<>(); + bxds.forEach(bxd -> { Map map = new HashMap<>(); - map.put("bxdMc",bxd.getBxdMc()); + map.put("bxdMc", bxd.getBxdMc()); TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne( new LambdaQueryWrapper() - .eq(TbZdyFgrwlqdk::getFgbxdid,bxd.getId()) - .eq(TbZdyFgrwlqdk::getFgrwid,tbZdyFgrw.getId()) - .eq(TbZdyFgrwlqdk::getDkrid,userInfo.getUserId().toString()) + .eq(TbZdyFgrwlqdk::getFgbxdid, bxd.getId()) + .eq(TbZdyFgrwlqdk::getFgrwid, tbZdyFgrw.getId()) +// .eq(TbZdyFgrwlqdk::getDkrid,userInfo.getUserId().toString()) .orderByDesc(TbZdyFgrwlqdk::getDksj) .last(" limit 1 ") ); - if(Objects.nonNull(dk)){ - 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",dk.getDksj()); - map.put("dktp",dk.getDktp()); - }else { - 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",""); + if (Objects.nonNull(dk)) { + 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", dk.getDksj()); + map.put("dkr", dk.getDkr()); + map.put("dktp", dk.getDktp()); + map.put("id", dk.getId()); + map.put("lktp", dk.getLktp()); + map.put("lksj", dk.getLksj()); + map.put("lkjd", dk.getLkjd()); + map.put("lkwd", dk.getLkwd()); + + } else { + 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); }); @@ -293,8 +310,8 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl() - .eq(TbZdyFgrwlq::getFgrwlqrid,userInfo.getUserId().toString()) - .eq(TbZdyFgrwlq::getFgrwid,query.getFgrwid()) + .eq(TbZdyFgrwlq::getFgrwlqrid, userInfo.getUserId().toString()) + .eq(TbZdyFgrwlq::getFgrwid, query.getFgrwid()) ); - if(num>1) throw new BusinessException("方格任务已领取,请勿重复领取!"); + if (num > 1) throw new BusinessException("方格任务已领取,请勿重复领取!"); TbZdyFgrwlq rwlq = new TbZdyFgrwlq(); rwlq.setId(UUIDGenerator.getUUID()); rwlq.setFgrwzt("02"); + rwlq.setBbid(tbQwXfbb.getId()); rwlq.setFgrwid(query.getFgrwid()); rwlq.setFgrwlqrid(userInfo.getUserId().toString()); rwlq.setFgrwlqrsfzh(userInfo.getIdEntityCard()); @@ -343,58 +362,63 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl bxds = this.tbZdyFgbxdMapper.selectList( new LambdaQueryWrapper() - .eq(TbZdyFgbxd::getFgrwid,query.getFgrwid()) + .eq(TbZdyFgbxd::getFgrwid, query.getFgrwid()) ); TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(fgrw.getFgId()); TbZdxlFgdwVO fgdwVO = buildAllInfoByEntity(tbZdxlFgdw); - res.put("fgdwVO",fgdwVO); - res.put("fgrw",fgrw); - List> maps = new ArrayList<>(); - if(!CollectionUtils.isEmpty(bxds)){ - bxds.forEach( bxd ->{ + res.put("fgdwVO", fgdwVO); + res.put("fgrw", fgrw); + List> maps = new ArrayList<>(); + if (!CollectionUtils.isEmpty(bxds)) { + bxds.forEach(bxd -> { Map map = new HashMap<>(); - map.put("bxdMc",bxd.getBxdMc()); + map.put("bxdMc", bxd.getBxdMc()); TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne( new LambdaQueryWrapper() - .eq(TbZdyFgrwlqdk::getFgbxdid,bxd.getId()) - .eq(TbZdyFgrwlqdk::getFgrwid,fgrw.getId()) - .eq(TbZdyFgrwlqdk::getDkrid,user.getUserId().toString()) + .eq(TbZdyFgrwlqdk::getFgbxdid, bxd.getId()) + .eq(TbZdyFgrwlqdk::getFgrwid, fgrw.getId()) + .eq(TbZdyFgrwlqdk::getDkrid, user.getUserId().toString()) .orderByDesc(TbZdyFgrwlqdk::getDksj) .last(" limit 1 ") ); - if(Objects.nonNull(dk)){ - map.put("fgrwid",bxd.getFgrwid()); - map.put("bxdid",bxd.getId()); - map.put("jd",bxd.getJd()); - map.put("wd",bxd.getWd()); - map.put("dkzt","已打卡"); - map.put("dksj",dk.getDksj()); - map.put("dktp",dk.getDktp()); - }else { - map.put("fgrwid",bxd.getFgrwid()); - map.put("bxdid",bxd.getId()); - map.put("jd",bxd.getJd()); - map.put("wd",bxd.getWd()); - map.put("dkzt","未打卡"); - map.put("dksj",""); - map.put("dktp",""); + if (Objects.nonNull(dk)) { + map.put("fgrwid", bxd.getFgrwid()); + map.put("bxdid", bxd.getId()); + map.put("jd", bxd.getJd()); + map.put("wd", bxd.getWd()); + map.put("dkzt", "已打卡"); + map.put("dksj", dk.getDksj()); + map.put("dktp", dk.getDktp()); + map.put("id", dk.getId()); + map.put("lktp", dk.getLktp()); + map.put("lksj", dk.getLksj()); + map.put("lkjd", dk.getLkjd()); + map.put("lkwd", dk.getLkwd()); + } else { + map.put("fgrwid", bxd.getFgrwid()); + 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); }); } - res.put("bxds",maps); + res.put("bxds", maps); //最新打卡时间 TbZdyFgrwlqdk zxdk = this.tbZdyFgrwlqdkMapper.selectOne( new LambdaQueryWrapper() - .eq(TbZdyFgrwlqdk::getFgrwid,fgrw.getId()) - .eq(TbZdyFgrwlqdk::getDkrid,user.getUserId().toString()) + .eq(TbZdyFgrwlqdk::getFgrwid, fgrw.getId()) + .eq(TbZdyFgrwlqdk::getDkrid, user.getUserId().toString()) .orderByDesc(TbZdyFgrwlqdk::getDksj) .last(" limit 1 ") ); - if(Objects.nonNull(zxdk)){ - res.put("zxdksj",zxdk.getDksj()); - }else{ - res.put("zxdksj",""); + if (Objects.nonNull(zxdk)) { + res.put("zxdksj", zxdk.getDksj()); + } else { + res.put("zxdksj", ""); } return res; } @@ -404,15 +428,15 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl() - .eq(TbZdyFgrwlq::getFgrwid,dto.getFgrwid()) - .eq(TbZdyFgrwlq::getFgrwlqrid,user.getUserId().toString()) + .eq(TbZdyFgrwlq::getFgrwid, dto.getFgrwid()) + .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()); - long jl = PositionUtil.getDistance(dto.getJd().doubleValue(), dto.getWd().doubleValue(),tbZdyFgbxd.getJd().doubleValue(),tbZdyFgbxd.getWd().doubleValue()); - if(jl > 100L) throw new BusinessException("您的位置在卡点100米以外,无法打卡"); + long jl = PositionUtil.getDistance(dto.getJd().doubleValue(), dto.getWd().doubleValue(), tbZdyFgbxd.getJd().doubleValue(), tbZdyFgbxd.getWd().doubleValue()); + if (jl > 100L) throw new BusinessException("您的位置在卡点100米以外,无法打卡"); TbZdyFgrwlqdk tbZdyFgrwlqdk = new TbZdyFgrwlqdk(); - BeanUtils.copyProperties(dto,tbZdyFgrwlqdk); + BeanUtils.copyProperties(dto, tbZdyFgrwlqdk); tbZdyFgrwlqdk.setId(UUIDGenerator.getUUID()); tbZdyFgrwlqdk.setDksj(new Date()); tbZdyFgrwlqdk.setDkrid(user.getUserId().toString()); @@ -420,7 +444,7 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl 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 selectDkList(TbZdyFgrwlqdkQuery query) { + query.setSsbmdm(this.tbBaseAdaptRemoteService.getSsbm(query.getSsbmdm(), null)); + IPage page = this.tbZdyFgrwlqdkMapper.selectPage( + new Page<>(query.getPageCurrent(), query.getPageSize()), + new LambdaQueryWrapper() + .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 voList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(page.getRecords())) { + // 批量查询点位名称 + Set bxdIds = page.getRecords().stream() + .map(TbZdyFgrwlqdk::getFgbxdid) + .filter(StringUtils::isNotEmpty) + .collect(Collectors.toSet()); + Map bxdNameMap = new HashMap<>(); + if (!CollectionUtils.isEmpty(bxdIds)) { + List bxds = this.tbZdyFgbxdMapper.selectBatchIds(bxdIds); + bxdNameMap = bxds.stream() + .collect(Collectors.toMap(TbZdyFgbxd::getId, TbZdyFgbxd::getBxdMc, (v1, v2) -> v1)); + } + Map finalBxdNameMap = bxdNameMap; + page.getRecords().forEach(dk -> { + TbZdyFgrwlqdkVO vo = new TbZdyFgrwlqdkVO(); + BeanUtils.copyProperties(dk, vo); + vo.setBxdMc(finalBxdNameMap.get(dk.getFgbxdid())); + voList.add(vo); + }); + } + IPage pageVo = new Page<>(page.getCurrent(), page.getSize()); + pageVo.setTotal(page.getTotal()); + pageVo.setRecords(voList); + return pageVo; + } + + @Override + public List getFgrwListByBbid(TbZdyFgrwQuery query) { + // 根据报备ID查询任务领取记录 + List lqList = this.tbZdyFgrwlqMapper.selectList( + new LambdaQueryWrapper() + .eq(StringUtils.isNotEmpty(query.getBbid()), TbZdyFgrwlq::getBbid, query.getBbid()) + ); + if (CollectionUtils.isEmpty(lqList)) { + return new ArrayList<>(); + } + + // 获取任务ID列表 + List fgrwIds = lqList.stream() + .map(TbZdyFgrwlq::getFgrwid) + .collect(Collectors.toList()); + + // 批量查询任务详情 + List fgrwList = this.baseMapper.selectBatchIds(fgrwIds); + if (CollectionUtils.isEmpty(fgrwList)) { + return new ArrayList<>(); + } + + // 批量查询所有任务的点位 + List allBxds = this.tbZdyFgbxdMapper.selectList( + new LambdaQueryWrapper() + .in(TbZdyFgbxd::getFgrwid, fgrwIds) + ); + + // 按任务ID分组点位 + Map> bxdMap = CollectionUtils.isEmpty(allBxds) + ? new HashMap<>() + : allBxds.stream().collect(Collectors.groupingBy(TbZdyFgbxd::getFgrwid)); + + // 构建领取记录映射(包含领取人ID,用于筛选打卡记录) + Map lqMap = lqList.stream() + .collect(Collectors.toMap(TbZdyFgrwlq::getFgrwid, v -> v, (v1, v2) -> v1)); + + // 获取所有领取人ID + Set dkrids = lqList.stream() + .map(TbZdyFgrwlq::getFgrwlqrid) + .filter(StringUtils::isNotEmpty) + .collect(Collectors.toSet()); + + // 批量查询所有任务的打卡记录 + List allDks = CollectionUtils.isEmpty(dkrids) ? new ArrayList<>() + : this.tbZdyFgrwlqdkMapper.selectList( + new LambdaQueryWrapper() + .in(TbZdyFgrwlqdk::getFgrwid, fgrwIds) + .in(TbZdyFgrwlqdk::getDkrid, dkrids) + .orderByDesc(TbZdyFgrwlqdk::getDksj) + ); + + // 按 fgrwid+fgbxdid 分组,取最新的一条打卡记录 + Map 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 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 bxds = bxdMap.get(fgrw.getId()); + if (!CollectionUtils.isEmpty(bxds)) { + List> bxdMaps = bxds.stream().map(bxd -> { + Map 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; + } } diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdyFgrwService.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdyFgrwService.java index e5e954d..5750435 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdyFgrwService.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdyFgrwService.java @@ -3,8 +3,11 @@ package com.mosty.yjzl.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.mosty.base.model.dto.yjzl.TbZdyFgrwDkDto; 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.TbZdyFgrwlqQuery; +import com.mosty.base.model.vo.yjzl.TbZdyFgrwlqdkVO; import com.mosty.base.model.vo.yjzl.TbZdyFgrwVO; import org.springframework.web.bind.annotation.RequestBody; @@ -30,4 +33,13 @@ public interface TbZdyFgrwService { Map getFgrwDkXq(TbZdyFgrwQuery query); Boolean zdyRwdk(TbZdyFgrwDkDto dto); + + Boolean zdyLkdk(TbZdyFgrwLkDto dto); + + IPage selectDkList(TbZdyFgrwlqdkQuery query); + + /** + * 根据报备ID查询任务详情列表(含任务点位) + */ + List getFgrwListByBbid(TbZdyFgrwQuery query); } diff --git a/mosty-yjzl/src/main/resources/mapper/TbZdyFgrwMapper.xml b/mosty-yjzl/src/main/resources/mapper/TbZdyFgrwMapper.xml index 2dbcd96..4c9f134 100644 --- a/mosty-yjzl/src/main/resources/mapper/TbZdyFgrwMapper.xml +++ b/mosty-yjzl/src/main/resources/mapper/TbZdyFgrwMapper.xml @@ -16,7 +16,7 @@ and rwlq.fgrwlqrid = #{dto.fgrwlqrid} - order by fgrw.xfrq desc + order by rwlq.xt_cjsj desc