| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- package com.template.controller;
- import com.template.api.WelcomePaySettingControllerAPI;
- import com.template.common.utils.CardUtils;
- import com.template.common.utils.ExcelUtils;
- import com.template.common.utils.paramUtils;
- import com.template.model.enumModel.eFileType;
- import com.template.model.enumModel.eSchool;
- import com.template.model.pojo.*;
- import com.template.model.request.insertPaySettingRequest;
- import com.template.model.request.updatePaySettingRequest;
- import com.template.model.result.CommonResult;
- import com.template.model.result.PageUtils;
- import com.template.model.vo.StudentPageVo;
- import com.template.services.WelcomeOrgService;
- import com.template.services.WelcomePaySettingService;
- import org.apache.poi.hssf.usermodel.HSSFRow;
- import org.apache.poi.hssf.usermodel.HSSFSheet;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.DataFormatter;
- import org.apache.poi.ss.usermodel.Row;
- import org.apache.poi.ss.usermodel.Sheet;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.apache.poi.xssf.usermodel.XSSFRow;
- import org.apache.poi.xssf.usermodel.XSSFSheet;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.util.StringUtils;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.InputStream;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Optional;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author ceshi
- * @since 2025-06-13
- */
- @RestController
- public class WelcomePaySettingController implements WelcomePaySettingControllerAPI {
- @Autowired
- private WelcomeOrgService welcomeOrgService;
- @Autowired
- private WelcomePaySettingService welcomePaySettingService;
- @Override
- public CommonResult getPageDatas(int currentPage, int pageCount, Integer collegeId, Integer majorId, String eduLevel) {
- PageUtils<WelcomePaySetting> pages = welcomePaySettingService.queryPageWelcomePaySettings(currentPage, pageCount, collegeId, majorId, eduLevel);
- return CommonResult.ok(pages);
- }
- @Override
- public CommonResult insertPaySetting(insertPaySettingRequest psr, BindingResult bindingResult) {
- if (bindingResult.hasErrors()) {
- String st = paramUtils.getParamError(bindingResult);
- return CommonResult.fail(st);
- }
- WelcomePaySetting exist = welcomePaySettingService.queryPaySettingById(psr.getCollegeId(), psr.getMajorId(), psr.getEduLevel());
- if (exist != null) {
- return CommonResult.fail("当前院系专业已设置!");
- }
- WelcomePaySetting wps = new WelcomePaySetting();
- wps.setCollegeId(psr.getCollegeId());
- wps.setCollegeName(psr.getCollegeName());
- wps.setMajorId(psr.getMajorId());
- wps.setMajorName(psr.getMajorName());
- wps.setEduLevel(psr.getEduLevel());
- wps.setEduSystem(psr.getEduSystem());
- wps.setPayAmount(psr.getPayAmount());
- int result = welcomePaySettingService.insertWelcomePaySetting(wps);
- return result > 0 ? CommonResult.ok("添加成功!") : CommonResult.fail("添加失败!");
- }
- @Override
- public CommonResult updatePaySetting(updatePaySettingRequest psr, BindingResult bindingResult) {
- if (bindingResult.hasErrors()) {
- String st = paramUtils.getParamError(bindingResult);
- return CommonResult.fail(st);
- }
- WelcomePaySetting oldData = welcomePaySettingService.getManageById(psr.getId());
- if (oldData == null) {
- return CommonResult.fail("当前数据已失效,编辑失败!");
- }
- WelcomePaySetting exist = welcomePaySettingService.queryPaySettingById(psr.getCollegeId(), psr.getMajorId(), psr.getEduLevel());
- if (exist != null && psr.getId().intValue() != exist.getId().intValue()) {
- return CommonResult.fail("当前院系专业已设置!");
- }
- oldData.setCollegeId(psr.getCollegeId());
- oldData.setCollegeName(psr.getCollegeName());
- oldData.setMajorId(psr.getMajorId());
- oldData.setMajorName(psr.getMajorName());
- oldData.setEduLevel(psr.getEduLevel());
- oldData.setEduSystem(psr.getEduSystem());
- oldData.setPayAmount(psr.getPayAmount());
- int result = welcomePaySettingService.updateWelcomePaySetting(oldData);
- return result > 0 ? CommonResult.ok("编辑成功!") : CommonResult.fail("编辑失败!");
- }
- @Override
- public CommonResult deleteDormitory(Integer id) {
- int result = welcomePaySettingService.deleteWelcomePaySettingById(id);
- return result < 0 ? CommonResult.fail("删除失败") : CommonResult.ok("删除成功");
- }
- @Override
- public CommonResult importPaySettingExcel(MultipartFile file) throws IOException, ParseException {
- if (file.isEmpty() || file.getSize() == 0) {
- return CommonResult.fail("导入文件不能为空");
- }
- String ContentType = file.getContentType();
- InputStream inputStream = file.getInputStream();
- List<WelcomePaySetting> result = new ArrayList<>();
- //xls格式文件
- if (ContentType.equals(eFileType.Xls.getValue())) {
- CommonResult<List<WelcomePaySetting>> resultData = readXls(inputStream);
- if (!resultData.isSuccess()) {
- return resultData;
- }
- result = resultData.getData();
- } else if (ContentType.equals(eFileType.Xlsx.getValue())) {
- CommonResult<List<WelcomePaySetting>> resultData = readXlsx(inputStream);
- if (!resultData.isSuccess()) {
- return resultData;
- }
- result = resultData.getData();
- } else {
- return CommonResult.fail("缴费设置数据导入只支持Xls或Xlsx格式文件");
- }
- List<WelcomePaySetting> existPays = welcomePaySettingService.queryPaySettings();
- if (existPays != null && existPays.size() > 0) {
- for (WelcomePaySetting wps : result) {
- Optional<WelcomePaySetting> ows = existPays.stream().filter(e -> e.getCollegeId().intValue() == wps.getCollegeId().intValue()
- && e.getMajorId().intValue() == wps.getMajorId().intValue() && e.getEduLevel().equals(wps.getEduLevel())).findFirst();
- if (ows != null && ows.isPresent()) {
- wps.setId(ows.get().getId());
- }
- }
- }
- boolean resultBool = welcomePaySettingService.saveOrUpdateBatch(result);
- System.out.println("导入缴费设置1");
- return resultBool ? CommonResult.ok("导入成功") : CommonResult.fail("导入失败");
- }
- /**
- * xls文件读取方法
- *
- * @param inputStream
- * @return
- * @throws IOException
- * @throws ParseException
- */
- private CommonResult<List<WelcomePaySetting>> readXls(InputStream inputStream) throws IOException, ParseException {
- List<WelcomePaySetting> result = new ArrayList<>();
- HSSFWorkbook sheets = new HSSFWorkbook(inputStream);
- List<WelcomeOrg> ws = welcomeOrgService.list(null);
- //读取第一张sheet
- HSSFSheet sheetAt = sheets.getSheetAt(0);
- DataFormatter dataFormatter = new DataFormatter();
- try {
- //rowNum = 3 从第三行开始获取值
- //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
- for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
- HSSFRow row = sheetAt.getRow(rowNum);
- if (row != null) {
- //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
- //所以先使用setCellType()方法先将该单元格的类型设置为STRING
- //然后poi会根据字符串读取它
- //第一行数据获取月份
- if (rowNum == 0) {
- String number = dataFormatter.formatCellValue(row.getCell(0));//序号
- if (!number.equals("序号")) {
- return CommonResult.fail("导入数据第一列为序号");
- }
- String college = dataFormatter.formatCellValue(row.getCell(1));//学院
- if (!college.equals("学院")) {
- return CommonResult.fail("导入数据第二列为学院");
- }
- String major = dataFormatter.formatCellValue(row.getCell(2));//专业名称
- if (!major.equals("专业名称")) {
- return CommonResult.fail("导入数据第三列为专业名称");
- }
- String eduLevel = dataFormatter.formatCellValue(row.getCell(3));//层次
- if (!eduLevel.equals("层次")) {
- return CommonResult.fail("导入数据第四列为层次");
- }
- String eduSystem = dataFormatter.formatCellValue(row.getCell(4));//学制
- if (!eduSystem.equals("学制")) {
- return CommonResult.fail("导入数据第五列为学制");
- }
- String payMoney = dataFormatter.formatCellValue(row.getCell(5));//金额
- if (!payMoney.equals("金额")) {
- return CommonResult.fail("导入数据第六列为金额");
- }
- } else {
- WelcomePaySetting paySetting = new WelcomePaySetting();
- String college = dataFormatter.formatCellValue(row.getCell(1));//学院
- if (!StringUtils.hasText(college)) {
- break;
- }
- //region 院系专业
- Optional<WelcomeOrg> owo = ws.stream().filter(e -> e.getName().equals(college)).findFirst();
- if (owo != null && owo.isPresent()) {
- paySetting.setCollegeName(college);
- paySetting.setCollegeId(owo.get().getId());
- }
- String major = dataFormatter.formatCellValue(row.getCell(2));//专业
- Optional<WelcomeOrg> omwo = ws.stream().filter(e -> owo != null && owo.isPresent() && e.getParentId().intValue() == owo.get().getId().intValue() && e.getName().equals(major)).findFirst();
- if (omwo != null && omwo.isPresent()) {
- paySetting.setMajorName(major);
- paySetting.setMajorId(omwo.get().getId());
- }
- String eduLevel = dataFormatter.formatCellValue(row.getCell(3));//层次
- paySetting.setEduLevel(eduLevel);
- String eduSystem = dataFormatter.formatCellValue(row.getCell(4));//学制
- paySetting.setEduSystem(eduSystem);
- String payMoney = dataFormatter.formatCellValue(row.getCell(5));//金额
- paySetting.setPayAmount(new BigDecimal(payMoney));
- result.add(paySetting);
- }
- }
- }
- } catch (Exception e) {
- return CommonResult.fail("请按模板格式导入数据");
- }
- return CommonResult.ok(result);
- }
- /**
- * xlsx文件读取方法
- *
- * @param inputStream
- * @return
- * @throws IOException
- * @throws ParseException
- */
- private CommonResult<List<WelcomePaySetting>> readXlsx(InputStream inputStream) throws IOException, ParseException {
- List<WelcomePaySetting> result = new ArrayList<>();
- XSSFWorkbook sheets = new XSSFWorkbook(inputStream);
- List<WelcomeOrg> ws = welcomeOrgService.list(null);
- //读取第一张sheet
- XSSFSheet sheetAt = sheets.getSheetAt(0);
- DataFormatter dataFormatter = new DataFormatter();
- try {
- //rowNum = 3 从第三行开始获取值
- //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
- for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
- XSSFRow row = sheetAt.getRow(rowNum);
- if (row != null) {
- //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
- //所以先使用setCellType()方法先将该单元格的类型设置为STRING
- //然后poi会根据字符串读取它
- //第一行数据获取月份
- if (rowNum == 0) {
- String number = dataFormatter.formatCellValue(row.getCell(0));//序号
- if (!number.equals("序号")) {
- return CommonResult.fail("导入数据第一列为序号");
- }
- String college = dataFormatter.formatCellValue(row.getCell(1));//学院
- if (!college.equals("学院")) {
- return CommonResult.fail("导入数据第二列为学院");
- }
- String major = dataFormatter.formatCellValue(row.getCell(2));//专业名称
- if (!major.equals("专业名称")) {
- return CommonResult.fail("导入数据第三列为专业名称");
- }
- String eduLevel = dataFormatter.formatCellValue(row.getCell(3));//层次
- if (!eduLevel.equals("层次")) {
- return CommonResult.fail("导入数据第四列为层次");
- }
- String eduSystem = dataFormatter.formatCellValue(row.getCell(4));//学制
- if (!eduSystem.equals("学制")) {
- return CommonResult.fail("导入数据第五列为学制");
- }
- String payMoney = dataFormatter.formatCellValue(row.getCell(5));//金额
- if (!payMoney.equals("金额")) {
- return CommonResult.fail("导入数据第六列为金额");
- }
- } else {
- WelcomePaySetting paySetting = new WelcomePaySetting();
- String college = dataFormatter.formatCellValue(row.getCell(1));//学院
- if (!StringUtils.hasText(college)) {
- break;
- }
- //region 院系专业
- Optional<WelcomeOrg> owo = ws.stream().filter(e -> e.getName().equals(college)).findFirst();
- if (owo != null && owo.isPresent()) {
- paySetting.setCollegeName(college);
- paySetting.setCollegeId(owo.get().getId());
- }
- String major = dataFormatter.formatCellValue(row.getCell(2));//专业
- Optional<WelcomeOrg> omwo = ws.stream().filter(e -> owo != null && owo.isPresent() && e.getParentId().intValue() == owo.get().getId().intValue() && e.getName().equals(major)).findFirst();
- if (omwo != null && omwo.isPresent()) {
- paySetting.setMajorName(major);
- paySetting.setMajorId(omwo.get().getId());
- }
- String eduLevel = dataFormatter.formatCellValue(row.getCell(3));//层次
- paySetting.setEduLevel(eduLevel);
- String eduSystem = dataFormatter.formatCellValue(row.getCell(4));//学制
- paySetting.setEduSystem(eduSystem);
- String payMoney = dataFormatter.formatCellValue(row.getCell(5));//金额
- paySetting.setPayAmount(new BigDecimal(payMoney));
- result.add(paySetting);
- }
- }
- }
- } catch (Exception e) {
- return CommonResult.fail("请按模板格式导入数据");
- }
- return CommonResult.ok(result);
- }
- @Override
- public CommonResult downloadPaySettingExcel() {
- return CommonResult.ok("200", "操作成功", "https://chtech.ncjti.edu.cn/welcome/homeimage/缴费设置管理.xlsx");
- }
- @Override
- public void paySettingExport(String userId, HttpServletResponse response, Integer collegeId, Integer majorId, String eduLevel) {
- Workbook workbook = new XSSFWorkbook();
- Sheet sheet = workbook.createSheet("缴费设置");
- List<WelcomePaySetting> result = welcomePaySettingService.queryPaySettingsById(collegeId, majorId, eduLevel);
- //导出
- Row headerRow = sheet.createRow(0);
- headerRow.createCell(0).setCellValue("序号");
- headerRow.createCell(1).setCellValue("学院");
- headerRow.createCell(2).setCellValue("专业名称");
- headerRow.createCell(3).setCellValue("层次");
- headerRow.createCell(4).setCellValue("学制");
- headerRow.createCell(5).setCellValue("金额");
- for (int i = 0; i < result.size(); i++) {
- WelcomePaySetting studentData = result.get(i);
- Row dataRow = sheet.createRow(i + 1);
- dataRow.createCell(0).setCellValue(i + 1);
- dataRow.createCell(1).setCellValue(studentData.getCollegeName());
- dataRow.createCell(2).setCellValue(studentData.getMajorName());
- dataRow.createCell(3).setCellValue(studentData.getEduLevel());
- dataRow.createCell(4).setCellValue(studentData.getEduSystem());
- dataRow.createCell(5).setCellValue(String.format("%02d", studentData.getPayAmount()));
- }
- // 将工作簿写入文件
- ExcelUtils.excelDownload(workbook, "缴费设置.xlsx", response);
- }
- }
|