diff --git a/srs-admin/src/main/java/com/srs/web/controller/routine/RtStuDisciplinaryApplicationController.java b/srs-admin/src/main/java/com/srs/web/controller/routine/RtStuDisciplinaryApplicationController.java index 295cd29..1b5e4ab 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/routine/RtStuDisciplinaryApplicationController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/routine/RtStuDisciplinaryApplicationController.java @@ -151,6 +151,25 @@ public class RtStuDisciplinaryApplicationController extends BaseController { util.exportExcel(response, list, "学生处分申请数据"); } + @PostMapping("/importTemplate") + @ApiOperation("下载学生处分导入模板") + public void importTemplate(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil(RtStuDisciplinaryApplication.class); + util.importTemplateExcel(response, "学生处分申请数据导入"); + } + + @Log(title = "学生处分申请", businessType = BusinessType.IMPORT) +// @PreAuthorize("@ss.hasPermi('routine:disciplinaryApplication:import')") + @PostMapping("/importData") + @ApiOperation("导入学生处分申请") + public AjaxResult importData(org.springframework.web.multipart.MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil(RtStuDisciplinaryApplication.class); + // 生成数据 + List list = util.importExcel(file.getInputStream()); + String message = rtStuDisciplinaryApplicationService.importDisciplinaryApplication(list, updateSupport); + return success(message); + } + /** * 获取学生处分申请详细信息 */ diff --git a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserve.java b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserve.java index 8673cf6..49e6ec0 100644 --- a/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserve.java +++ b/srs-routine/src/main/java/com/srs/routine/domain/RtEnlistmentReserve.java @@ -216,14 +216,6 @@ private static final long serialVersionUID=1L; @Excel(name = "流程部署编号") private String deployId; - /** - * 学院名称 - */ - @ApiModelProperty("学院名称") - @TableField("dept_name") - @Excel(name = "学院名称") - private String deptName; - /** * 入伍保留学籍申请表-审核记录 */ diff --git a/srs-routine/src/main/java/com/srs/routine/mapper/RtEnlistmentReserveMapper.java b/srs-routine/src/main/java/com/srs/routine/mapper/RtEnlistmentReserveMapper.java index b310ab4..129e91b 100644 --- a/srs-routine/src/main/java/com/srs/routine/mapper/RtEnlistmentReserveMapper.java +++ b/srs-routine/src/main/java/com/srs/routine/mapper/RtEnlistmentReserveMapper.java @@ -62,13 +62,6 @@ public interface RtEnlistmentReserveMapper extends BaseMapper list, boolean updateSupport); + /** * 根据流程实例id获取学生处分申请 * @param procInsId diff --git a/srs-routine/src/main/java/com/srs/routine/service/impl/RtEnlistmentReserveServiceImpl.java b/srs-routine/src/main/java/com/srs/routine/service/impl/RtEnlistmentReserveServiceImpl.java index b1b0a0b..b4c19b6 100644 --- a/srs-routine/src/main/java/com/srs/routine/service/impl/RtEnlistmentReserveServiceImpl.java +++ b/srs-routine/src/main/java/com/srs/routine/service/impl/RtEnlistmentReserveServiceImpl.java @@ -114,22 +114,22 @@ public class RtEnlistmentReserveServiceImpl extends ServiceImpl rtEnlistmentReserves = rtEnlistmentReserveMapper.getEnlistmentReserves(); + int total = rtEnlistmentReserves.size(); + // 设置保留学籍编号 (LBXJ0001(LBXJ是固定的,0001根据数据数量累加) + 时间(根据系统时间,但是格式要20260304)) + // 1. 获取当前系统时间,格式化为8位日期(yyyyMMdd) + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String dateStr = sdf.format(new Date()); - // 2. 查询「当前年份」的记录总数(按年份分组统计,实现每年序号重置) - // 统计rt_enlistment_reserve表中,reserve_no以"BLXJ("+currentYear+")"开头的记录数 - int yearTotal = rtEnlistmentReserveMapper.countByYear(currentYear); + // 2. 计算自增序号(总数+1,确保新编号是下一个序号),补零为4位 + int seq = total + 1; + String seqStr = String.format("%04d", seq); // 不足4位时前面补0,如1→0001,10→0010 - // 3. 计算当年自增序号(总数+1),补零为3位(001、002...999) - int seq = yearTotal + 1; - String seqStr = String.format("%03d", seq); // 不足3位补0,如1→001,10→010 + // 3. 拼接保留学籍编号:LBXJ + 4位序号 + 8位日期 + String reserveNo = "LBXJ" + seqStr + dateStr; - // 4. 拼接最终编号:BLXJ(年份)序号 - String reserveNo = "BLXJ(" + currentYear + ")" + seqStr; - - // 5. 设置到实体对象中 + // 4. 设置到实体对象中 rtEnlistmentReserve.setReserveNo(reserveNo); rtEnlistmentReserve.setCreateTime(DateUtils.getNowDate()); diff --git a/srs-routine/src/main/java/com/srs/routine/service/impl/RtStuDisciplinaryApplicationServiceImpl.java b/srs-routine/src/main/java/com/srs/routine/service/impl/RtStuDisciplinaryApplicationServiceImpl.java index edb757f..379cadf 100644 --- a/srs-routine/src/main/java/com/srs/routine/service/impl/RtStuDisciplinaryApplicationServiceImpl.java +++ b/srs-routine/src/main/java/com/srs/routine/service/impl/RtStuDisciplinaryApplicationServiceImpl.java @@ -199,6 +199,63 @@ public class RtStuDisciplinaryApplicationServiceImpl extends ServiceImpl list, boolean updateSupport) { + if (com.srs.common.utils.StringUtils.isNull(list) || list.size() == 0) { + throw new ServiceException("导入数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + + for (RtStuDisciplinaryApplication rtStuDisciplinaryApplication : list) { + try { + // 验证数据是否存在,或者补充必要信息 + if (com.srs.common.utils.StringUtils.isNotNull(rtStuDisciplinaryApplication.getStuNo())) { + SysUser sysUser = sysUserService.selectUserByUserName(rtStuDisciplinaryApplication.getStuNo()); + if (sysUser != null) { + rtStuDisciplinaryApplication.setStuId(sysUser.getUserId()); + rtStuDisciplinaryApplication.setStuName(sysUser.getNickName()); + } + } + + rtStuDisciplinaryApplication.setCreateBy(SecurityUtils.getUsername()); + rtStuDisciplinaryApplication.setCreateTime(DateUtils.getNowDate()); + rtStuDisciplinaryApplication.setApplicantName(SecurityUtils.getLoginUser().getUser().getNickName()); + rtStuDisciplinaryApplication.setApplicantId(SecurityUtils.getUserId()); + + if (rtStuDisciplinaryApplication.getSubmissionStatus() == null) { + rtStuDisciplinaryApplication.setSubmissionStatus(0L); + } + + if (rtStuDisciplinaryApplication.getPenaltyStatus() == null) { + rtStuDisciplinaryApplication.setPenaltyStatus(0L); // 默认处分中 + } + + if (rtStuDisciplinaryApplication.getPenaltyType() != null && rtStuDisciplinaryApplication.getDisciplinaryDate() != null) { + rtStuDisciplinaryApplication.setExpirationDate(calculationDueDisposition(rtStuDisciplinaryApplication.getPenaltyType(), rtStuDisciplinaryApplication.getDisciplinaryDate())); + } + + this.insertRtStuDisciplinaryApplication(rtStuDisciplinaryApplication); + successNum++; + successMsg.append("
" + successNum + "、学号 " + rtStuDisciplinaryApplication.getStuNo() + " 导入成功"); + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、学号 " + rtStuDisciplinaryApplication.getStuNo() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + } + } + + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + @Override public RtStuDisciplinaryApplication getDisciplinaryApplicationByProcInsId(String procInsId) { RtStuDisciplinaryApplication rtStuDisciplinaryApplication = rtStuDisciplinaryApplicationMapper.selectDisciplinaryApplicationByProcInsId(procInsId); diff --git a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml index d3c7898..370f133 100644 --- a/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml +++ b/srs-routine/src/main/resources/mapper/routine/RtEnlistmentReserveAttachMapper.xml @@ -46,7 +46,6 @@ - - @@ -162,9 +160,7 @@ and approval_no = #{approvalNo} and affix_id = #{affixId} and deploy_id = #{deployId} - and dept_name like concat('%', #{deptName}, '%') - order by id desc - - - -