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.MonitorPoint;
import com.moral.api.entity.Organization;
import com.moral.api.entity.Supervision;
import com.moral.api.mapper.SupervisionMapper;
import com.moral.api.service.MonitorPointService;
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;
@Autowired
private MonitorPointService monitorPointService;
@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");
QueryWrapper supervisionQueryWrapper = new QueryWrapper<>();
supervisionQueryWrapper.eq("is_delete", Constants.NOT_DELETE);
if (params.get("organizationId") != null) {
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 queryWrapper = new QueryWrapper<>();
queryWrapper.select("city_code")
.eq("is_delete", Constants.NOT_DELETE)
.in("organization_id", orgIds);
//根据组织id查询所有站点市级code
List