/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.place.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xxl.job.core.util.FileUtil; import liquibase.repackaged.org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.common.cache.SysCache; import org.springblade.common.constant.CommonConstant; import org.springblade.common.constant.DictConstant; import org.springblade.common.param.CommonParamSet; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.modules.grid.service.IGridService; import org.springblade.modules.patrol.entity.PatrolRecord; import org.springblade.modules.patrol.service.IPatrolRecordService; import org.springblade.modules.place.dto.PlaceCheckDTO; import org.springblade.modules.place.entity.PlaceCheckEntity; import org.springblade.modules.place.excel.NinePlaceExcel; import org.springblade.modules.place.excel.PlaceCheckExcel; import org.springblade.modules.place.service.IPlaceService; import org.springblade.modules.place.vo.PlaceCheckVO; import org.springblade.modules.place.mapper.PlaceCheckMapper; import org.springblade.modules.place.service.IPlaceCheckService; import org.springblade.modules.police.service.IPoliceAffairsGridService; import org.springblade.modules.system.entity.DictBiz; import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.system.service.IRegionService; import org.springblade.modules.task.service.ITaskService; import org.springblade.modules.task.vo.TaskLabelReportingEventVO; import org.springblade.modules.taskPlaceRectification.entity.TaskPlaceRectificationEntity; import org.springblade.modules.taskPlaceRectification.service.ITaskPlaceRectificationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** * 场所检查表 服务实现类 * * @author BladeX * @since 2024-01-27 */ @Service public class PlaceCheckServiceImpl extends ServiceImpl implements IPlaceCheckService { private static Logger logger = LoggerFactory.getLogger(PlaceCheckServiceImpl.class); @Autowired private IDictBizService dictBizService; @Override public IPage selectPlaceCheckPage(IPage page, PlaceCheckVO placeCheck) { List strings = new ArrayList<>(); if (null!=placeCheck.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",placeCheck.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(placeCheck.getNineType().toString()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } // 公共参数设置 CommonParamSet commonParamSet = new CommonParamSet().invoke(PlaceCheckVO.class,placeCheck); List placeCheckVOS = baseMapper.selectPlaceCheckPage(page, placeCheck, commonParamSet.getIsAdministrator(), commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList(), strings); List nineType = dictBizService.list(Wrappers.lambdaQuery().eq(DictBiz::getCode, "nineType").eq(DictBiz::getIsDeleted, 0)); for (PlaceCheckVO placeCheckVO : placeCheckVOS) { int number = 0; for (PatrolRecord patrolRecord : placeCheckVO.getPatrolRecordVOList()) { if (patrolRecord.getState().equals(0)) { number++; } } placeCheckVO.setNumber(number); for (DictBiz dictBiz : nineType) { if (StringUtils.isNotBlank(placeCheckVO.getNineType()) && placeCheckVO.getNineType().equals(dictBiz.getDictKey())) { if (placeCheckVO.getNineType().contains("10,11,12")) { placeCheckVO.setNineType("小学校(幼儿园、校外培训机构)- " + dictBiz.getDictValue()); } else if (placeCheckVO.getNineType().contains("13,14,15")) { placeCheckVO.setNineType("小医院(诊所、养老院)- " + dictBiz.getDictValue()); } else { placeCheckVO.setNineType(dictBiz.getDictValue()); } } } } return page.setRecords(placeCheckVOS); } @Override @Transactional(rollbackFor = Exception.class) public Boolean savePlace(PlaceCheckVO placeCheck) throws Exception { placeCheck.setCreateUser(AuthUtil.getUserId()); List patrolRecordVOList = placeCheck.getPatrolRecordVOList(); AtomicReference number = new AtomicReference<>(0); patrolRecordVOList.stream().forEach(item -> { if (item.getState().equals(0)) { number.getAndSet(number.get() + 1); } }); placeCheck.setHiddenDangerNumber(number.get()); boolean save = save(placeCheck); if (save) { IPatrolRecordService bean = SpringUtil.getBean(IPatrolRecordService.class); patrolRecordVOList.stream().forEach(item -> { item.setPlaceCheckId(placeCheck.getId()); item.setCreateUser(AuthUtil.getUserId()); }); // List collect = patrolRecordVOList.stream().filter(item -> item.getState().equals(0)).collect(Collectors.toList()); if (patrolRecordVOList != null && patrolRecordVOList.size() > 0) { boolean b = bean.saveBatch(patrolRecordVOList); if (b) { // 隐患问题大于0 则创建任务 try { Integer integer = number.get(); if (integer > 0) { // 保存任务表 ITaskService bean2 = SpringUtils.getBean(ITaskService.class); Long aLong = bean2.saveTask(CommonConstant.NUMBER_FOUR, DictConstant.FIRE_RECTIFICATION_NOTICE, 1, "", AuthUtil.getUserId(), placeCheck.getHouseCode(), CommonConstant.NUMBER_EIGHT, 4); if (aLong > 0) { // 保存任务详情表 ITaskPlaceRectificationService bean1 = SpringUtil.getBean(ITaskPlaceRectificationService.class); TaskPlaceRectificationEntity copy = BeanUtil.copy(placeCheck, TaskPlaceRectificationEntity.class); copy.setTaskId(aLong); copy.setPlaceCheckId(placeCheck.getId()); copy.setId(null); copy.setStatus(4); bean1.save(copy); } } } catch (Exception e) { logger.error("任务保存失败!", e); } return b; } } return save; } return false; } /** * 查询场所检查表 * * @param id 场所检查表ID * @return 场所检查表 */ @Override public PlaceCheckVO selectPlaceCheckById(Long id) { return this.baseMapper.selectPlaceCheckById(id); } /** * 查询场所检查表列表 * * @param placeCheckDTO 场所检查表 * @return 场所检查表集合 */ @Override public List selectPlaceCheckList(PlaceCheckDTO placeCheckDTO) { return this.baseMapper.selectPlaceCheckList(placeCheckDTO); } /** * 导出场所检查信息 * @param placeCheck */ @Override public List exportPlaceCheck(PlaceCheckVO placeCheck) { List strings = new ArrayList<>(); if (null!=placeCheck.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",placeCheck.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(placeCheck.getNineType()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } // 公共参数设置 CommonParamSet commonParamSet = new CommonParamSet().invoke(PlaceCheckVO.class,placeCheck); List placeCheckVOS = baseMapper.selectPlaceCheckListExcel(placeCheck, commonParamSet.getIsAdministrator(), commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList(), strings); List nineType = dictBizService.list(Wrappers.lambdaQuery().eq(DictBiz::getCode, "nineType").eq(DictBiz::getIsDeleted, 0)); for (PlaceCheckExcel placeCheckVO : placeCheckVOS) { for (DictBiz dictBiz : nineType) { if (StringUtils.isNotBlank(placeCheckVO.getNineType()) && placeCheckVO.getNineType().equals(dictBiz.getDictKey())) { if (placeCheckVO.getNineType().contains("10,11,12")) { placeCheckVO.setNineType("小学校(幼儿园、校外培训机构)- " + dictBiz.getDictValue()); } else if (placeCheckVO.getNineType().contains("13,14,15")) { placeCheckVO.setNineType("小医院(诊所、养老院)- " + dictBiz.getDictValue()); } else { placeCheckVO.setNineType(dictBiz.getDictValue()); } } } } // 返回 return placeCheckVOS; } }