package com.epmet.controller; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.excel.data.*; import com.epmet.service.LingShanSpecialCrowdService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Date; import java.util.List; /** * @description: 灵山社会维稳(特殊人群) * @param null: * @return * @author: WangXianZhang * @date: 2023/4/18 9:08 AM */ @Slf4j @RestController @RequestMapping("lingShan/specialCrowd") public class LingShanSpecialCrowdController { @Autowired private LingShanSpecialCrowdService lingShanSpecialCrowdService; /** * @description: 特殊人群导入 * @param file: * @param crowdCategory: 人群类别 * anzhibangjiao * buliangqingshaonian * shequjiaozheng * xidurenyuan * xiejiaorenyuan * zhaoshizhaohuojingshenbing * @return * @author: WangXianZhang * @date: 2023/4/18 9:12 AM */ @PostMapping("import") public Result importSpecialCowd(MultipartFile file, @RequestParam("crowdCategory") String crowdCategory) { String originalFilename = file.getOriginalFilename(); String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 1.存文件 Path fileSavePath = saveSpecialCrowdTempFile(file, suffix); // 2.执行业务导入 try { String taskId = lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); return new Result().ok(taskId); } catch (Exception e) { // 3.出错的话,删除文件 FileUtils.deleteFileIfExists(fileSavePath); throw e; } } /** * @description: 保存特殊人群临时文件 * @param file: * @return * @author: WangXianZhang * @date: 2023/4/18 9:46 AM */ public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file, String suffix) { Path fileSavePath; FileOutputStream os = null; try { Path fileSaveDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("special_crowd_import"); String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()) + suffix; fileSavePath = fileSaveDir.resolve(fileName); IOUtils.copy(file.getInputStream(), (os = new FileOutputStream(fileSavePath.toString()))); return fileSavePath; } catch (IOException e) { log.error("【灵山街道】导入社会维稳数据,缓存文件失败。"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, null); } finally { org.apache.poi.util.IOUtils.closeQuietly(os); } } /** * @description: 安置帮教新增 * @param azbjData: * @return * @author: WangXianZhang * @date: 2023/4/20 2:50 PM */ @PostMapping("anzhibangjiao/create") public Result createSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { ValidatorUtils.validateEntity(azbjData); lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); return new Result(); } @PostMapping("xidurenyuan/create") public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { ValidatorUtils.validateEntity(jdryData); lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "xidurenyuan"); return new Result(); } @PostMapping("jingzhanhuanzhe/create") public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { ValidatorUtils.validateEntity(jzhzData); lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); return new Result(); } @PostMapping("shequjiaozheng/create") public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { ValidatorUtils.validateEntity(sqjzData); lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); return new Result(); } @PostMapping("xinfangrenyuan/create") public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { ValidatorUtils.validateEntity(xfryData); lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); return new Result(); } /** * @description: 特殊人群详情 * @param personId: * @param specialType: * @return * @author: WangXianZhang * @date: 2023/4/20 3:44 PM */ @GetMapping("getPersonSpecialTypeDetail") public Result getPersonSpecialTypeDetail(@RequestParam("idCard") String idCard, @RequestParam("specialType") String specialType, @RequestParam("specialDetailId") String specialDetailId) { LingShanSpecialCrowdDetailBaseExcelData r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(idCard, specialType, specialDetailId); return new Result().ok(r); } /** * @description: 列表查询 * @param orgId: * @param orgType: * @param specialType: * @param name: * @param mobile: * @param idCard: * @return * @author: WangXianZhang * @date: 2023/4/20 5:42 PM */ @GetMapping("listSpecialCrowd") public Result> listSpecialCrowds(@RequestParam(value = "orgId", required = false) String orgId, @RequestParam(value = "orgType", required = false) String orgType, @RequestParam(value = "specialType", required = false) String specialType, @RequestParam(value = "name", required = false) String name, @RequestParam(value = "mobile", required = false) String mobile, @RequestParam(value = "idCard", required = false) String idCard, @RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize) { PageData pd = lingShanSpecialCrowdService.listSpecialCrowds(orgId, orgType, specialType, name, mobile, idCard, pageNo, pageSize); return new Result>().ok(pd); } }