/* * 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.taskPlaceSelfCheck.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 liquibase.repackaged.org.apache.commons.lang3.StringUtils; 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.patrol.entity.PatrolRecord; import org.springblade.modules.patrol.service.IPatrolRecordService; import org.springblade.modules.place.excel.NinePlaceExcel; import org.springblade.modules.place.vo.PlaceCheckVO; import org.springblade.modules.system.entity.DictBiz; import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.task.service.ITaskService; import org.springblade.modules.taskPlaceRecord.entity.TaskPlaceRecordEntity; import org.springblade.modules.taskPlaceRecord.service.ITaskPlaceRecordService; import org.springblade.modules.taskPlaceRecord.vo.TaskPlaceRecordVO; import org.springblade.modules.taskPlaceRectification.entity.TaskPlaceRectificationEntity; import org.springblade.modules.taskPlaceRectification.service.ITaskPlaceRectificationService; import org.springblade.modules.taskPlaceSelfCheck.dto.TaskPlaceSelfCheckDTO; import org.springblade.modules.taskPlaceSelfCheck.entity.TaskPlaceSelfCheckEntity; import org.springblade.modules.taskPlaceSelfCheck.excel.TaskPlaceSelfCheckExcel; import org.springblade.modules.taskPlaceSelfCheck.vo.TaskPlaceSelfCheckVO; import org.springblade.modules.taskPlaceSelfCheck.mapper.TaskPlaceSelfCheckMapper; import org.springblade.modules.taskPlaceSelfCheck.service.ITaskPlaceSelfCheckService; import org.springblade.core.mp.base.BaseServiceImpl; 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-02-04 */ @Service public class TaskPlaceSelfCheckServiceImpl extends ServiceImpl implements ITaskPlaceSelfCheckService { @Autowired private IDictBizService dictBizService; @Override public IPage selectTaskPlaceSelfCheckPage(IPage page, TaskPlaceSelfCheckVO taskPlaceSelfCheck) { List strings = new ArrayList<>(); if (null!=taskPlaceSelfCheck.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceSelfCheck.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(taskPlaceSelfCheck.getNineType().toString()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } // 公共参数设置 CommonParamSet commonParamSet = new CommonParamSet().invoke(TaskPlaceSelfCheckVO.class,taskPlaceSelfCheck); List placeCheckVOS = baseMapper.selectTaskPlaceSelfCheckPage(page, taskPlaceSelfCheck, commonParamSet.getIsAdministrator(), commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList(), strings); List nineType = dictBizService.list(Wrappers.lambdaQuery().eq(DictBiz::getCode, "nineType").eq(DictBiz::getIsDeleted, 0)); for (TaskPlaceSelfCheckVO placeCheckVO : placeCheckVOS) { int number = 0; for (TaskPlaceRecordVO patrolRecord : placeCheckVO.getTaskPlaceRecordVOList()) { 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); } /** * 查询消防自查记任务表 * * @param taskPlaceSelfCheck 消防自查记任务表ID * @return 消防自查记任务表 */ @Override public TaskPlaceSelfCheckDTO selectTaskPlaceSelfCheckById(TaskPlaceSelfCheckEntity taskPlaceSelfCheck) { return this.baseMapper.selectTaskPlaceSelfCheckById(taskPlaceSelfCheck); } /** * 查询消防自查记任务表列表 * * @param taskPlaceSelfCheckDTO 消防自查记任务表 * @return 消防自查记任务表集合 */ @Override public List selectTaskPlaceSelfCheckList(TaskPlaceSelfCheckDTO taskPlaceSelfCheckDTO) { return this.baseMapper.selectTaskPlaceSelfCheckList(taskPlaceSelfCheckDTO); } @Override @Transactional(rollbackFor = Exception.class) public Boolean savePlace(TaskPlaceSelfCheckVO taskPlaceSelfCheck) throws Exception { taskPlaceSelfCheck.setCreateUser(AuthUtil.getUserId()); // 1.保存任务表 ITaskService bean2 = SpringUtils.getBean(ITaskService.class); Long aLong = bean2.saveTask(CommonConstant.NUMBER_ONE, DictConstant.FIRE_SELF_CHECK_NOTICE, 1, "", AuthUtil.getUserId(), taskPlaceSelfCheck.getHouseCode(), CommonConstant.NUMBER_TWO, 1); if (aLong <= 0) { return false; } taskPlaceSelfCheck.setTaskId(aLong); // 2.保存任务详情 boolean save = save(taskPlaceSelfCheck); if (save) { // 3.保存题目记录 List taskPlaceRecordList = taskPlaceSelfCheck.getTaskPlaceRecordVOList(); ITaskPlaceRecordService bean = SpringUtil.getBean(ITaskPlaceRecordService.class); taskPlaceRecordList.stream().forEach(item -> { item.setTaskPlaceSelfCheckId(taskPlaceSelfCheck.getId()); item.setCreateUser(AuthUtil.getUserId()); }); List collect = taskPlaceRecordList.stream().filter(item -> item.getState().equals(0)).collect(Collectors.toList()); boolean b = bean.saveBatch(collect); updateById(taskPlaceSelfCheck); if (b) { return b; } throw new Exception("保存失败!"); } return false; } @Override @Transactional(rollbackFor = Exception.class) public Boolean updateTaskPlaceSelfCheck(TaskPlaceSelfCheckVO taskPlaceSelfCheck) throws Exception { // 1.更新任务表 ITaskService taskService = SpringUtils.getBean(ITaskService.class); Long aLong = taskService.updateTask(null, null, null, taskPlaceSelfCheck.getReasonFailure(), AuthUtil.getUserId(), taskPlaceSelfCheck.getTaskId(), taskPlaceSelfCheck.getStatus()); if (aLong <= 0) { return false; } // 2.更新任务详情 boolean save = updateById(taskPlaceSelfCheck); if (save) { // 3.更新题目记录 List taskPlaceRecordList = taskPlaceSelfCheck.getTaskPlaceRecordVOList(); if (taskPlaceRecordList != null && taskPlaceRecordList.size() > 0) { ITaskPlaceRecordService bean = SpringUtil.getBean(ITaskPlaceRecordService.class); List copy = BeanUtil.copy(taskPlaceRecordList, TaskPlaceRecordEntity.class); boolean b = bean.saveOrUpdateBatch(copy); if (b) { return b; } throw new Exception("保存失败!"); } return save; } throw new Exception("保存失败!"); } /** * 导出消防自查信息 * @param taskPlaceSelfCheck * @return */ @Override public List exportTaskPlaceSelfCheck(TaskPlaceSelfCheckVO taskPlaceSelfCheck) { List strings = new ArrayList<>(); if (null!=taskPlaceSelfCheck.getNineType()){ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("is_deleted",0).eq("dict_key",taskPlaceSelfCheck.getNineType()).eq("code","nineType"); // 先查询当前 DictBiz one = dictBizService.getOne(queryWrapper); // 查询本身和子集的key List list = dictBizService.getList("nineType", one.getId()); if (list.size()==0){ strings.add(taskPlaceSelfCheck.getNineType().toString()); }else { strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList()); } } // 公共参数设置 CommonParamSet commonParamSet = new CommonParamSet().invoke(TaskPlaceSelfCheckVO.class,taskPlaceSelfCheck); List taskPlaceSelfCheckExcels = baseMapper.exportTaskPlaceSelfCheck( strings, taskPlaceSelfCheck, commonParamSet.getIsAdministrator(), commonParamSet.getRegionChildCodesList(), commonParamSet.getGridCodeList()); // 返回 List nineType = dictBizService.list(Wrappers.lambdaQuery().eq(DictBiz::getCode, "nineType").eq(DictBiz::getIsDeleted, 0)); for (TaskPlaceSelfCheckExcel ninePlaceExcel : taskPlaceSelfCheckExcels) { for (DictBiz dictBiz : nineType) { if (StringUtils.isNotBlank(ninePlaceExcel.getNineType()) && ninePlaceExcel.getNineType().equals(dictBiz.getDictKey())) { if (ninePlaceExcel.getNineType().contains("10,11,12")) { ninePlaceExcel.setNineType("小学校(幼儿园、校外培训机构)- " + dictBiz.getDictValue()); } else if (ninePlaceExcel.getNineType().contains("13,14,15")) { ninePlaceExcel.setNineType("小医院(诊所、养老院)- " + dictBiz.getDictValue()); } else { ninePlaceExcel.setNineType(dictBiz.getDictValue()); } } } } return taskPlaceSelfCheckExcels; } }