package com.ydtech.modules.inv.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.exception.SystemException; import com.ydtech.modules.inv.model.InvAccountIncoice; import com.ydtech.modules.inv.model.InvAccountIncoiceResult; import com.ydtech.modules.inv.model.InvAccountOperate; import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo; import com.ydtech.modules.inv.service.InvAccountIncoiceService; import com.ydtech.modules.inv.service.InvAccountOperateService; import com.ydtech.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; import static com.ydtech.modules.inv.service.impl.InvAccountIncoiceServiceImpl.getBigDecimal; import static com.ydtech.modules.inv.utils.TransferUtils.isProfitFull; /** * 发票管理表(InvAccountIncoice)表控制层 * * @author makejava * @since 2024-01-18 16:01:25 */ @RestController @RequestMapping("invAccountIncoice") @Api(tags = "发票管理表", value = "发票管理表") public class InvAccountIncoiceController { /** * 服务对象 */ @Resource private InvAccountIncoiceService invAccountIncoiceService; @Resource private InvAccountOperateService invAccountOperateService; @PostMapping("excel") @ApiOperation("导出开票记录表") public HttpResult selectAccountIncoiceExcel(@RequestBody InvAccountIncoiceQueryVo invAccountIncoiceQueryVo) { return HttpResult.ok("", invAccountIncoiceService.excel(invAccountIncoiceQueryVo)); } /** * 分页查询所有数据 * * @param invAccountIncoice 查询实体 * @return 所有数据 */ @PostMapping("page") @ApiOperation("分页查询") public HttpResult selectAll(@RequestBody InvAccountIncoiceQueryVo invAccountIncoice) { /** * 构造分页参数 */ PageRequest pageRequest = new PageRequest(); pageRequest.setPageNum(invAccountIncoice.getPageNo()); pageRequest.setPageSize(invAccountIncoice.getPageSize()); Page page = PageRequest.buildPageRequest(pageRequest); LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); /** * 如果有开票时间范围,查询开票记录表 */ if (invAccountIncoice.getApplyTimeStart() != null && invAccountIncoice.getApplyTimeEnd() != null) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.ge(InvAccountOperate::getApplyTime, invAccountIncoice.getApplyTimeStart()); lambdaQueryWrapper.le(InvAccountOperate::getApplyTime, invAccountIncoice.getApplyTimeEnd()); lambdaQueryWrapper.isNotNull(InvAccountOperate::getInvoiceId); List list = invAccountOperateService.list(lambdaQueryWrapper); List collect = list.stream().map(InvAccountOperate::getInvoiceId).collect(Collectors.toList()); //将开票id集合放入查询中 lambdaQueryWrapper.in(InvAccountOperate::getInvoiceId, collect); } lambdaQuery .like(!StringUtils.isEmpty(invAccountIncoice.getBiller()), InvAccountIncoice::getBiller, invAccountIncoice.getBiller()) .like(!StringUtils.isEmpty(invAccountIncoice.getInvoiceBy()), InvAccountIncoice::getInvoiceBy, invAccountIncoice.getInvoiceBy()) .eq(InvAccountIncoice::getDelFlag, "0") .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType, invAccountIncoice.getInvoiceType()) .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoice.getOtherUnit()) .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag, invAccountIncoice.getClearFlag()); if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeStart()) && !ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTimeEnd())) { lambdaQuery.ge(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeStart().toString()); lambdaQuery.le(InvAccountIncoice::getInvoiceTime, invAccountIncoice.getInvoiceTimeEnd().toString()); } lambdaQuery.orderByDesc(InvAccountIncoice::getInvoiceTime); Page invAccountIncoicePage = this.invAccountIncoiceService.page(page, lambdaQuery); /** * 合计 */ InvAccountIncoiceResult invAccountIncoiceResult = this.invAccountIncoiceService.selectAccountIncoice(invAccountIncoice); if (invAccountIncoiceResult == null) { InvAccountIncoiceResult invAccountIncoiceResult1 = new InvAccountIncoiceResult(); invAccountIncoiceResult1.setRecords(invAccountIncoicePage.getRecords()); invAccountIncoiceResult1.setCurrent(invAccountIncoice.getPageNo()); invAccountIncoiceResult1.setTotal(invAccountIncoicePage.getTotal()); invAccountIncoiceResult1.setSize(invAccountIncoice.getPageSize()); return HttpResult.ok(invAccountIncoiceResult1); } invAccountIncoiceResult.setRecords(invAccountIncoicePage.getRecords()); invAccountIncoiceResult.setCurrent(invAccountIncoice.getPageNo()); invAccountIncoiceResult.setTotal(invAccountIncoicePage.getTotal()); invAccountIncoiceResult.setSize(invAccountIncoice.getPageSize()); return HttpResult.ok(invAccountIncoiceResult); } /** * 通过主键查询单条数据 * * @param id 主键 * @return 单条数据 */ @GetMapping("byId/{id}") @ApiOperation("根据id查询") public HttpResult selectOne(@PathVariable("id") Serializable id) { return HttpResult.ok(this.invAccountIncoiceService.getById(id)); } /** * 新增数据 * * @param invAccountIncoice 实体对象 * @return 新增结果 */ @PostMapping @ApiOperation("新增") public HttpResult insert(@RequestBody InvAccountIncoice invAccountIncoice) { return this.invAccountIncoiceService.insertInvAccountIncoice(invAccountIncoice); } /** * 新增收入 */ @PostMapping("update") @ApiOperation("新增收入") public HttpResult updateIncome(@RequestBody InvAccountIncoice invAccountIncoice) { JSONObject outProfit = invAccountIncoice.getOutProfit(); JSONObject entProfit = invAccountIncoice.getEntProfit(); isProfitFull(outProfit, entProfit); return this.invAccountIncoiceService.updateInvAccountIncoice(invAccountIncoice); } @PostMapping("updateIncoice") @ApiOperation("修改发票信息") public HttpResult updateIncoice(@RequestBody InvAccountIncoice invAccountIncoice) { if (!invAccountIncoice.getPayoutMoney().equals("0") && !invAccountIncoice.getNotPayoutMoney().equals(invAccountIncoice.getInvoiceMoney())) { throw new SystemException("已进账 如需修改请撤销"); } BigDecimal tax = getBigDecimal(invAccountIncoice); //不含税金额 BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax); invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney()); //税额 invAccountIncoice.setTax(noHasTax.toString()); //不含税金额 invAccountIncoice.setNoHasTax(tax.toString()); return HttpResult.ok(invAccountIncoiceService.updateById(invAccountIncoice)); } /** * 撤销 */ @DeleteMapping @ApiOperation("删除") public HttpResult delete(@RequestParam("id") String id) { if (id == null) { throw new RuntimeException("id不能为空"); } InvAccountIncoice invAccountIncoice = new InvAccountIncoice(); invAccountIncoice.setInvoiceId(id); invAccountIncoice.setDelFlag("1"); return this.invAccountIncoiceService.delInvAccountIncoice(invAccountIncoice); } }