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 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 map = comSwPatrolRecordDAO.getPbServiceTeamCardNo(comSwPatrolRecordPageDTO.getPatrolPerson()); if (map != null) { comSwPatrolRecordPageDTO.setPatrolPerson(map.get("id").toString()); } } IPage iPage = comSwPatrolRecordDAO.pagePatrolRecord( new Page(comSwPatrolRecordPageDTO.getPageNum(), comSwPatrolRecordPageDTO.getPageSize()), comSwPatrolRecordPageDTO); if (!iPage.getRecords().isEmpty()) { iPage.getRecords().forEach(patrol -> { ComSwPatrolRecordReportDO recordReportDO = comSwPatrolRecordReportDAO.selectOne(new QueryWrapper().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 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 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 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() .lambda().eq(ComSwPatrolRecordReportDO::getPatrolRecordId, comSwPatrolRecordEditDTO.getId())); ComSwSafetyWorkRecordDO comSwSafetyWorkRecordDO = comSwSafetyWorkRecordDAO.selectOne(new QueryWrapper() .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() .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().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 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().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)); } }