package com.ruoyi.collaborativeApproval.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.approve.bean.vo.ApproveProcessVO;
|
import com.ruoyi.approve.service.IApproveProcessService;
|
import com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO;
|
import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
|
import com.ruoyi.collaborativeApproval.service.SealApplicationManagementService;
|
import com.ruoyi.common.enums.FileNameType;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
import com.ruoyi.sales.mapper.CommonFileMapper;
|
import com.ruoyi.sales.pojo.CommonFile;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.AllArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDateTime;
|
import java.util.Date;
|
import java.util.List;
|
|
@AllArgsConstructor
|
@RestController
|
@RequestMapping("/sealApplicationManagement")
|
@Api(tags = "用印申请管理")
|
public class SealApplicationManagementController {
|
@Autowired
|
private SealApplicationManagementService sealApplicationManagementService;
|
|
@Autowired
|
private IApproveProcessService approveProcessService;
|
|
@Autowired
|
private CommonFileMapper commonFileMapper;
|
|
@GetMapping("/getList")
|
@ApiOperation("分页查询")
|
public AjaxResult listPage(Page page, SealApplicationManagement sealApplicationManagement){
|
IPage<SealApplicationManagementDTO> result = sealApplicationManagementService.listPage(page,sealApplicationManagement);
|
for (SealApplicationManagementDTO record : result.getRecords()) {
|
if (record.getApproveProcessId() != null) {
|
record.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
|
.eq(CommonFile::getCommonId, record.getApproveProcessId())
|
.eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
|
}
|
}
|
return AjaxResult.success(result);
|
}
|
|
@PostMapping("/add")
|
@ApiOperation("新增/重新申请用印")
|
@Transactional(rollbackFor = Exception.class)
|
public AjaxResult add(@RequestBody SealApplicationManagement sealApplicationManagement) throws Exception {
|
sealApplicationManagement.setStatus("pending");
|
if (sealApplicationManagement.getId() == null) {
|
sealApplicationManagementService.save(sealApplicationManagement);
|
} else {
|
// 重新申请:清理旧审批流程关联的附件,避免遗留
|
SealApplicationManagement old = sealApplicationManagementService.getById(sealApplicationManagement.getId());
|
if (old != null && old.getApproveProcessId() != null) {
|
commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>()
|
.eq(CommonFile::getCommonId, old.getApproveProcessId())
|
.eq(CommonFile::getType, FileNameType.ApproveProcess.getValue()));
|
}
|
sealApplicationManagementService.updateById(sealApplicationManagement);
|
}
|
// 发起协同统一审核流程(用印审批)
|
ApproveProcessVO vo = new ApproveProcessVO();
|
vo.setApproveType(9);
|
vo.setApproveReason(sealApplicationManagement.getApplicationNum() + ":" + sealApplicationManagement.getTitle());
|
vo.setApproveDeptId(sealApplicationManagement.getDeptId());
|
vo.setApproveTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
|
Long approveProcessId = approveProcessService.addApprove(vo);
|
// 回填审批流程id,供审批回调更新状态、详情查询附件
|
sealApplicationManagement.setApproveProcessId(approveProcessId);
|
sealApplicationManagementService.updateById(sealApplicationManagement);
|
// 保存用印申请附件,关联到审批流程
|
if (!CollectionUtils.isEmpty(sealApplicationManagement.getAttachmentList())) {
|
for (CommonFile cf : sealApplicationManagement.getAttachmentList()) {
|
CommonFile record = new CommonFile();
|
record.setCommonId(approveProcessId);
|
record.setName(cf.getName());
|
record.setUrl(cf.getUrl());
|
record.setType(FileNameType.ApproveProcess.getValue());
|
record.setCreateTime(LocalDateTime.now());
|
record.setUpdateTime(LocalDateTime.now());
|
commonFileMapper.insert(record);
|
}
|
}
|
return AjaxResult.success();
|
}
|
|
@PostMapping("/update")
|
@ApiOperation("修改")
|
public AjaxResult update(@RequestBody SealApplicationManagement sealApplicationManagement){
|
return AjaxResult.success(sealApplicationManagementService.updateById(sealApplicationManagement));
|
}
|
|
@DeleteMapping("/delete")
|
@ApiOperation("删除")
|
public AjaxResult delete(@PathVariable("ids") List<Long> ids){
|
if (CollectionUtils.isEmpty(ids)) {
|
throw new RuntimeException("请传入要删除的ID");
|
}
|
return AjaxResult.success(sealApplicationManagementService.removeBatchByIds(ids));
|
}
|
|
@GetMapping("/detail")
|
@ApiOperation("用印申请详情(按审批流程id)")
|
public AjaxResult detail(Long approveProcessId){
|
SealApplicationManagement seal = sealApplicationManagementService.getOne(new LambdaQueryWrapper<SealApplicationManagement>()
|
.eq(SealApplicationManagement::getApproveProcessId, approveProcessId)
|
.last("limit 1"));
|
if (seal == null) {
|
throw new RuntimeException("用印申请不存在");
|
}
|
seal.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
|
.eq(CommonFile::getCommonId, approveProcessId)
|
.eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
|
return AjaxResult.success(seal);
|
}
|
|
@ApiOperation(value = "用印申请管理导出")
|
@PostMapping("/export")
|
public void export(HttpServletResponse response) {
|
List<SealApplicationManagement> accountExpenses = sealApplicationManagementService.list();
|
ExcelUtil<SealApplicationManagement> util = new ExcelUtil<SealApplicationManagement>(SealApplicationManagement.class);
|
util.exportExcel(response, accountExpenses, "用印申请管理导出");
|
}
|
|
}
|