/* * 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.task.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.exception.CustomException; import org.springblade.common.param.CommonParamSet; import org.springblade.common.utils.AuthUtils; 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.system.entity.DictBiz; import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.task.dto.TaskPlaceSelfCheckDTO; import org.springblade.modules.task.entity.TaskEntity; import org.springblade.modules.task.entity.TaskPlaceRecordEntity; import org.springblade.modules.task.entity.TaskPlaceSelfCheckEntity; import org.springblade.modules.task.excel.TaskPlaceSelfCheckExcel; import org.springblade.modules.task.mapper.TaskPlaceSelfCheckMapper; import org.springblade.modules.task.service.ITaskPlaceRecordService; import org.springblade.modules.task.service.ITaskPlaceSelfCheckService; import org.springblade.modules.task.service.ITaskService; import org.springblade.modules.task.vo.TaskPlaceRecordVO; import org.springblade.modules.task.vo.TaskPlaceSelfCheckVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; 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) { taskPlaceSelfCheck.setCreateUser(AuthUtil.getUserId()); // 1.保存任务表 ITaskService iTaskService = SpringUtils.getBean(ITaskService.class); Long restults; AtomicBoolean isState = new AtomicBoolean(false); List taskPlaceRecordList = taskPlaceSelfCheck.getTaskPlaceRecordVOList(); for (TaskPlaceRecordVO taskPlaceRecordVO : taskPlaceRecordList) { // 判断类型 if (StringUtils.isNotBlank(taskPlaceSelfCheck.getType()) && taskPlaceSelfCheck.getType().equals("2")) { taskPlaceRecordVO.setType("3"); } else { taskPlaceRecordVO.setType("1"); } // 判断是否有隐患 if (taskPlaceRecordVO.getState().equals(0)) { isState.set(true); } } if (taskPlaceSelfCheck.getTaskId() == null) { if (StringUtils.isNotBlank(taskPlaceSelfCheck.getType()) && taskPlaceSelfCheck.getType().equals("2")) { // 不存在隐患。状态直接为已审核 if (!isState.get()) { taskPlaceSelfCheck.setStatus(2); taskPlaceSelfCheck.setRectificationFlag(3); } else { taskPlaceSelfCheck.setStatus(1); taskPlaceSelfCheck.setRectificationFlag(1); } restults = iTaskService.saveTask(CommonConstant.NUMBER_ONE, DictConstant.FIRE_SCHOOL_CHECK_NOTICE, 1, "", AuthUtil.getUserId(), taskPlaceSelfCheck.getHouseCode(), CommonConstant.NUMBER_FOUR, taskPlaceSelfCheck.getStatus()); } else { restults = iTaskService.saveTask(CommonConstant.NUMBER_ONE, DictConstant.FIRE_SELF_CHECK_NOTICE, 1, "", AuthUtil.getUserId(), taskPlaceSelfCheck.getHouseCode(), CommonConstant.NUMBER_SEVEN, 1); } if (restults <= 0) { return false; } taskPlaceSelfCheck.setTaskId(restults); } else { iTaskService.update(Wrappers.lambdaUpdate() .set(TaskEntity::getStatus, taskPlaceSelfCheck.getStatus()) .eq(TaskEntity::getId, taskPlaceSelfCheck.getTaskId())); } // 2.保存任务详情 boolean save = saveOrUpdate(taskPlaceSelfCheck); if (save) { // 3.保存题目记录 taskPlaceRecordList.stream().forEach(item -> { item.setTaskPlaceSelfCheckId(taskPlaceSelfCheck.getId()); item.setCreateUser(AuthUtil.getUserId()); }); ITaskPlaceRecordService taskPlaceRecordService = SpringUtil.getBean(ITaskPlaceRecordService.class); List collect = taskPlaceRecordList.stream().collect(Collectors.toList()); if (collect.size() > 0) { taskPlaceRecordService.saveBatch(collect); } updateById(taskPlaceSelfCheck); return save; } return false; } @Override @Transactional public Boolean updateTaskPlaceSelfCheck(TaskPlaceSelfCheckVO taskPlaceSelfCheck) { // 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 placeRecordEntityList = BeanUtil.copy(taskPlaceRecordList, TaskPlaceRecordEntity.class); boolean updateBatch = bean.saveOrUpdateBatch(placeRecordEntityList); if (updateBatch) { return updateBatch; } throw new CustomException("保存失败!"); } return save; } throw new CustomException("保存失败!"); } /** * 导出消防自查信息 * * @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; } @Override public Integer getCount(String neiCode, int status, int type) { // 获取请求头中的角色别名 String roleName = SpringUtils.getRequestParam("roleName"); if (AuthUtils.isMj(roleName)) { return baseMapper.getCount(neiCode, status, AuthUtil.getUserId(), type); } return 0; } @Override public TaskPlaceSelfCheckEntity getDetailByTaskId(Long taskId) { return baseMapper.getDetailByTaskId(taskId); } }