package com.gk.hotwork.Service.ServiceImpl; 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.gk.hotwork.Domain.*; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.Utils.StringUtils; import com.gk.hotwork.Mapper.EmergencyPlanFileMapper; import com.gk.hotwork.Mapper.EmergencyPlanMapper; import com.gk.hotwork.Service.EmergencyPlanService; import org.apache.commons.collections4.CollectionUtils; 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.Date; import java.util.List; import java.util.Map; @Service("emergencyPlanService") @Transactional public class EmergencyPlanImpl extends ServiceImpl implements EmergencyPlanService { @Autowired private EmergencyPlanMapper emergencyPlanMapper; @Autowired private EmergencyPlanFileMapper emergencyPlanFileMapper; /** * @Description: 分页 */ @Override public IPage selectPage(Page page, Map filter, UserInfo user) { IPage res = emergencyPlanMapper.selectPages(page,filter); if (CollectionUtils.isNotEmpty(res.getRecords())){ for (int i = 0 ; i < res.getRecords().size(); i++){ List fileList = emergencyPlanFileMapper.getByEmergencyPlanId(res.getRecords().get(i).getId()); res.getRecords().get(i).setFileList(fileList); } } return res; } /** * @Description: 新增 */ @Override public void addOne(EmergencyPlan param, UserInfo user) { requiredVerification(param); Date date = new Date(); String username = user.getRealname(); param.setValidFlag(Boolean.TRUE); param.setUpdateBy(username); param.setCreateBy(username); param.setUpdateTime(date); param.setCreateTime(date); this.save(param); if (CollectionUtils.isNotEmpty(param.getFileList())){ for (EmergencyPlanFile emergencyPlanFile : param.getFileList()){ emergencyPlanFile.setValidFlag(Boolean.TRUE); emergencyPlanFile.setUpdateBy(username); emergencyPlanFile.setCreateBy(username); emergencyPlanFile.setUpdateTime(date); emergencyPlanFile.setCreateTime(date); emergencyPlanFile.setEmergencyPlanId(param.getId()); emergencyPlanFileMapper.insert(emergencyPlanFile); } } } /** * @Description: 修改 */ @Override public void modOne(EmergencyPlan param, UserInfo user) { Date date = new Date(); String username = user.getRealname(); selectVerification(param.getId()); requiredVerification(param); param.setUpdateTime(date); param.setUpdateBy(username); this.updateById(param); //对比删除文件 List oldFileList = emergencyPlanFileMapper.getByEmergencyPlanId(param.getId()); List newFileList = param.getFileList(); List oldIdList = new ArrayList<>(); List newIdList = new ArrayList<>(); for (EmergencyPlanFile oldEmergencyPlanFile :oldFileList ){ oldIdList.add(oldEmergencyPlanFile.getId()); } for (EmergencyPlanFile newEmergencyPlanFile :newFileList ){ if (newEmergencyPlanFile.getId()==null){ //1.添加新增的元素 newEmergencyPlanFile.setValidFlag(Boolean.TRUE); newEmergencyPlanFile.setUpdateBy(username); newEmergencyPlanFile.setCreateBy(username); newEmergencyPlanFile.setUpdateTime(date); newEmergencyPlanFile.setCreateTime(date); newEmergencyPlanFile.setEmergencyPlanId(param.getId()); emergencyPlanFileMapper.insert(newEmergencyPlanFile); }else{ newIdList.add(newEmergencyPlanFile.getId()); } } //2.删除不存在的元素 List diffList = getDif(oldIdList,newIdList); if (CollectionUtils.isNotEmpty(diffList)){ for (Long id : diffList){ emergencyPlanFileMapper.deleteById(id,username,date); } } } public List getDif(List oldIdList , List newIdList ){ ArrayList dif = new ArrayList<>(); //查找出oldIdList表中不包含newIdList的元素 for (Long id : oldIdList) { if (!(newIdList.contains(id))) { dif.add(id); } } return dif; } /** * @Description: 删除 */ @Override public void delOne(Long id, UserInfo user) { selectVerification(id); EmergencyPlan delOne = new EmergencyPlan(); delOne.setId(id); delOne.setUpdateTime(new Date()); delOne.setUpdateBy(user.getRealname()); delOne.setValidFlag(Boolean.FALSE); this.updateById(delOne); } /** * 查询验证 * 验证对象存在 */ public void selectVerification(Long id){ if (id == null) throw new BusinessException("id传参不能为空"); EmergencyPlan EmergencyPlan = this.getById(id); if (EmergencyPlan == null) throw new BusinessException("找不到对应实体"); } /** * 操作验证 * 验证必填项 * */ public void requiredVerification(EmergencyPlan param){ if(StringUtils.isBlank(param.getName())) throw new BusinessException("请填写应急预案名称"); if (param.getFileType() == null) throw new BusinessException("请选择应急预案文件类型"); if (param.getFileType() == 0 && CollectionUtils.isEmpty(param.getFileList())){ throw new BusinessException("请上传图片"); } if (param.getFileType() == 1 && CollectionUtils.isEmpty(param.getFileList())){ throw new BusinessException("请上传文件"); } } }