package com.panzhihua.service_community.service.impl;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordEditDTO;
|
import com.panzhihua.service_community.dao.*;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.enums.SafeWordStatusEnum;
|
import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordAddDTO;
|
import com.panzhihua.common.model.dtos.community.ComSwPatrolRecordPageDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComSwPatrolRecordVO;
|
import com.panzhihua.common.utlis.DateUtils;
|
import com.panzhihua.common.utlis.Snowflake;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.model.dos.ComSwDangerReportDO;
|
import com.panzhihua.service_community.model.dos.ComSwPatrolRecordDO;
|
import com.panzhihua.service_community.model.dos.ComSwPatrolRecordReportDO;
|
import com.panzhihua.service_community.model.dos.ComSwSafetyWorkRecordDO;
|
import com.panzhihua.service_community.service.ComSwPatrolRecordService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import static java.util.Objects.isNull;
|
import static org.apache.commons.lang3.StringUtils.isBlank;
|
|
/**
|
* @auther txb
|
* @create 2021-07-23 14:38:38
|
* @describe 社区》安全工作》巡查记录服务实现类
|
*/
|
@Slf4j
|
@Service
|
public class ComSwPatrolRecordServiceImpl extends ServiceImpl<ComSwPatrolRecordDAO, ComSwPatrolRecordDO>
|
implements ComSwPatrolRecordService {
|
|
@Resource
|
private ComSwPatrolRecordDAO comSwPatrolRecordDAO;
|
|
@Resource
|
private ComSwSafetyWorkRecordDAO comSwSafetyWorkRecordDAO;
|
|
@Resource
|
private ComSwDangerReportDAO comSwDangerReportDAO;
|
|
@Resource
|
private ComSwPatrolRecordReportDAO comSwPatrolRecordReportDAO;
|
|
@Resource
|
private ComActDAO comActDAO;
|
|
@Override
|
public R pagePatrolRecord(ComSwPatrolRecordPageDTO comSwPatrolRecordPageDTO) {
|
// 是否是查询自己的巡查记录
|
if (StringUtils.isNotEmpty(comSwPatrolRecordPageDTO.getPatrolPerson())) {
|
Map<String, Object> map =
|
comSwPatrolRecordDAO.getPbServiceTeamCardNo(comSwPatrolRecordPageDTO.getPatrolPerson());
|
if (map != null) {
|
comSwPatrolRecordPageDTO.setPatrolPerson(map.get("id").toString());
|
}
|
}
|
IPage<ComSwPatrolRecordVO> iPage = comSwPatrolRecordDAO.pagePatrolRecord(
|
new Page(comSwPatrolRecordPageDTO.getPageNum(), comSwPatrolRecordPageDTO.getPageSize()),
|
comSwPatrolRecordPageDTO);
|
if (!iPage.getRecords().isEmpty()) {
|
iPage.getRecords().forEach(patrol -> {
|
ComSwPatrolRecordReportDO recordReportDO =
|
comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda()
|
.eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrol.getId()));
|
if (recordReportDO != null) {
|
patrol.setServiceId(recordReportDO.getReportId());
|
if (null != comSwDangerReportDAO.selectById(recordReportDO.getReportId())) {
|
patrol.setDangerOrRecord(1);
|
} else {
|
patrol.setDangerOrRecord(2);
|
}
|
}
|
});
|
}
|
return R.ok(iPage);
|
}
|
|
@Override
|
public R addPatrolRecord(ComSwPatrolRecordAddDTO comSwPatrolRecordAddDTO) {
|
String patrolTypeString = comSwPatrolRecordAddDTO.getPatrolType();
|
Integer isHiddenDanger = comSwPatrolRecordAddDTO.getIsHiddenDanger();
|
String hiddenDangerTypeString = comSwPatrolRecordAddDTO.getHiddenDangerType();
|
if (isBlank(patrolTypeString)) {
|
return R.fail("巡查类型不能为空");
|
}
|
if (isNull(isHiddenDanger) || (isHiddenDanger.intValue() == ComSwPatrolRecordAddDTO.isOk.yes
|
&& isBlank(hiddenDangerTypeString))) {
|
return R.fail("隐患类型不能为空");
|
}
|
StringBuilder nameString = new StringBuilder();
|
StringBuilder phoneString = new StringBuilder();
|
// 根据传递的巡查人员id查询巡查人员的名字和电话
|
if (StringUtils.isNotEmpty(comSwPatrolRecordAddDTO.getPatrolPerson())) {
|
String[] personIds = comSwPatrolRecordAddDTO.getPatrolPerson().split(",");
|
for (int i = 0; i < personIds.length; i++) {
|
Map<String, String> person = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]);
|
if (person != null) {
|
if (i != 0) {
|
nameString.append(",");
|
phoneString.append(",");
|
}
|
nameString.append(person.get("name"));
|
phoneString.append(person.get("phone"));
|
}
|
}
|
}
|
if (StringUtils.isNotEmpty(comSwPatrolRecordAddDTO.getDangerDescription())) {
|
comSwPatrolRecordAddDTO.setDagerDescription(comSwPatrolRecordAddDTO.getDangerDescription());
|
}
|
if (StringUtils.isNotEmpty(comSwPatrolRecordAddDTO.getDagerName())) {
|
comSwPatrolRecordAddDTO.setDangerName(comSwPatrolRecordAddDTO.getDagerName());
|
}
|
List<String> patrolTypes = Arrays.asList(patrolTypeString.split(","));
|
patrolTypes.forEach(patrolType -> {
|
// 巡查记录
|
ComSwPatrolRecordDO comSwPatrolRecordDO = new ComSwPatrolRecordDO();
|
BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwPatrolRecordDO);
|
Long patrolRecordId = Snowflake.getId();
|
comSwPatrolRecordDO.setId(patrolRecordId);
|
comSwPatrolRecordDO.setPatrolType(patrolType);
|
if(StringUtils.isEmpty(comSwPatrolRecordAddDTO.getPatrolTime())){
|
comSwPatrolRecordDO.setPatrolTime(new Date());
|
}else {
|
comSwPatrolRecordDO.setPatrolTime(
|
DateUtils.stringToDate(comSwPatrolRecordAddDTO.getPatrolTime(), DateUtils.yyyyMMdd_format));
|
}
|
// comSwPatrolRecordDO.setPatrolTime(new Date());
|
comSwPatrolRecordDO.setSuccessionTime(
|
DateUtils.stringToDate(comSwPatrolRecordAddDTO.getSuccessionTime(), DateUtils.yyyyMMdd_format));
|
comSwPatrolRecordDO.setPersonName(nameString.toString());
|
comSwPatrolRecordDO.setPersonPhone(phoneString.toString());
|
comSwPatrolRecordDAO.insert(comSwPatrolRecordDO);
|
// 巡查记录和关联报告信息
|
ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = new ComSwPatrolRecordReportDO();
|
Long patrolRecordReport = Snowflake.getId();
|
comSwPatrolRecordReportDO.setId(patrolRecordReport);
|
comSwPatrolRecordReportDO.setPatrolRecordId(patrolRecordId);
|
|
if (isHiddenDanger.intValue() == ComSwPatrolRecordAddDTO.isOk.yes && hiddenDangerTypeString.contains(patrolType)) {
|
// 如果存在安全隐患,自动生成安全隐患报告
|
ComSwDangerReportDO comSwDangerReportDO = new ComSwDangerReportDO();
|
Long dangerReportId = Snowflake.getId();
|
comSwDangerReportDO.setId(dangerReportId);
|
comSwPatrolRecordReportDO.setReportId(dangerReportId);
|
comSwDangerReportDO.setDangerType(patrolType);
|
if (comSwPatrolRecordAddDTO.getIsRectifyImmediately().intValue() == ComSwPatrolRecordAddDTO.isOk.yes
|
&& StringUtils.isNotEmpty(comSwPatrolRecordAddDTO.getTakeSteps())) {
|
comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.YZG.getCode()));
|
comSwDangerReportDO.setRectifyTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
|
} else {
|
comSwDangerReportDO.setStatus(String.valueOf(SafeWordStatusEnum.DCL.getCode()));
|
}
|
BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwDangerReportDO);
|
comSwDangerReportDO.setPersonName(comSwPatrolRecordAddDTO.getDPersonName());
|
comSwDangerReportDO.setPersonPhone(comSwPatrolRecordAddDTO.getDPersonPhone());
|
comSwDangerReportDAO.insert(comSwDangerReportDO);
|
} else {
|
// 不存在安全隐患,生成安全工作记录
|
ComSwSafetyWorkRecordDO comSwSafetyWorkRecordDO = new ComSwSafetyWorkRecordDO();
|
BeanUtils.copyProperties(comSwPatrolRecordAddDTO, comSwSafetyWorkRecordDO);
|
Long safetyWorkRecord = Snowflake.getId();
|
comSwSafetyWorkRecordDO.setId(safetyWorkRecord);
|
comSwPatrolRecordReportDO.setReportId(safetyWorkRecord);
|
comSwSafetyWorkRecordDAO.insert(comSwSafetyWorkRecordDO);
|
}
|
comSwPatrolRecordReportDAO.insert(comSwPatrolRecordReportDO);
|
});
|
return R.ok();
|
}
|
|
@Override
|
public R editPatrolRecord(ComSwPatrolRecordEditDTO comSwPatrolRecordEditDTO) {
|
ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(comSwPatrolRecordEditDTO.getId());
|
if (null == comSwPatrolRecordDO) {
|
return R.fail("改巡查记录不存在");
|
}
|
BeanUtils.copyProperties(comSwPatrolRecordEditDTO, comSwPatrolRecordDO);
|
try {
|
comSwPatrolRecordDO.setPatrolTime(new SimpleDateFormat("yyyy-MM-dd").parse(comSwPatrolRecordEditDTO.getPatrolTime()));
|
comSwPatrolRecordDO.setSuccessionTime(new SimpleDateFormat("yyyy-MM-dd").parse(comSwPatrolRecordEditDTO.getSuccessionTime()));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
// 根据传递的巡查人员id查询巡查人员的名字和电话
|
StringBuilder nameString = new StringBuilder();
|
StringBuilder phoneString = new StringBuilder();
|
if (StringUtils.isNotEmpty(comSwPatrolRecordEditDTO.getPatrolPerson())) {
|
String[] personIds = comSwPatrolRecordEditDTO.getPatrolPerson().split(",");
|
for (int i = 0; i < personIds.length; i++) {
|
Map<String, String> person = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]);
|
if (person != null) {
|
if (i != 0) {
|
nameString.append(",");
|
phoneString.append(",");
|
}
|
nameString.append(person.get("name"));
|
phoneString.append(person.get("phone"));
|
}
|
}
|
comSwPatrolRecordDO.setPersonName(nameString.toString());
|
comSwPatrolRecordDO.setPersonPhone(phoneString.toString());
|
}
|
ComSwPatrolRecordReportDO comSwPatrolRecordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>()
|
.lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, comSwPatrolRecordEditDTO.getId()));
|
ComSwSafetyWorkRecordDO comSwSafetyWorkRecordDO = comSwSafetyWorkRecordDAO.selectOne(new QueryWrapper<ComSwSafetyWorkRecordDO>()
|
.lambda().eq(ComSwSafetyWorkRecordDO::getId, comSwPatrolRecordReportDO.getReportId()));
|
if (null != comSwSafetyWorkRecordDO) {
|
Long id = comSwSafetyWorkRecordDO.getId();
|
BeanUtils.copyProperties(comSwPatrolRecordEditDTO, comSwSafetyWorkRecordDO);
|
comSwSafetyWorkRecordDO.setId(id);
|
comSwSafetyWorkRecordDAO.updateById(comSwSafetyWorkRecordDO);
|
}else {
|
ComSwDangerReportDO comSwDangerReportDO = comSwDangerReportDAO.selectOne(new QueryWrapper<ComSwDangerReportDO>()
|
.lambda().eq(ComSwDangerReportDO::getId, comSwPatrolRecordReportDO.getReportId()));
|
Long id = comSwDangerReportDO.getId();
|
BeanUtils.copyProperties(comSwPatrolRecordEditDTO, comSwDangerReportDO);
|
comSwDangerReportDO.setId(id);
|
comSwDangerReportDAO.updateById(comSwDangerReportDO);
|
}
|
int update = comSwPatrolRecordDAO.updateById(comSwPatrolRecordDO);
|
if (update > 0) {
|
return R.ok();
|
}
|
return R.fail("编辑失败");
|
}
|
|
@Override
|
public R detailPatrolRecord(Long patrolRecordId) {
|
ComSwPatrolRecordDO comSwPatrolRecordDO = comSwPatrolRecordDAO.selectById(patrolRecordId);
|
if (null == comSwPatrolRecordDO) {
|
return R.fail("该巡查记录不存在");
|
}
|
ComSwPatrolRecordVO comSwPatrolRecordVO = new ComSwPatrolRecordVO();
|
BeanUtils.copyProperties(comSwPatrolRecordDO, comSwPatrolRecordVO);
|
ComSwPatrolRecordReportDO comSwPatrolRecordReportDO =
|
comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda()
|
.eq(ComSwPatrolRecordReportDO::getPatrolRecordId, patrolRecordId));
|
if (null != comSwPatrolRecordReportDO) {
|
if (comSwPatrolRecordVO.getIsHiddenDanger().equals(ComSwPatrolRecordVO.isOk.yes)) {
|
ComSwDangerReportDO comSwDangerReportDO=comSwDangerReportDAO.selectById(comSwPatrolRecordReportDO.getReportId());
|
if (null != comSwDangerReportDO) {
|
comSwPatrolRecordVO.setDisplayButton(3);
|
comSwPatrolRecordVO.setDagerNo(comSwDangerReportDO.getDangerNo());
|
} else {
|
comSwPatrolRecordVO.setDisplayButton(2);
|
}
|
} else {
|
if (null != comSwSafetyWorkRecordDAO.selectById(comSwPatrolRecordReportDO.getReportId())) {
|
comSwPatrolRecordVO.setDisplayButton(1);
|
}
|
}
|
}
|
|
// 组装巡查类型
|
if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getPatrolType())) {
|
StringBuilder sb = new StringBuilder();
|
String[] patrolTypes = comSwPatrolRecordVO.getPatrolType().split(",");
|
for (int i = 0; i < patrolTypes.length; i++) {
|
if (i != 0) {
|
sb.append(",");
|
}
|
if (patrolTypes[i].equals("1")) {
|
sb.append("防火巡查");
|
} else if (patrolTypes[i].equals("2")) {
|
sb.append("防汛巡查");
|
} else if (patrolTypes[i].equals("3")) {
|
sb.append("防疫巡查");
|
}
|
}
|
comSwPatrolRecordVO.setPatrolType(sb.toString());
|
}
|
// 查询接班人员信息
|
if (StringUtils.isNotEmpty(comSwPatrolRecordVO.getSuccessionPerson())) {
|
StringBuilder sb = new StringBuilder();
|
String[] personIds = comSwPatrolRecordVO.getSuccessionPerson().split(",");
|
for (int i = 0; i < personIds.length; i++) {
|
if (i != 0) {
|
sb.append(",");
|
}
|
Map<String, String> personMap = comSwPatrolRecordDAO.getPbServiceTeamById(personIds[i]);
|
if (personMap != null) {
|
sb.append(personMap.get("name"));
|
}
|
}
|
comSwPatrolRecordVO.setSuccessionPerson(sb.toString());
|
}
|
|
// 查询填报人名称
|
if (comSwPatrolRecordVO.getCreateBy() != null) {
|
comSwPatrolRecordVO.setCreateName(comSwPatrolRecordDAO.getCreateName(comSwPatrolRecordVO.getCreateBy()));
|
}
|
// 所属社区名称
|
comSwPatrolRecordVO.setCommunityName(comActDAO.selectById(comSwPatrolRecordVO.getCommunityId()).getName());
|
|
ComSwPatrolRecordReportDO recordReportDO =
|
comSwPatrolRecordReportDAO.selectOne(new QueryWrapper<ComSwPatrolRecordReportDO>().lambda()
|
.eq(ComSwPatrolRecordReportDO::getPatrolRecordId, comSwPatrolRecordVO.getId()));
|
if (recordReportDO != null) {
|
comSwPatrolRecordVO.setServiceId(recordReportDO.getReportId());
|
}
|
return R.ok(comSwPatrolRecordVO);
|
}
|
|
@Override
|
public R patrolRecordStatistics(Long communityId) {
|
return R.ok(this.comSwSafetyWorkRecordDAO.patrolRecordStatistics(communityId));
|
}
|
}
|