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