package com.ydtech.modules.inv.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.ydtech.aop.exception.DescribeException; import com.ydtech.constants.enums.dict.ApprovalStatusEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.core.page.PageResult; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.inv.model.InvInvoiceInfo; import com.ydtech.modules.inv.model.InvInvoiceInfoInOut; import com.ydtech.modules.inv.model.dto.InvInvoiceInfoDto; import com.ydtech.modules.inv.model.vo.req.InvInvoiceInfoReqVO; import com.ydtech.modules.inv.service.InvInvoiceInfoInOutService; import com.ydtech.modules.inv.service.InvInvoiceInfoService; import com.ydtech.utils.StringUtils; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 发票信息管理 * * @author: lig * @date: 2023-05-15 */ @Api(tags = "发票信息管理") @RestController @RequestMapping("api/inv/invoiceInfo") public class InvInvoiceInfoController extends BaseController { @Autowired private InvInvoiceInfoService invInvoiceInfoService; @Autowired private InvInvoiceInfoInOutService invInvoiceInfoInOutService; @ApiOperation(value = "保存(外部合同开票)") @PostMapping(value = "/saveTypeOne") public HttpResult saveTypeOne(@RequestBody InvInvoiceInfoDto dto) { dto.getInvoiceInfo().setType(1); return HttpResult.ok(invInvoiceInfoService.saveInvoice(dto)); } @ApiOperation(value = "保存(手续费开票)") @PostMapping(value = "/saveTypeTwo") public HttpResult saveTypeTwo(@RequestBody InvInvoiceInfoDto dto) { dto.getInvoiceInfo().setType(2); return HttpResult.ok(invInvoiceInfoService.saveInvoice(dto)); } @ApiOperation(value = "保存") @PostMapping(value = "/save") public HttpResult save(@RequestBody InvInvoiceInfoDto dto) { return HttpResult.ok(invInvoiceInfoService.saveInvoice(dto)); } /** * 分页查询 * * @param reqVo * @return */ @ApiOperation(value = "分页查询") @PostMapping(value = "/queryPage") public HttpResult queryPage(@RequestBody InvInvoiceInfoReqVO reqVo){ LambdaQueryWrapper lqw = new LambdaQueryWrapper(); lqw.eq(StringUtils.isNotEmpty(reqVo.getApprovalStatus()),InvInvoiceInfo::getApprovalStatus,reqVo.getApprovalStatus()); lqw.eq(StringUtils.isNotEmpty(reqVo.getInvoiceClerk()),InvInvoiceInfo::getInvoiceClerk,reqVo.getInvoiceClerk()); lqw.eq(StringUtils.isNotEmpty(reqVo.getInvCompanyId()),InvInvoiceInfo::getInvCompanyId,reqVo.getInvCompanyId()); Page p = PageRequest.buildPageRequestByVo(reqVo); IPage pResult = invInvoiceInfoService.page(p, lqw); //传入查询条件 PageResult pageResult = PageResult.buildPageResult(pResult); return HttpResult.ok(pageResult); } /** * 审批通过 * * @param * @return */ // @PreAuthorize("hasAuthority('inv:invoice:info:approval:pass')") @ApiOperation(value = "审批通过") @PostMapping(value = "/approvalPass") public HttpResult approvalPass(@RequestParam("ids") List ids){ return HttpResult.ok(invInvoiceInfoService.approval(ApprovalStatusEnum.AS1,ids)); } /** * 审批退回 * * @param * @return */ // @PreAuthorize("hasAuthority('inv:invoice:info:approval:back')") @ApiOperation(value = "审批退回") @PostMapping(value = "/approvalBack") public HttpResult approvalBack(@RequestParam("ids") List ids){ return HttpResult.ok(invInvoiceInfoService.approval(ApprovalStatusEnum.AS3,ids)); } // /** // * 批量删除 // * // * @param // * @return // */ // @ApiOperation(value = "批量删除") // @PostMapping(value = "/batchDelete") // public HttpResult batchDelete(List ids){ // // return HttpResult.ok(invInvoiceInfoService.removeBatchByIds(ids)); // } @PostMapping("/import") @ApiOperation(value = "excel导入数据") public HttpResult importData(@ApiParam(name = "file", value = "excel文件") MultipartFile file, HttpServletRequest request) { HttpResult result = null; return invInvoiceInfoService.importData(file); } // @PostMapping("/export") @GetMapping("/export") @ApiOperation(value = "excel导出数据") public void exportData(@RequestParam("ids") List ids, HttpServletRequest request, HttpServletResponse response) { try { invInvoiceInfoService.exportData(ids,request,response); } catch (Exception e) { e.printStackTrace(); throw new DescribeException("信息导出失败!" + e.getMessage()); } } @GetMapping(value = "/details/{id}") @ApiOperation(value = "获取发票详情(包含进出帐)") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "String") }) public HttpResult details(@PathVariable String id) { InvInvoiceInfo invInfo = invInvoiceInfoService.getById(id); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(InvInvoiceInfoInOut::getId,invInfo.getId()); List inOutList = invInvoiceInfoInOutService.list(lqw); InvInvoiceInfoDto iiiDto = new InvInvoiceInfoDto(); iiiDto.setInvoiceInfo(invInfo); iiiDto.setInvoiceInfoInOutList(inOutList); return HttpResult.ok(iiiDto); } }