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

@ -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<Boolean> zdyRwdk(@RequestBody TbZdyFgrwDkDto 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.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<TbZdyFgrwMapper, TbZdyFgrw
private final TbZdxlFgdwMapper tbZdxlFgdwMapper;
private final TbZdyFgrwlqdkMapper tbZdyFgrwlqdkMapper;
private final TbQwzxAdaptRemoteService tbQwzxAdaptRemoteService;
@Override
public Boolean addTbZdyrw(TbZdyFgrwDto dto) {
UserInfo user = UserInfoManager.get();
TbZdyFgrw fgrw = new TbZdyFgrw();
BeanUtils.copyProperties(dto,fgrw);
BeanUtils.copyProperties(dto, fgrw);
fgrw.setId(UUIDGenerator.getUUID());
fgrw.setFgrwzt("01");
if(Objects.isNull(dto.getXfrq())){
if (Objects.isNull(dto.getXfrq())) {
fgrw.setXfrq(new Date());
}
TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId());
if(Objects.nonNull(tbZdxlFgdw)){
if (Objects.nonNull(tbZdxlFgdw)) {
fgrw.setFgmc(tbZdxlFgdw.getMc1());
fgrw.setXfbm(tbZdxlFgdw.getSsbm());
fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm());
}
if(StringUtils.isEmpty(dto.getSsbmdm())){
if (StringUtils.isEmpty(dto.getSsbmdm())) {
dto.setSsbmdm(user.getDeptCode());
}
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm());
if(Objects.nonNull(dept)){
if (Objects.nonNull(dept)) {
fgrw.setSsbm(dept.getDeptname());
fgrw.setSsbmdm(dept.getDeptcode());
fgrw.setSsxgajdm(dept.getFxjcode());
@ -72,10 +80,10 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
fgrw.setSssgajdm(dept.getDszcode());
}
this.baseMapper.insert(fgrw);
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);
@ -88,21 +96,21 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
public Boolean editTbZdyrw(TbZdyFgrwDto dto) {
UserInfo user = UserInfoManager.get();
TbZdyFgrw fgrw = new TbZdyFgrw();
BeanUtils.copyProperties(dto,fgrw);
if(Objects.isNull(dto.getXfrq())){
BeanUtils.copyProperties(dto, fgrw);
if (Objects.isNull(dto.getXfrq())) {
fgrw.setXfrq(new Date());
}
TbZdxlFgdw tbZdxlFgdw = this.tbZdxlFgdwMapper.selectById(dto.getFgId());
if(Objects.nonNull(tbZdxlFgdw)){
if (Objects.nonNull(tbZdxlFgdw)) {
fgrw.setFgmc(tbZdxlFgdw.getMc1());
fgrw.setXfbm(tbZdxlFgdw.getSsbm());
fgrw.setXfbmdm(tbZdxlFgdw.getSsbmdm());
}
if(StringUtils.isEmpty(dto.getSsbmdm())){
if (StringUtils.isEmpty(dto.getSsbmdm())) {
dto.setSsbmdm(user.getDeptCode());
}
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(dto.getSsbmdm());
if(Objects.nonNull(dept)){
if (Objects.nonNull(dept)) {
fgrw.setSsbm(dept.getDeptname());
fgrw.setSsbmdm(dept.getDeptcode());
fgrw.setSsxgajdm(dept.getFxjcode());
@ -113,12 +121,12 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
this.baseMapper.updateById(fgrw);
this.tbZdyFgbxdMapper.delete(
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 -> {
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<TbZdyFgrwMapper, TbZdyFgrw
UserInfo userInfo = UserInfoManager.get();
query.setSsbmdm(this.tbBaseAdaptRemoteService.getSsbm(query.getSsbmdm(), null));
IPage<TbZdyFgrw> page = this.baseMapper.selectPage(
new Page<>(query.getPageCurrent(),query.getPageSize()),
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(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<TbZdyFgrwVO> voList = new ArrayList<>();
if(!CollectionUtils.isEmpty(page.getRecords())){
if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().forEach(tbZdyFgrw -> {
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.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<TbZdyFgrwMapper, TbZdyFgrw
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.setRecords(voList);
return pageVo;
@ -185,35 +193,37 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
// );
// List<String> ids = mylqs.stream().map(TbZdyFgrwlq::getFgrwid).collect(Collectors.toList());
//今日待领取任务
IPage<TbZdyFgrw> 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::getXfrq)
);
IPage<TbZdyFgrw> page = new Page<>();
//历史任务(自己已领取任务)
if("02".equals(query.getAppRwlx())){
IPage<TbZdyFgrw> pageDto = PageUtils.buildPage(query.getPageSize(),query.getPageCurrent());
page = this.baseMapper.getLqfgrw(pageDto,query);
if ("02".equals(query.getAppRwlx())) {
IPage<TbZdyFgrw> 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<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<>();
if(!CollectionUtils.isEmpty(page.getRecords())){
if (!CollectionUtils.isEmpty(page.getRecords())) {
page.getRecords().forEach(tbZdyFgrw -> {
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.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<TbZdyFgrwMapper, TbZdyFgrw
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.setRecords(voList);
return pageVo;
@ -233,15 +243,15 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
TbZdyFgrwVO vo = new TbZdyFgrwVO();
UserInfo userInfo = UserInfoManager.get();
TbZdyFgrw tbZdyFgrw = this.baseMapper.selectById(query.getFgrwid());
if(Objects.isNull(tbZdyFgrw)) throw new BusinessException("方格任务不存在!");
BeanUtils.copyProperties(tbZdyFgrw,vo);
if (Objects.isNull(tbZdyFgrw)) throw new BusinessException("方格任务不存在!");
BeanUtils.copyProperties(tbZdyFgrw, vo);
TbZdyFgrwlq rwlq = this.tbZdyFgrwlqMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.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<TbZdyFgrwMapper, TbZdyFgrw
}
List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList(
new LambdaQueryWrapper<TbZdyFgbxd>()
.eq(TbZdyFgbxd::getFgrwid,query.getFgrwid())
.eq(TbZdyFgbxd::getFgrwid, query.getFgrwid())
);
if(!CollectionUtils.isEmpty(bxds)){
List<Map<String,Object>> bxddks = new ArrayList<>();
bxds.forEach( bxd ->{
if (!CollectionUtils.isEmpty(bxds)) {
List<Map<String, Object>> bxddks = new ArrayList<>();
bxds.forEach(bxd -> {
Map<String, Object> map = new HashMap<>();
map.put("bxdMc",bxd.getBxdMc());
map.put("bxdMc", bxd.getBxdMc());
TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.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<TbZdyFgrwMapper, TbZdyFgrw
return vo;
}
private TbZdxlFgdwVO buildAllInfoByEntity(TbZdxlFgdw entity){
if(ObjectUtils.isEmpty(entity)){
private TbZdxlFgdwVO buildAllInfoByEntity(TbZdxlFgdw entity) {
if (ObjectUtils.isEmpty(entity)) {
return null;
}
TbZdxlFgdwVO resultVO = BeanUtil.copyProperties(entity, TbZdxlFgdwVO.class);
@ -312,21 +329,23 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
@Override
public Boolean getLqrw(TbZdyFgrwlqQuery query) {
UserInfo userInfo = UserInfoManager.get();
TbQwXfbb tbQwXfbb = this.baseMapper.selectXfbbByFzrSfzh(userInfo.getIdEntityCard(),DateUtils.getNowDate());
if(Objects.isNull(tbQwXfbb)) throw new BusinessException("请先报备,再领取!");
TbQwXfbb tbQwXfbb = this.baseMapper.selectXfbbByFzrSfzh(userInfo.getIdEntityCard(), DateUtils.getNowDate());
if (Objects.isNull(tbQwXfbb)) throw new BusinessException("请先报备,再领取!");
TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid());
if(Objects.isNull(fgrw)) throw new BusinessException("方格任务不存在!");
if (Objects.isNull(fgrw)) throw new BusinessException("方格任务不存在!");
fgrw.setFgrwzt("02");
this.baseMapper.updateById(fgrw);
int num = this.tbZdyFgrwlqMapper.selectCount(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.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<TbZdyFgrwMapper, TbZdyFgrw
TbZdyFgrw fgrw = this.baseMapper.selectById(query.getFgrwid());
List<TbZdyFgbxd> bxds = this.tbZdyFgbxdMapper.selectList(
new LambdaQueryWrapper<TbZdyFgbxd>()
.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<Map<String,Object>> maps = new ArrayList<>();
if(!CollectionUtils.isEmpty(bxds)){
bxds.forEach( bxd ->{
res.put("fgdwVO", fgdwVO);
res.put("fgrw", fgrw);
List<Map<String, Object>> maps = new ArrayList<>();
if (!CollectionUtils.isEmpty(bxds)) {
bxds.forEach(bxd -> {
Map<String, Object> map = new HashMap<>();
map.put("bxdMc",bxd.getBxdMc());
map.put("bxdMc", bxd.getBxdMc());
TbZdyFgrwlqdk dk = this.tbZdyFgrwlqdkMapper.selectOne(
new LambdaQueryWrapper<TbZdyFgrwlqdk>()
.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<TbZdyFgrwlqdk>()
.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<TbZdyFgrwMapper, TbZdyFgrw
UserInfo user = UserInfoManager.get();
int num = this.tbZdyFgrwlqMapper.selectCount(
new LambdaQueryWrapper<TbZdyFgrwlq>()
.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<TbZdyFgrwMapper, TbZdyFgrw
tbZdyFgrwlqdk.setDarsfzh(user.getIdEntityCard());
tbZdyFgrwlqdk.setFgbxdid(dto.getBxdid());
DeptInfoVo dept = this.tbBaseAdaptRemoteService.getOrgByOrgcode(user.getDeptCode());
if(Objects.nonNull(dept)){
if (Objects.nonNull(dept)) {
tbZdyFgrwlqdk.setSsbm(dept.getDeptname());
tbZdyFgrwlqdk.setSsbmdm(dept.getDeptcode());
tbZdyFgrwlqdk.setSsxgajdm(dept.getFxjcode());
@ -431,4 +455,190 @@ public class TbZdyFgrwServiceImpl extends ServiceImpl<TbZdyFgrwMapper, TbZdyFgrw
this.tbZdyFgrwlqdkMapper.insert(tbZdyFgrwlqdk);
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.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<String,Object> getFgrwDkXq(TbZdyFgrwQuery query);
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 != ''">
and rwlq.fgrwlqrid = #{dto.fgrwlqrid}
</if>
order by fgrw.xfrq desc
order by rwlq.xt_cjsj desc
</select>
<select id="selectXfbbByFzrSfzh" resultType="com.mosty.base.model.entity.qwzx.TbQwXfbb">