package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.Organization; import com.moral.api.entity.Supervision; import com.moral.api.mapper.SupervisionMapper; import com.moral.api.service.OrganizationService; import com.moral.api.service.SupervisionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.util.FileUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.system.ApplicationHome; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; /** *

* 督办单 服务实现类 *

* * @author moral * @since 2022-01-12 */ @Service @Slf4j public class SupervisionServiceImpl extends ServiceImpl implements SupervisionService { @Autowired private SupervisionMapper supervisionMapper; @Autowired private OrganizationService organizationService; @Override @Transactional public Map add(MultipartFile[] files, Supervision supervision) { //获取jar包所在目录 ApplicationHome applicationHome = new ApplicationHome(getClass()); //在jar包所在目录下生成一个upload文件夹用来存储上传的图片 String path = applicationHome.getSource().getParentFile().toString() + "/static/img"; Map result = new HashMap<>(); List images = new ArrayList<>(); for (MultipartFile file : files) { //判断上传文件格式 String fileType = file.getContentType(); if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)) { //获取文件名 String fileName = file.getOriginalFilename(); //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //重新生成文件名 fileName = UUID.randomUUID() + suffixName; //图片上传 if (FileUtils.upload(file, path, fileName)) { images.add(fileName); } } else { result.put("code", ResponseCodeEnum.IMG_UPLOAD_FAIl.getCode()); result.put("msg", ResponseCodeEnum.IMG_UPLOAD_FAIl.getMsg()); return result; } } if (!ObjectUtils.isEmpty(images)) { String image = images.stream() .map(String::valueOf) .collect(Collectors.joining(",")); supervision.setImages(image); } supervisionMapper.insert(supervision); return result; } @Override public Map selectSupervisions(Map params) { //获取查询参数 int page = Integer.parseInt(params.get("page").toString()); int size = Integer.parseInt(params.get("size").toString()); Object start = params.get("start"); Object end = params.get("end"); Integer orgId = Integer.parseInt(params.get("organizationId").toString()); //获取组织下所有子组织 List organizations = organizationService.getChildrenOrganizationsById(orgId); List orgIds = organizations.stream().map(Organization::getId).collect(Collectors.toList()); orgIds.add(orgId); QueryWrapper supervisionQueryWrapper = new QueryWrapper<>(); supervisionQueryWrapper.eq("is_delete", Constants.NOT_DELETE).in("organization_id", orgIds); //如果指定了地区,就获取该组织及其子组织下该地区的。否则获取该组织及其子组织下所有的 if (params.get("cityCode") != null) { String cityCode = params.get("cityCode").toString(); //如果是市级,就查询该市下所有县市区的,否则只查询该县市区的 if (cityCode.endsWith("00")) { supervisionQueryWrapper.eq("CONCAT(LEFT(city_code,4),'00')", cityCode); } else { supervisionQueryWrapper.eq("city_code", cityCode); } } if (start != null) { supervisionQueryWrapper.ge("time", start); } if (start != null) { supervisionQueryWrapper.le("time", end); } //按time倒序 supervisionQueryWrapper.orderByDesc("time"); //分页 Page supervisionPage = new Page<>(page, size); supervisionMapper.selectPage(supervisionPage, supervisionQueryWrapper); List supervisions = supervisionPage.getRecords(); Map result = new LinkedHashMap<>(); result.put("total", supervisionPage.getTotal()); result.put("totalPage", supervisionPage.getPages()); result.put("current", supervisionPage.getCurrent()); result.put("pageSize", supervisionPage.getSize()); result.put("item", supervisions); return result; } @Override @Transactional public Map updateSupervision(MultipartFile[] files, Supervision supervision) { //获取jar包所在目录 ApplicationHome applicationHome = new ApplicationHome(getClass()); //在jar包所在目录下生成一个upload文件夹用来存储上传的图片 String path = applicationHome.getSource().getParentFile().toString() + "/static/img"; Map result = new HashMap<>(); List images = new ArrayList<>(); for (MultipartFile file : files) { //判断上传文件格式 String fileType = file.getContentType(); if ("image/jpg".equals(fileType) || "image/png".equals(fileType) || "image/jpeg".equals(fileType)) { //获取文件名 String fileName = file.getOriginalFilename(); //获取文件后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //重新生成文件名 fileName = UUID.randomUUID() + suffixName; //图片上传 if (FileUtils.upload(file, path, fileName)) { images.add(fileName); } } else { result.put("code", ResponseCodeEnum.IMG_UPLOAD_FAIl.getCode()); result.put("msg", ResponseCodeEnum.IMG_UPLOAD_FAIl.getMsg()); return result; } } if (!ObjectUtils.isEmpty(images)) { String image = images.stream() .map(String::valueOf) .collect(Collectors.joining(",")); supervision.setImages(image); } supervisionMapper.updateById(supervision); return result; } @Override @Transactional public void deleteSupervision(Integer supervisionId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "images").eq("id", supervisionId); Supervision supervision = supervisionMapper.selectOne(queryWrapper); String[] images = supervision.getImages().split(","); //逻辑删除 supervision.setIsDelete(Constants.DELETE); supervision.setImages(null); supervisionMapper.updateById(supervision); //删除服务器中的督办单中图片 ApplicationHome applicationHome = new ApplicationHome(getClass()); String path = applicationHome.getSource().getParentFile().toString() + "/static/img"; for (String image : images) { String realPath = path + File.separator + image; File file = new File(realPath); if (file.exists() && file.isFile()) { file.delete(); } } } }