113 changed files with 835 additions and 439 deletions
@ -0,0 +1,101 @@ |
|||||||
|
package com.biutag.supervision.controller.mobileSupervision; |
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.biutag.supervision.pojo.Result; |
||||||
|
import com.biutag.supervision.pojo.dto.SamplingPoliceDto; |
||||||
|
import com.biutag.supervision.pojo.param.SamplingQueryParam; |
||||||
|
import com.biutag.supervision.pojo.vo.DataPetitionComplaintExportGabxfVo; |
||||||
|
import com.biutag.supervision.pojo.vo.PoliceVo; |
||||||
|
import com.biutag.supervision.pojo.vo.SamplingVo; |
||||||
|
import com.biutag.supervision.service.SamplingService; |
||||||
|
import jakarta.servlet.http.HttpServletResponse; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.net.URLEncoder; |
||||||
|
import java.util.List; |
||||||
|
import java.util.concurrent.atomic.AtomicInteger; |
||||||
|
|
||||||
|
@RequestMapping("sampling") |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RestController |
||||||
|
public class SamplingController { |
||||||
|
|
||||||
|
private final SamplingService samplingService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页查询 |
||||||
|
* */ |
||||||
|
@GetMapping |
||||||
|
public Result<Page<SamplingVo>> list(SamplingQueryParam param) { |
||||||
|
return Result.success(samplingService.page(param)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 添加或者修改 |
||||||
|
* */ |
||||||
|
@PostMapping |
||||||
|
public Result<Boolean> addOrUpdata(@RequestBody SamplingVo samplingVo){ |
||||||
|
if(samplingService.addOrUpdata(samplingVo)){ |
||||||
|
return Result.success(); |
||||||
|
}else{ |
||||||
|
return Result.failed(5000,"操作失败"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除数据 |
||||||
|
* */ |
||||||
|
@DeleteMapping("{id}") |
||||||
|
public Result<Boolean> delData(@PathVariable String id){ |
||||||
|
if(samplingService.delDataById(id)){ |
||||||
|
return Result.success(); |
||||||
|
}else{ |
||||||
|
return Result.failed(5000,"操作失败"); |
||||||
|
} |
||||||
|
} |
||||||
|
/** |
||||||
|
*获取随机 |
||||||
|
* */ |
||||||
|
@PostMapping("/postSamplingPolice") |
||||||
|
public Result<List<PoliceVo>> postSamplingPolice(@RequestBody SamplingVo vo){ |
||||||
|
List<PoliceVo> list = samplingService.getSamplingPolice(vo); |
||||||
|
return Result.success(list); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取详情 |
||||||
|
* */ |
||||||
|
@GetMapping("{id}") |
||||||
|
public Result<SamplingVo> getDetail(@PathVariable String id){ |
||||||
|
SamplingVo samplingVo=samplingService.getDetail(id); |
||||||
|
return Result.success(samplingVo); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
*导出抽检人员数据 |
||||||
|
* */ |
||||||
|
@GetMapping("export/samplingPoling") |
||||||
|
public void exportBySampling(SamplingVo vo, HttpServletResponse response) throws IOException { |
||||||
|
AtomicInteger i = new AtomicInteger(1); |
||||||
|
if(StrUtil.isNotBlank(vo.getOrgStr())){ |
||||||
|
vo.setOrgIds(List.of(vo.getOrgStr().split(","))); |
||||||
|
} |
||||||
|
List<PoliceVo> data = samplingService.getSamplingPolice(vo); |
||||||
|
List<SamplingPoliceDto> list = data.stream().map(item -> { |
||||||
|
SamplingPoliceDto exportGabVo = new SamplingPoliceDto(); |
||||||
|
BeanUtil.copyProperties(item, exportGabVo); |
||||||
|
return exportGabVo; |
||||||
|
}).toList(); |
||||||
|
String excelName = StrUtil.isNotBlank( vo.getSamplingName())?vo.getSamplingName():"人员抽检规则"; |
||||||
|
String headerValue = "attachment; filename=\"" + URLEncoder.encode(excelName+".xlsx", "UTF-8") + "\""; |
||||||
|
response.setHeader("Content-Disposition", headerValue); |
||||||
|
response.setContentType("application/octet-stream"); |
||||||
|
EasyExcel.write(response.getOutputStream(), SamplingPoliceDto.class).inMemory(Boolean.TRUE).sheet(excelName+".xlsx").doWrite(list); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
package com.biutag.supervision.pojo.dto; |
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
public class SamplingPoliceDto { |
||||||
|
@ExcelProperty("姓名") |
||||||
|
private String name; |
||||||
|
|
||||||
|
@ExcelProperty("单位") |
||||||
|
private String shortName; |
||||||
|
|
||||||
|
@ExcelProperty("警号") |
||||||
|
private String empNo; |
||||||
|
} |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
package com.biutag.supervision.pojo.vo; |
||||||
|
|
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
public class PoliceVo { |
||||||
|
|
||||||
|
//警员姓名
|
||||||
|
private String name; |
||||||
|
|
||||||
|
//警号
|
||||||
|
private String empNo; |
||||||
|
//单位名称
|
||||||
|
private String shortName; |
||||||
|
//人员属性
|
||||||
|
private String personnelType; |
||||||
|
//单位id
|
||||||
|
private String deptId; |
||||||
|
|
||||||
|
//年龄
|
||||||
|
private int age; |
||||||
|
//在规定时间中 抽检次数
|
||||||
|
private int cjnum; |
||||||
|
|
||||||
|
//性别
|
||||||
|
private String gender; |
||||||
|
|
||||||
|
//是否为领导
|
||||||
|
private String isLeader; |
||||||
|
|
||||||
|
//距最后一次检测时间
|
||||||
|
private int daysDifference; |
||||||
|
//是否违反过六项规定(饮酒)
|
||||||
|
private int isdrink; |
||||||
|
|
||||||
|
} |
||||||
@ -1,128 +0,0 @@ |
|||||||
package com.biutag.supervision.service; |
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil; |
|
||||||
import cn.hutool.core.collection.CollectionUtil; |
|
||||||
import cn.hutool.core.lang.intern.InternUtil; |
|
||||||
import cn.hutool.core.util.ArrayUtil; |
|
||||||
import cn.hutool.core.util.StrUtil; |
|
||||||
import com.alibaba.excel.util.IntUtils; |
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants; |
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
||||||
import com.biutag.supervision.common.UserContextHolder; |
|
||||||
import com.biutag.supervision.constants.AppConstants; |
|
||||||
import com.biutag.supervision.constants.enums.RoleCodeEnum; |
|
||||||
import com.biutag.supervision.mapper.SamplingMapper; |
|
||||||
import com.biutag.supervision.mapper.SamplingPoliceMapper; |
|
||||||
import com.biutag.supervision.pojo.entity.Confinement; |
|
||||||
import com.biutag.supervision.pojo.entity.Sampling; |
|
||||||
import com.biutag.supervision.pojo.entity.SamplingPolice; |
|
||||||
import com.biutag.supervision.pojo.model.UserAuth; |
|
||||||
import com.biutag.supervision.pojo.param.SamplingQueryParam; |
|
||||||
import com.biutag.supervision.pojo.vo.ConfinementVo; |
|
||||||
import com.biutag.supervision.pojo.vo.SamplingVo; |
|
||||||
import lombok.RequiredArgsConstructor; |
|
||||||
import org.apache.ibatis.annotations.Param; |
|
||||||
import org.springframework.stereotype.Service; |
|
||||||
import org.springframework.util.CollectionUtils; |
|
||||||
|
|
||||||
import java.time.LocalDateTime; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Collection; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
@RequiredArgsConstructor |
|
||||||
@Service |
|
||||||
public class SampliingService extends ServiceImpl<SamplingMapper, Sampling> { |
|
||||||
|
|
||||||
//抽检警察人员表
|
|
||||||
private final SamplingPoliceMapper samplingPoliceMapper; |
|
||||||
|
|
||||||
private final SupDepartService departService; |
|
||||||
//添加或者修改
|
|
||||||
public boolean addOrUpdata(SamplingVo vo){ |
|
||||||
Sampling sampling =new Sampling(); |
|
||||||
BeanUtil.copyProperties(vo,sampling); |
|
||||||
UserAuth user = UserContextHolder.getCurrentUser(); |
|
||||||
sampling.setCrtTime(LocalDateTime.now()); |
|
||||||
sampling.setCrtName(user.getUserName()); |
|
||||||
if (StrUtil.isNotEmpty(vo.getId())){ |
|
||||||
//判断有无警员列表
|
|
||||||
samplingPoliceMapper.delete(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,sampling.getId())); |
|
||||||
} |
|
||||||
if(ArrayUtil.isNotEmpty(vo.getSamplingPolices())){ |
|
||||||
samplingPoliceMapper.insert(vo.getSamplingPolices()); |
|
||||||
} |
|
||||||
return baseMapper.insertOrUpdate(sampling); |
|
||||||
} |
|
||||||
//分页查询
|
|
||||||
public Page<SamplingVo> page(SamplingQueryParam queryParam){ |
|
||||||
QueryWrapper<Sampling> queryWrapper = new QueryWrapper<>(); |
|
||||||
UserAuth user = UserContextHolder.getCurrentUser(); |
|
||||||
// 权限
|
|
||||||
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && !user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode())) { |
|
||||||
if (user.getAuthDepartIds().isEmpty() || user.getRoleCodes().isEmpty()) { |
|
||||||
return new Page<SamplingVo>().setTotal(0).setRecords(new ArrayList<>()); |
|
||||||
} |
|
||||||
List<String> orgIds = departService.getAllNodeIds(user.getAuthDepartIds()); |
|
||||||
queryWrapper.in("c1.org_id", orgIds); |
|
||||||
} |
|
||||||
//查询条件
|
|
||||||
queryWrapper.eq(StrUtil.isNotBlank(queryParam.getSamplingName()),"sampling_name",queryParam.getSamplingName()) |
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getInspectorType()),"inspector_type",queryParam.getInspectorType()) |
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getGender()),"gender",queryParam.getGender()) |
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getPersonnelType()),"personnel_type",queryParam.getPersonnelType()) |
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getDrinkAlcohol()),"drink_alcohol",queryParam.getDrinkAlcohol()) |
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getBeDuty()),"be_duty",queryParam.getBeDuty()); |
|
||||||
//抽检领导次数
|
|
||||||
if(queryParam.getLeadersNumber() != 0 ){ |
|
||||||
queryWrapper.eq("leaders_number",queryParam.getLeadersNumber()); |
|
||||||
} |
|
||||||
//年龄范围
|
|
||||||
if (queryParam.getAgeMax()!= 0){ |
|
||||||
queryWrapper.ge("age_min",queryParam.getAgeMin()); |
|
||||||
queryWrapper.le("age_max",queryParam.getAgeMax()); |
|
||||||
} |
|
||||||
//警员比率
|
|
||||||
if (queryParam.getPoliceRatio() != 0){ |
|
||||||
queryWrapper.eq("police_ratio",queryParam.getPoliceRatio()); |
|
||||||
} |
|
||||||
//辅警比率
|
|
||||||
if(queryParam.getAssistRatio() != 0){ |
|
||||||
queryWrapper.eq("assist_ratio",queryParam.getAssistRatio()); |
|
||||||
} |
|
||||||
//数据查询
|
|
||||||
if(CollectionUtils.isEmpty(queryParam.getSamplingTime())){ |
|
||||||
queryWrapper.ge("start_time",queryParam.getSamplingTime().get(0)); |
|
||||||
queryWrapper.le("end_time",queryParam.getSamplingTime().get(1)); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
Page<Sampling> page= baseMapper.queryPage(Page.of(queryParam.getCurrent(), queryParam.getSize()), queryWrapper); |
|
||||||
List<SamplingVo> listData = new ArrayList<>(); |
|
||||||
page.getRecords().forEach(s->{ |
|
||||||
SamplingVo samplingVo =new SamplingVo(); |
|
||||||
BeanUtil.copyProperties(s,samplingVo); |
|
||||||
samplingVo.setSamplingPolices(samplingPoliceMapper.selectList(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,s.getId()))); |
|
||||||
listData.add(samplingVo); |
|
||||||
}); |
|
||||||
Page<SamplingVo> voPage = new Page<>(page.getCurrent(),page.getSize(),page.getTotal()); |
|
||||||
voPage.setRecords(listData); |
|
||||||
return voPage; |
|
||||||
} |
|
||||||
//删除数据
|
|
||||||
public boolean delDataById(SamplingQueryParam queryParam){ |
|
||||||
List<SamplingPolice> list = samplingPoliceMapper.selectList(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,queryParam.getId())); |
|
||||||
if(CollectionUtil.isNotEmpty(list)){ |
|
||||||
samplingPoliceMapper.deleteByIds(list.stream().map(SamplingPolice::getId).toList()); |
|
||||||
} |
|
||||||
|
|
||||||
return baseMapper.deleteById(queryParam.getId()) > 0; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
@ -0,0 +1,237 @@ |
|||||||
|
package com.biutag.supervision.service; |
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil; |
||||||
|
import cn.hutool.core.collection.CollectionUtil; |
||||||
|
import cn.hutool.core.util.ArrayUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import com.alibaba.fastjson2.JSON; |
||||||
|
import com.alibaba.fastjson2.JSONObject; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.biutag.supervision.common.UserContextHolder; |
||||||
|
import com.biutag.supervision.constants.AppConstants; |
||||||
|
import com.biutag.supervision.constants.enums.RoleCodeEnum; |
||||||
|
import com.biutag.supervision.mapper.SamplingMapper; |
||||||
|
import com.biutag.supervision.mapper.SamplingPoliceMapper; |
||||||
|
import com.biutag.supervision.pojo.dto.SamplingPoliceDto; |
||||||
|
import com.biutag.supervision.pojo.entity.Confinement; |
||||||
|
import com.biutag.supervision.pojo.entity.Sampling; |
||||||
|
import com.biutag.supervision.pojo.entity.SamplingPolice; |
||||||
|
import com.biutag.supervision.pojo.model.UserAuth; |
||||||
|
import com.biutag.supervision.pojo.param.SamplingQueryParam; |
||||||
|
import com.biutag.supervision.pojo.vo.DataPetitionComplaintExportGabxfVo; |
||||||
|
import com.biutag.supervision.pojo.vo.PoliceVo; |
||||||
|
import com.biutag.supervision.pojo.vo.SamplingVo; |
||||||
|
import jakarta.servlet.http.HttpServletResponse; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
import org.springframework.util.CollectionUtils; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.net.URLEncoder; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.concurrent.atomic.AtomicInteger; |
||||||
|
|
||||||
|
@RequiredArgsConstructor |
||||||
|
@Service |
||||||
|
public class SamplingService extends ServiceImpl<SamplingMapper, Sampling> { |
||||||
|
|
||||||
|
//抽检警察人员表
|
||||||
|
private final SamplingPoliceMapper samplingPoliceMapper; |
||||||
|
|
||||||
|
private final SupDepartService departService; |
||||||
|
//添加或者修改
|
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
public boolean addOrUpdata(SamplingVo vo){ |
||||||
|
Sampling sampling =new Sampling(); |
||||||
|
BeanUtil.copyProperties(vo,sampling); |
||||||
|
UserAuth user = UserContextHolder.getCurrentUser(); |
||||||
|
sampling.setCrtTime(LocalDateTime.now()); |
||||||
|
sampling.setCrtName(user.getUserName()); |
||||||
|
if(CollectionUtil.isNotEmpty(vo.getPersonnelTypeArray())){ |
||||||
|
sampling.setPersonnelType(String.join(",",vo.getPersonnelTypeArray())); |
||||||
|
} |
||||||
|
|
||||||
|
if(CollectionUtil.isNotEmpty(vo.getSamplingTime())){ |
||||||
|
sampling.setStartTime(vo.getSamplingTime().get(0)); |
||||||
|
sampling.setEndTime(vo.getSamplingTime().get(1)); |
||||||
|
} |
||||||
|
if (StrUtil.isNotEmpty(vo.getId())){ |
||||||
|
//判断有无警员列表
|
||||||
|
samplingPoliceMapper.delete(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,sampling.getId())); |
||||||
|
} |
||||||
|
JSONObject jsonObject= new JSONObject().fluentPut("data", vo.getSamplingObjectList()); |
||||||
|
|
||||||
|
sampling.setSamplingObj(jsonObject.toJSONString()); |
||||||
|
baseMapper.insertOrUpdate(sampling); |
||||||
|
if(ArrayUtil.isNotEmpty(vo.getSamplingPolices())){ |
||||||
|
vo.getSamplingPolices().forEach(s->{ |
||||||
|
s.setSamplingId(sampling.getId()); |
||||||
|
s.setCrtTime(LocalDateTime.now()); |
||||||
|
}); |
||||||
|
|
||||||
|
samplingPoliceMapper.insert(vo.getSamplingPolices()); |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
/** |
||||||
|
* 获取详情 |
||||||
|
* */ |
||||||
|
public SamplingVo getDetail(String id){ |
||||||
|
Sampling sampling = baseMapper.selectById(id); |
||||||
|
SamplingVo vo =new SamplingVo(); |
||||||
|
BeanUtil.copyProperties(sampling,vo); |
||||||
|
if(StrUtil.isNotBlank(vo.getPersonnelType())){ |
||||||
|
vo.setPersonnelTypeArray(List.of(vo.getPersonnelType().split(","))); |
||||||
|
} |
||||||
|
vo.setSamplingObjectList(JSON.parseArray(sampling.getSamplingObj(), SamplingVo.SamplingObject.class)); |
||||||
|
vo.setSamplingPolices( |
||||||
|
samplingPoliceMapper.selectList(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,id)) |
||||||
|
); |
||||||
|
return vo; |
||||||
|
} |
||||||
|
/** |
||||||
|
* 分页查询 |
||||||
|
* */ |
||||||
|
public Page<SamplingVo> page(SamplingQueryParam queryParam){ |
||||||
|
QueryWrapper<Sampling> queryWrapper = new QueryWrapper<>(); |
||||||
|
UserAuth user = UserContextHolder.getCurrentUser(); |
||||||
|
// 权限
|
||||||
|
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && !user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode())) { |
||||||
|
if (user.getAuthDepartIds().isEmpty() || user.getRoleCodes().isEmpty()) { |
||||||
|
return new Page<SamplingVo>().setTotal(0).setRecords(new ArrayList<>()); |
||||||
|
} |
||||||
|
List<String> orgIds = departService.getAllNodeIds(user.getAuthDepartIds()); |
||||||
|
queryWrapper.in("c1.org_id", orgIds); |
||||||
|
} |
||||||
|
//查询条件
|
||||||
|
queryWrapper.eq(StrUtil.isNotBlank(queryParam.getSamplingName()),"sampling_name",queryParam.getSamplingName()) |
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getInspectorType()),"inspector_type",queryParam.getInspectorType()) |
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getGender()),"gender",queryParam.getGender()) |
||||||
|
.like(StrUtil.isNotEmpty(queryParam.getPersonnelType()),"personnel_type", queryParam.getPersonnelType()) |
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getDrinkAlcohol()),"drink_alcohol",queryParam.getDrinkAlcohol()) |
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getBeDuty()),"be_duty",queryParam.getBeDuty()); |
||||||
|
//抽检领导次数
|
||||||
|
if(queryParam.getLeadersNumber() != 0 ){ |
||||||
|
queryWrapper.eq("leaders_number",queryParam.getLeadersNumber()); |
||||||
|
} |
||||||
|
//年龄范围
|
||||||
|
if (queryParam.getAgeMax()!= 0){ |
||||||
|
queryWrapper.ge("age_min",queryParam.getAgeMin()); |
||||||
|
queryWrapper.le("age_max",queryParam.getAgeMax()); |
||||||
|
} |
||||||
|
//警员比率
|
||||||
|
if (queryParam.getPoliceRatio() != 0){ |
||||||
|
queryWrapper.eq("police_ratio",queryParam.getPoliceRatio()); |
||||||
|
} |
||||||
|
//辅警比率
|
||||||
|
if(queryParam.getAssistRatio() != 0){ |
||||||
|
queryWrapper.eq("assist_ratio",queryParam.getAssistRatio()); |
||||||
|
} |
||||||
|
//数据查询
|
||||||
|
if(!CollectionUtils.isEmpty(queryParam.getSamplingTime())){ |
||||||
|
queryWrapper.ge("start_time",queryParam.getSamplingTime().get(0)); |
||||||
|
queryWrapper.le("end_time",queryParam.getSamplingTime().get(1)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
Page<Sampling> page= baseMapper.queryPage(Page.of(queryParam.getCurrent(), queryParam.getSize()), queryWrapper); |
||||||
|
List<SamplingVo> listData = new ArrayList<>(); |
||||||
|
page.getRecords().forEach(s->{ |
||||||
|
SamplingVo samplingVo =new SamplingVo(); |
||||||
|
BeanUtil.copyProperties(s,samplingVo); |
||||||
|
samplingVo.setSamplingPolices(samplingPoliceMapper.selectList(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,s.getId()))); |
||||||
|
listData.add(samplingVo); |
||||||
|
}); |
||||||
|
Page<SamplingVo> voPage = new Page<>(page.getCurrent(),page.getSize(),page.getTotal()); |
||||||
|
listData.forEach(s->{ |
||||||
|
if(StrUtil.isNotBlank(s.getPersonnelType())){ |
||||||
|
s.setPersonnelTypeArray(List.of(s.getPersonnelType().split(","))); |
||||||
|
} |
||||||
|
if(StrUtil.isNotBlank(s.getSamplingObj())){ |
||||||
|
|
||||||
|
s.setSamplingObjectList((List<SamplingVo.SamplingObject>) JSONObject.parseObject(s.getSamplingObj()).get("data")); |
||||||
|
} |
||||||
|
}); |
||||||
|
voPage.setRecords(listData); |
||||||
|
return voPage; |
||||||
|
} |
||||||
|
/** |
||||||
|
* 删除数据 |
||||||
|
* */ |
||||||
|
public boolean delDataById(String id){ |
||||||
|
List<SamplingPolice> list = samplingPoliceMapper.selectList(new LambdaQueryWrapper<SamplingPolice>().eq(SamplingPolice::getSamplingId,id)); |
||||||
|
if(CollectionUtil.isNotEmpty(list)){ |
||||||
|
samplingPoliceMapper.deleteByIds(list.stream().map(SamplingPolice::getId).toList()); |
||||||
|
} |
||||||
|
|
||||||
|
return baseMapper.deleteById(id) > 0; |
||||||
|
} |
||||||
|
/** |
||||||
|
* 根据规则获取抽检人员 |
||||||
|
* */ |
||||||
|
public List<PoliceVo> getSamplingPolice(SamplingVo samplingVo){ |
||||||
|
List<PoliceVo> list =new ArrayList<>(); |
||||||
|
List<String> orgIds = new ArrayList<>(); |
||||||
|
|
||||||
|
if(CollectionUtil.isNotEmpty(samplingVo.getSamplingObjectList()) && CollectionUtil.isEmpty(samplingVo.getOrgIds())){ |
||||||
|
samplingVo.getSamplingObjectList().forEach(s->{ |
||||||
|
orgIds.add(s.getDeptId()); |
||||||
|
orgIds.addAll(departService.getAllNodeIds(s.getDeptId())); |
||||||
|
}); |
||||||
|
samplingVo.setOrgIds(orgIds); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
// 抽检对象
|
||||||
|
//todo 缺少“是否值班人员”判断
|
||||||
|
if("2".equals(samplingVo.getDrinkAlcohol())){ |
||||||
|
samplingVo.setDrinkAlcohol(null); |
||||||
|
} |
||||||
|
//普通警员的抽检人数
|
||||||
|
List<PoliceVo> policeVos = baseMapper.selectPoliceData(samplingVo); |
||||||
|
//辅警数 = (抽检人数 ) * 辅警比例
|
||||||
|
int fjNum = (int) ((samplingVo.getSamplingNum() ) * ((double)samplingVo.getAssistRatio() / 100)); |
||||||
|
//普通民警抽查数 = (抽检人数 - 辅警数 - 领导人数)
|
||||||
|
int mjNum =samplingVo.getSamplingNum() - fjNum - samplingVo.getLeadersNumber(); |
||||||
|
//领导的抽检人数
|
||||||
|
List<PoliceVo> leadPoliceVos = baseMapper.selectPoliceDataLead(samplingVo); |
||||||
|
//时间范围内的抽检次数
|
||||||
|
|
||||||
|
if( samplingVo.getSamplingNum() > 0 ){ |
||||||
|
policeVos = policeVos.stream().filter(s->s.getCjnum() == samplingVo.getSamplingNumber()).toList(); |
||||||
|
leadPoliceVos=leadPoliceVos.stream().filter(s->s.getCjnum()== samplingVo.getSamplingNumber()).toList(); |
||||||
|
} |
||||||
|
|
||||||
|
//距离最后一次抽检的时间
|
||||||
|
if (samplingVo.getDistanceDay() > 0){ |
||||||
|
policeVos = policeVos.stream().filter(s->s.getDaysDifference() == samplingVo.getDistanceDay()).toList(); |
||||||
|
leadPoliceVos=leadPoliceVos.stream().filter(s->s.getDaysDifference() == samplingVo.getDistanceDay()).toList(); |
||||||
|
} |
||||||
|
//普通民警
|
||||||
|
List<PoliceVo> mjArray = policeVos.stream().filter(s->"1".equals(s.getPersonnelType())).limit(mjNum).toList(); |
||||||
|
if(CollectionUtil.isNotEmpty(mjArray)){ |
||||||
|
list.addAll(mjArray); |
||||||
|
} |
||||||
|
//辅警
|
||||||
|
List<PoliceVo> fjArray = policeVos.stream().filter(s->"3".equals(s.getPersonnelType())).limit(fjNum).toList(); |
||||||
|
if(CollectionUtil.isNotEmpty(fjArray)){ |
||||||
|
list.addAll(fjArray); |
||||||
|
} |
||||||
|
//领导
|
||||||
|
List<PoliceVo> leadArray = leadPoliceVos.stream().limit(samplingVo.getLeadersNumber()).toList(); |
||||||
|
if(CollectionUtil.isNotEmpty(leadArray)){ |
||||||
|
list.addAll(leadArray); |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
package com.biutag.supervision.util; |
||||||
|
|
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.GregorianCalendar; |
||||||
|
|
||||||
|
public class IDCardInfoExtractor { |
||||||
|
// 根据身份证号码获取性别,1表示男性,2表示女性,0表示无法确定
|
||||||
|
public static int getGender(String idCard) { |
||||||
|
if (idCard == null || idCard.length() < 17) { |
||||||
|
return 0; // 身份证号码无效
|
||||||
|
} |
||||||
|
char genderChar = idCard.charAt(16); // 第17位代表性别
|
||||||
|
int gender = genderChar % 2 == 0 ? 2 : 1; // 偶数表示女性,奇数表示男性
|
||||||
|
return gender; |
||||||
|
} |
||||||
|
|
||||||
|
// 根据身份证号码获取年龄
|
||||||
|
public static int getAge(String idCard) throws ParseException { |
||||||
|
if (idCard == null || idCard.length() < 14) { |
||||||
|
return -1; // 身份证号码无效
|
||||||
|
} |
||||||
|
String birthStr = idCard.substring(6, 14); // 提取出生日期部分,格式为YYYYMMDD
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
||||||
|
Date birthDate = sdf.parse(birthStr); |
||||||
|
GregorianCalendar calendar = new GregorianCalendar(); |
||||||
|
calendar.setTime(new Date()); |
||||||
|
int currentYear = calendar.get(GregorianCalendar.YEAR); |
||||||
|
int currentMonth = calendar.get(GregorianCalendar.MONTH) + 1; // 月份从0开始,需要加1
|
||||||
|
int currentDay = calendar.get(GregorianCalendar.DAY_OF_MONTH); |
||||||
|
|
||||||
|
calendar.setTime(birthDate); |
||||||
|
int birthYear = calendar.get(GregorianCalendar.YEAR); |
||||||
|
int birthMonth = calendar.get(GregorianCalendar.MONTH) + 1; // 月份从0开始,需要加1
|
||||||
|
int birthDay = calendar.get(GregorianCalendar.DAY_OF_MONTH); |
||||||
|
|
||||||
|
int age = currentYear - birthYear; |
||||||
|
if (currentMonth < birthMonth || (currentMonth == birthMonth && currentDay < birthDay)) { |
||||||
|
age--; // 如果还没到生日,则年龄减1
|
||||||
|
} |
||||||
|
return age; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue