diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtInvoiceDaoController.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtInvoiceDaoController.java index 762cf01e3..a58bb026a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtInvoiceDaoController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtInvoiceDaoController.java @@ -10,7 +10,6 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.fantang.domain.FtInvoiceDao; -import com.ruoyi.system.fantang.domain.FtReturnDao; import com.ruoyi.system.fantang.domain.FtSettlementDao; import com.ruoyi.system.fantang.service.IFtInvoiceDaoService; import com.ruoyi.system.fantang.service.IFtReturnDaoService; @@ -147,14 +146,13 @@ public class FtInvoiceDaoController extends BaseController { iFtInvoiceDaoService.save(invoiceDao); // 跟踪回款 - if (invoiceType == 2) { - FtReturnDao ftReturnDao = new FtReturnDao(); - ftReturnDao.setInvoiceId(invoiceDao.getId()); - ftReturnDao.setReturnAt(new Date()); - ftReturnDao.setReturnFlag(0); - - ftReturnDaoService.save(ftReturnDao); - } +// if (invoiceType == 2) { +// FtReturnDao ftReturnDao = new FtReturnDao(); +// ftReturnDao.setInvoiceId(invoiceDao.getId()); +// ftReturnDao.setReturnFlag(0); +// +// ftReturnDaoService.save(ftReturnDao); +// } FtSettlementDao settlementDao = new FtSettlementDao(); settlementDao.setSettleId(params.getLong("settleId")); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtReturnDaoController.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtReturnDaoController.java index e696f5942..25cd166ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtReturnDaoController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/controller/FtReturnDaoController.java @@ -1,45 +1,46 @@ package com.ruoyi.system.fantang.controller; -import java.util.List; -import java.util.Arrays; - -import lombok.RequiredArgsConstructor; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.system.fantang.domain.FtReturnDao; -import com.ruoyi.system.fantang.service.IFtReturnDaoService; -import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.fantang.domain.FtInvoiceDao; +import com.ruoyi.system.fantang.domain.FtReturnDao; +import com.ruoyi.system.fantang.service.IFtInvoiceDaoService; +import com.ruoyi.system.fantang.service.IFtReturnDaoService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.Date; +import java.util.List; /** * 回款登记Controller - * + * * @author ft - * @date 2021-01-04 + * @date 2021-01-25 */ @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController -@RequestMapping("/fantang/invoiceReturn" ) +@RequestMapping("/fantang/returnManage") public class FtReturnDaoController extends BaseController { private final IFtReturnDaoService iFtReturnDaoService; + private final IFtInvoiceDaoService iFtInvoiceDaoService; + /** * 查询回款登记列表 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:list')") + @PreAuthorize("@ss.hasPermi('fantang:returnManage:list')") @GetMapping("/list") public TableDataInfo list(FtReturnDao ftReturnDao) { startPage(); @@ -50,29 +51,29 @@ public class FtReturnDaoController extends BaseController { /** * 导出回款登记列表 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:export')" ) - @Log(title = "回款登记" , businessType = BusinessType.EXPORT) - @GetMapping("/export" ) + @PreAuthorize("@ss.hasPermi('fantang:returnManage:export')") + @Log(title = "回款登记", businessType = BusinessType.EXPORT) + @GetMapping("/export") public AjaxResult export(FtReturnDao ftReturnDao) { List list = iFtReturnDaoService.queryList(ftReturnDao); ExcelUtil util = new ExcelUtil(FtReturnDao.class); - return util.exportExcel(list, "invoiceReturn" ); + return util.exportExcel(list, "returnManage"); } /** * 获取回款登记详细信息 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:query')" ) - @GetMapping(value = "/{id}" ) - public AjaxResult getInfo(@PathVariable("id" ) Long id) { + @PreAuthorize("@ss.hasPermi('fantang:returnManage:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(iFtReturnDaoService.getById(id)); } /** * 新增回款登记 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:add')" ) - @Log(title = "回款登记" , businessType = BusinessType.INSERT) + @PreAuthorize("@ss.hasPermi('fantang:returnManage:add')") + @Log(title = "回款登记", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody FtReturnDao ftReturnDao) { return toAjax(iFtReturnDaoService.save(ftReturnDao) ? 1 : 0); @@ -81,8 +82,8 @@ public class FtReturnDaoController extends BaseController { /** * 修改回款登记 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:edit')" ) - @Log(title = "回款登记" , businessType = BusinessType.UPDATE) + @PreAuthorize("@ss.hasPermi('fantang:returnManage:edit')") + @Log(title = "回款登记", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody FtReturnDao ftReturnDao) { return toAjax(iFtReturnDaoService.updateById(ftReturnDao) ? 1 : 0); @@ -91,10 +92,74 @@ public class FtReturnDaoController extends BaseController { /** * 删除回款登记 */ - @PreAuthorize("@ss.hasPermi('fantang:invoiceReturn:remove')" ) - @Log(title = "回款登记" , businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}" ) + @PreAuthorize("@ss.hasPermi('fantang:returnManage:remove')") + @Log(title = "回款登记", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(iFtReturnDaoService.removeByIds(Arrays.asList(ids)) ? 1 : 0); } + + @PostMapping("/addToReturn") + public AjaxResult addToReturn(@RequestBody JSONObject params) { + System.out.println(params); + + // 回款金额 + BigDecimal returnPrice = params.getBigDecimal("returnPrice"); + + // 开票金额 + BigDecimal invoiceAmount = params.getBigDecimal("invoiceAmount"); + + // 余额 + BigDecimal nowBalancePrice; + + // 发票 id + Long id = params.getLong("id"); + + if (returnPrice.compareTo(invoiceAmount) > 0) { + return AjaxResult.error("该次回款超出开票金额"); + } + + // 查找该发票上次的回款记录 + FtReturnDao lastReturn = iFtReturnDaoService.selectLastReturn(id); + + if (lastReturn == null) { + // 余额 + nowBalancePrice = invoiceAmount.subtract(returnPrice); + } else { + BigDecimal lastBalancePrice = lastReturn.getBalancePrice(); + if (lastBalancePrice.compareTo(returnPrice) < 0) { + return AjaxResult.error("该次回款超出开票金额"); + } else { + nowBalancePrice = lastBalancePrice.subtract(returnPrice); + } + } + + + FtReturnDao ftReturnDao = new FtReturnDao(); + ftReturnDao.setInvoiceId(id); + ftReturnDao.setReturnPrice(returnPrice); + ftReturnDao.setVoucherUrl(params.getString("voucherUrl")); + ftReturnDao.setReturnAt(new Date()); + ftReturnDao.setBalancePrice(nowBalancePrice); + + if (nowBalancePrice.compareTo(new BigDecimal(0)) == 0) { + FtInvoiceDao ftInvoiceDao = new FtInvoiceDao(); + ftInvoiceDao.setId(id); + ftInvoiceDao.setInvoiceType(1); + iFtInvoiceDaoService.updateById(ftInvoiceDao); + } + + iFtReturnDaoService.save(ftReturnDao); + + return AjaxResult.success("回款成功"); + } + + @GetMapping("/getReturnByInvoice/{id}") + public TableDataInfo getReturnByInvoice(@PathVariable Long id) { + startPage(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("invoice_id", id); + List list = iFtReturnDaoService.list(wrapper); + return getDataTable(list); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/domain/FtReturnDao.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/domain/FtReturnDao.java index ae4bdf680..cc91a3de6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/domain/FtReturnDao.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/domain/FtReturnDao.java @@ -21,7 +21,7 @@ import java.math.BigDecimal; * 回款登记对象 ft_return * * @author ft - * @date 2021-01-04 + * @date 2021-01-25 */ @Data @ToString diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/mapper/FtReturnDaoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/mapper/FtReturnDaoMapper.java index f18802eae..7cf28aaf4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/mapper/FtReturnDaoMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/mapper/FtReturnDaoMapper.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * 回款登记Mapper接口 * * @author ft - * @date 2021-01-04 + * @date 2021-01-25 */ public interface FtReturnDaoMapper extends BaseMapper { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/IFtReturnDaoService.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/IFtReturnDaoService.java index b1a757b7c..9a5a27bad 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/IFtReturnDaoService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/IFtReturnDaoService.java @@ -8,7 +8,7 @@ import java.util.List; * 回款登记Service接口 * * @author ft - * @date 2021-01-04 + * @date 2021-01-25 */ public interface IFtReturnDaoService extends IService { @@ -16,4 +16,6 @@ public interface IFtReturnDaoService extends IService { * 查询列表 */ List queryList(FtReturnDao ftReturnDao); + + FtReturnDao selectLastReturn(Long id); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/impl/FtReturnDaoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/impl/FtReturnDaoServiceImpl.java index 65575c1c3..d64346af0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/impl/FtReturnDaoServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/fantang/service/impl/FtReturnDaoServiceImpl.java @@ -1,22 +1,22 @@ package com.ruoyi.system.fantang.service.impl; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import org.apache.commons.lang3.StringUtils; -import com.ruoyi.system.fantang.mapper.FtReturnDaoMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.fantang.domain.FtReturnDao; +import com.ruoyi.system.fantang.mapper.FtReturnDaoMapper; import com.ruoyi.system.fantang.service.IFtReturnDaoService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; /** * 回款登记Service业务层处理 * * @author ft - * @date 2021-01-04 + * @date 2021-01-25 */ @Service public class FtReturnDaoServiceImpl extends ServiceImpl implements IFtReturnDaoService { @@ -24,27 +24,37 @@ public class FtReturnDaoServiceImpl extends ServiceImpl queryList(FtReturnDao ftReturnDao) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - if (ftReturnDao.getInvoiceId() != null){ - lqw.eq(FtReturnDao::getInvoiceId ,ftReturnDao.getInvoiceId()); + if (ftReturnDao.getInvoiceId() != null) { + lqw.eq(FtReturnDao::getInvoiceId, ftReturnDao.getInvoiceId()); } - if (ftReturnDao.getReturnAt() != null){ - lqw.eq(FtReturnDao::getReturnAt ,ftReturnDao.getReturnAt()); + if (ftReturnDao.getReturnAt() != null) { + lqw.eq(FtReturnDao::getReturnAt, ftReturnDao.getReturnAt()); } - if (ftReturnDao.getReturnPrice() != null){ - lqw.eq(FtReturnDao::getReturnPrice ,ftReturnDao.getReturnPrice()); + if (ftReturnDao.getReturnPrice() != null) { + lqw.eq(FtReturnDao::getReturnPrice, ftReturnDao.getReturnPrice()); } - if (ftReturnDao.getBalancePrice() != null){ - lqw.eq(FtReturnDao::getBalancePrice ,ftReturnDao.getBalancePrice()); + if (ftReturnDao.getBalancePrice() != null) { + lqw.eq(FtReturnDao::getBalancePrice, ftReturnDao.getBalancePrice()); } - if (StringUtils.isNotBlank(ftReturnDao.getOpera())){ - lqw.eq(FtReturnDao::getOpera ,ftReturnDao.getOpera()); + if (StringUtils.isNotBlank(ftReturnDao.getOpera())) { + lqw.eq(FtReturnDao::getOpera, ftReturnDao.getOpera()); } - if (StringUtils.isNotBlank(ftReturnDao.getVoucherUrl())){ - lqw.eq(FtReturnDao::getVoucherUrl ,ftReturnDao.getVoucherUrl()); + if (StringUtils.isNotBlank(ftReturnDao.getVoucherUrl())) { + lqw.eq(FtReturnDao::getVoucherUrl, ftReturnDao.getVoucherUrl()); } - if (ftReturnDao.getReturnFlag() != null){ - lqw.eq(FtReturnDao::getReturnFlag ,ftReturnDao.getReturnFlag()); + if (ftReturnDao.getReturnFlag() != null) { + lqw.eq(FtReturnDao::getReturnFlag, ftReturnDao.getReturnFlag()); } return this.list(lqw); } + + @Override + public FtReturnDao selectLastReturn(Long id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("invoice_id", id); + wrapper.orderByDesc("return_at"); + wrapper.last("limit 1"); + + return this.baseMapper.selectOne(wrapper); + } } diff --git a/ruoyi-ui/src/api/fantang/returnManage.js b/ruoyi-ui/src/api/fantang/returnManage.js new file mode 100644 index 000000000..4e8bad680 --- /dev/null +++ b/ruoyi-ui/src/api/fantang/returnManage.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +// 查询回款登记列表 +export function listReturnManage(query) { + return request({ + url: '/fantang/returnManage/list', + method: 'get', + params: query + }) +} + +// 查询回款登记详细 +export function getReturnManage(id) { + return request({ + url: '/fantang/returnManage/' + id, + method: 'get' + }) +} + +// 根据发票 id 查询回款记录 +export function getReturnByInvoice(id) { + return request({ + url: '/fantang/returnManage/getReturnByInvoice/' + id, + method: 'get' + }) +} + +// 新增回款登记 +export function addReturnManage(data) { + return request({ + url: '/fantang/returnManage', + method: 'post', + data: data + }) +} + +// 新增回款登记 +export function addToReturn(data) { + return request({ + url: '/fantang/returnManage/addToReturn', + method: 'post', + data: data + }) +} + +// 修改回款登记 +export function updateReturnManage(data) { + return request({ + url: '/fantang/returnManage', + method: 'put', + data: data + }) +} + +// 删除回款登记 +export function delReturnManage(id) { + return request({ + url: '/fantang/returnManage/' + id, + method: 'delete' + }) +} + +// 导出回款登记 +export function exportReturnManage(query) { + return request({ + url: '/fantang/returnManage/export', + method: 'get', + params: query + }) +} diff --git a/ruoyi-ui/src/views/fantang/invoiceReturn/index.vue b/ruoyi-ui/src/views/fantang/invoiceReturn/index.vue index badd976f8..2b4784f49 100644 --- a/ruoyi-ui/src/views/fantang/invoiceReturn/index.vue +++ b/ruoyi-ui/src/views/fantang/invoiceReturn/index.vue @@ -1,356 +1,3 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -445,25 +52,116 @@ /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/fantang/settlement/index.vue b/ruoyi-ui/src/views/fantang/settlement/index.vue index 77a23cc91..225468ba7 100644 --- a/ruoyi-ui/src/views/fantang/settlement/index.vue +++ b/ruoyi-ui/src/views/fantang/settlement/index.vue @@ -343,6 +343,7 @@ export default { /** 查询结算管理列表 */ getList() { this.loading = true; + console.log(this.queryParams); listSettlement(this.queryParams).then(response => { this.settlementList = response.rows; this.total = response.total;