package com.ruoyi.web.controller.archive; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.poi.ExcelExp; import com.ruoyi.common.utils.poi.ExcelUtilManySheetFour; import com.ruoyi.domain.ArchiveRecords; import com.ruoyi.domain.DocumentMaterials; import com.ruoyi.domain.dto.searSigAnn; import com.ruoyi.domain.vo.*; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.service.IArchiveRecordsService; import com.ruoyi.service.IDocumentMaterialsService; import com.ruoyi.service.impl.BarcodeService; import com.ruoyi.service.impl.pdfGenerateService; import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; import static com.ruoyi.common.core.page.TableSupport.PAGE_NUM; import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE; /** * 档案记录Controller * * @author ruoyi * @date 2025-07-12 */ @RestController @RequestMapping("/system/records") public class ArchiveRecordsController extends BaseController { @Autowired private IArchiveRecordsService archiveRecordsService; @Autowired private BarcodeService barcodeService; @Autowired private pdfGenerateService pdfGenerateService; @Autowired private IDocumentMaterialsService iDocumentMaterialsService; /** * 查询档案完成情况 */ @PreAuthorize("@ss.hasPermi('system:records:list')") @GetMapping("/analysisRes") public AjaxResult analysis() { System.out.println("009099"); return new AjaxResult(200, "查询成功", archiveRecordsService.statisticAya()); } @PreAuthorize("@ss.hasPermi('system:records:export')") @Log(title = "档案分析结果导出", businessType = BusinessType.EXPORT) @PostMapping("/exportAllStatis") public void exportAllStatis(HttpServletResponse response) { List list = archiveRecordsService.statisticAya(); ExcelUtil util = new ExcelUtil(AnalysisResult.class); util.exportExcel(response, list, "案卷目录"); } /** * 查询档案记录列表 */ @PreAuthorize("@ss.hasPermi('system:records:list')") @GetMapping("/list") public AjaxResult list(ArchiveRecords archiveRecords) { Integer pageNum = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1); Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10); return archiveRecordsService.selectDataList(archiveRecords, pageNum, pageSize); } /** * 拿到最大id */ @PreAuthorize("@ss.hasPermi('system:records:list')") @GetMapping("/getMaxId") public AjaxResult getMaxId() { return success(archiveRecordsService.getMaxId() + 1); } /** * 导出档案记录列表 */ @PreAuthorize("@ss.hasPermi('system:records:export')") @Log(title = "档案记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, ArchiveRecords archiveRecords, @RequestParam(value = "ids", required = false) Long[] ids) { List list; System.out.println(ids); // 如果提供了ids参数,则根据ids导出指定记录 if (ids != null && ids.length > 0) { list = archiveRecordsService.selectArchiveRecordsByIds(ids); } else { // 否则根据查询条件导出 list = archiveRecordsService.selectArchiveRecordsList(archiveRecords); } ExcelUtil util = new ExcelUtil(ArchiveRecords.class); util.exportExcel(response, list, "档案记录数据"); } /** * 获取档案记录详细信息 */ @PreAuthorize("@ss.hasPermi('system:records:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { ArchiveRecords records = archiveRecordsService.selectArchiveRecordsById(id); if (records != null) return new AjaxResult(200, "查询成功", records); else return new AjaxResult(201, "查询失败!"); } /** * 新增档案记录 */ @PreAuthorize("@ss.hasPermi('system:records:add')") @Log(title = "档案记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ArchiveRecords archiveRecords) { int res = archiveRecordsService.insertArchiveRecords(archiveRecords); System.out.println(res); if (res == 0) { System.out.println(res); return new AjaxResult(0, "档案号已经存在了!"); } else return new AjaxResult(200, "添加成功了!"); } /** * 修改档案记录 */ @PreAuthorize("@ss.hasPermi('system:records:edit')") @Log(title = "档案记录", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ArchiveRecords archiveRecords) { return toAjax(archiveRecordsService.updateArchiveRecords(archiveRecords)); } @PreAuthorize("@ss.hasPermi('system:records:edit')") @Log(title = "档案记录", businessType = BusinessType.UPDATE) @PostMapping(value = "/updateSByIds") public AjaxResult updateStatusByIds(@RequestBody Long[] ids) { System.out.println(ids); System.out.println("090sdfsdf"); return new AjaxResult(0, archiveRecordsService.updateStatusByIds(ids) + ""); } /** * 删除档案记录 */ @PreAuthorize("@ss.hasPermi('system:records:remove')") @Log(title = "档案记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(archiveRecordsService.deleteArchiveRecordsByIds(ids)); } @PreAuthorize("@ss.hasPermi('system:records:edit')") @Log(title = "档案记录导入", businessType = BusinessType.IMPORT) @PostMapping("/importData") public AjaxResult importData(@RequestParam("excelImport") MultipartFile file) throws Exception { return archiveRecordsService.importExcel(file); } @PreAuthorize("@ss.hasPermi('system:records:edit')") @Log(title = "修改状态", businessType = BusinessType.IMPORT) @GetMapping(value = "/updateStatusById/{status}/{id}") public AjaxResult updateStatusById(@PathVariable("status") String status, @PathVariable("id") String id) { return new AjaxResult(200, archiveRecordsService.updateArchiveById(status, Long.parseLong(id)) + ""); } @PostMapping("/model") public void getExportModel(HttpServletResponse response) { List list = Collections.singletonList(new ArchiveRecordModelExp()); ExcelUtil util = new ExcelUtil<>(ArchiveRecordModelExp.class); util.exportExcel(response, list, "档案信息"); } @PostMapping("/modelOther") public void getExportModelOther(HttpServletResponse response) { List list = Collections.singletonList(new ArchiveRecordModelOther()); ExcelUtil util = new ExcelUtil<>(ArchiveRecordModelOther.class); util.exportExcel(response, list, "档案信息"); } @PreAuthorize("@ss.hasPermi('system:records:list')") @Log(title = "是否允许提交", businessType = BusinessType.IMPORT) @GetMapping(value = "/whether/{recordId}") public AjaxResult whether(@PathVariable("recordId") Long recordId) { return AjaxResult.success(archiveRecordsService.whether(recordId)); } @PostMapping("/recordFileList") //导出excle public void getSpecialArchiveInfo(HttpServletResponse response, @RequestBody searSigAnn searSigAnn) throws IOException { System.out.println("uuuuuuuuuuuuuuuuuuusssss88888888888888"); //System.out.println(includeQrCode); //生成二维码 String code = "2024050000029250"; byte[] bt = barcodeService.generateBarcodeImage(code); // System.out.println(Arrays.toString(selectedSignatures)); //签名选择 String[] sig = {"业务科室移交人:", "审批科移交人:", "档案整理公司:"}; List arrLis = new ArrayList<>(); if (searSigAnn.getSelectedSignatures() != null) { for (String si : searSigAnn.getSelectedSignatures()) { arrLis.add(sig[Integer.parseInt(si)]); System.out.println(sig[Integer.parseInt(si)]); } } //注选择 String[] ann = {"本清单由档案形成部门完成", "文件类型必须录入,包括结论材料、过程材料、申请材料,其他材料", "公开属性必须录入,主动公开、依申请公开、免予公开", "保管期限:30年或永久", "页号按照正式录入页码为准"}; List arrAn = new ArrayList<>(); // 1. 对索引进行排序(从小到大) int[] sortedIndices = convertToIntArray(searSigAnn.getSelectedAnnotations()).clone(); Arrays.sort(sortedIndices); // String[] result = new String[sortedIndices.length]; for (int sortedIndex : sortedIndices) { arrAn.add(ann[sortedIndex]); } List arsi = new ArrayList<>(); // DocumentMaterials documentMaterials = new DocumentMaterials(); // documentMaterials.setRecordId(recordId); List lst = iDocumentMaterialsService.selectDocumentMaterialsFileList(searSigAnn.getRecordId()); // 复制属性到SmallObject列表 for (DocumentMaterialsFileList bigObject : lst) { DocumentMaterialsFileList smallObject = new DocumentMaterialsFileList(); BeanUtil.copyProperties(bigObject, smallObject); // 复制属性 System.out.println(bigObject); if(bigObject.getFileStyle()!=null&& ((bigObject.getFileStyle().equals("其它材料")) ||bigObject.getFileStyle().equals("光盘") ||bigObject.getFileStyle().equals("U盘"))) smallObject.setFileStyle1("是"); else smallObject.setFileStyle1("否"); arsi.add(smallObject); } // System.out.println(arsi.toString()); // arsi.add(aIV); ExcelExp e3 = new ExcelExp("文件材料移交目录清单", arsi, DocumentMaterialsFileList.class); // ExcelExp e4 = new ExcelExp("案卷封面", arsi, recordId1, imgr1,sedcode, ArchiveInfoVo.class); List mysheet1 = new ArrayList(); mysheet1.add(e3); // mysheet1.add(e4); //ByteOutputStream bos2 = new ByteOutputStream(); // if(searSigAnn.getMenu().equals("")) ExcelUtilManySheetFour> util3 = new ExcelUtilManySheetFour>(mysheet1); //拿到caseTitle和inquiryNumber String inquiryNumber = ""; String caseTitle = ""; if (!arsi.isEmpty()) { inquiryNumber = arsi.get(0).getInquiryNumber(); caseTitle = arsi.get(0).getCaseTitle(); } util3.exportExcelManySheet(response, mysheet1, searSigAnn.getIncludeQrCode(), bt, arrLis, arrAn, inquiryNumber, caseTitle); } public static int[] convertToIntArray(String[] source) { int[] result = new int[source.length]; for (int i = 0; i < source.length; i++) { try { result[i] = Integer.parseInt(source[i].trim()); } catch (NumberFormatException e) { System.out.println("错误: 索引 " + i + " 的值 '" + source[i] + "' 不是有效整数"); result[i] = 0; // 或者使用默认值 } } return result; } }