|
|
@@ -0,0 +1,261 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
|
|
+ *
|
|
|
+ * Redistribution and use in source and binary forms, with or without
|
|
|
+ * modification, are permitted provided that the following conditions are met:
|
|
|
+ *
|
|
|
+ * Redistributions of source code must retain the above copyright notice,
|
|
|
+ * this list of conditions and the following disclaimer.
|
|
|
+ * Redistributions in binary form must reproduce the above copyright
|
|
|
+ * notice, this list of conditions and the following disclaimer in the
|
|
|
+ * documentation and/or other materials provided with the distribution.
|
|
|
+ * Neither the name of the dreamlu.net developer nor the names of its
|
|
|
+ * contributors may be used to endorse or promote products derived from
|
|
|
+ * this software without specific prior written permission.
|
|
|
+ * Author: Chill 庄骞 (smallchill@163.com)
|
|
|
+ */
|
|
|
+package org.springblade.finance.controller;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import io.swagger.annotations.ApiParam;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.client.entity.CorpsDesc;
|
|
|
+import org.springblade.client.entity.FeesDesc;
|
|
|
+import org.springblade.client.feign.ICorpsDescClient;
|
|
|
+import org.springblade.client.feign.IFeesDescClient;
|
|
|
+import org.springblade.core.boot.ctrl.BladeController;
|
|
|
+import org.springblade.core.excel.util.ExcelUtil;
|
|
|
+import org.springblade.core.mp.support.Condition;
|
|
|
+import org.springblade.core.mp.support.Query;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+import org.springblade.core.tool.utils.StringUtil;
|
|
|
+import org.springblade.finance.dto.SettlementDTO;
|
|
|
+import org.springblade.finance.entity.InvoiceItem;
|
|
|
+import org.springblade.finance.excel.ExpenseExcel;
|
|
|
+import org.springblade.finance.service.IInvoiceItemService;
|
|
|
+import org.springblade.finance.service.IItemsService;
|
|
|
+import org.springblade.finance.service.ISettlementService;
|
|
|
+import org.springblade.finance.vojo.Items;
|
|
|
+import org.springblade.finance.vojo.Settlement;
|
|
|
+import org.springblade.system.user.entity.User;
|
|
|
+import org.springblade.system.user.feign.IUserClient;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 结算表 控制器
|
|
|
+ *
|
|
|
+ * @author BladeX
|
|
|
+ * @since 2021-11-03
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@AllArgsConstructor
|
|
|
+@RequestMapping("/landExpenseSettlement")
|
|
|
+@Api(value = "收款付款", tags = "收款付款-接口")
|
|
|
+public class LandExpenseSettlementController extends BladeController {
|
|
|
+
|
|
|
+ private final ISettlementService settlementService;
|
|
|
+
|
|
|
+ private final IItemsService itemsService;
|
|
|
+
|
|
|
+ private final ICorpsDescClient corpsDescClient;//获取客户信息
|
|
|
+
|
|
|
+ private final IUserClient iUserClient;
|
|
|
+
|
|
|
+ private final IFeesDescClient iFeesDescClient;
|
|
|
+
|
|
|
+ private final IInvoiceItemService iInvoiceItemService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ */
|
|
|
+ @GetMapping("/detail")
|
|
|
+ @ApiOperationSupport(order = 1)
|
|
|
+ @ApiOperation(value = "详情", notes = "传入settlement")
|
|
|
+ public R<Settlement> detail(Settlement settlement) throws Exception {
|
|
|
+ Settlement detail = settlementService.getById(settlement.getId());
|
|
|
+ if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
|
|
|
+ R<User> user = iUserClient.userInfoById(detail.getUpdateUser());
|
|
|
+ if (user.isSuccess() && user.getData() != null) {
|
|
|
+ detail.setUpdateUserName(user.getData().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
|
|
|
+ R<User> user = iUserClient.userInfoById(detail.getCreateUser());
|
|
|
+ if (user.isSuccess() && user.getData() != null) {
|
|
|
+ detail.setCreateUserName(user.getData().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<Items> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ itemsLambdaQueryWrapper.eq(Items::getPid, detail.getId()).eq(Items::getIsDeleted, 0);
|
|
|
+ List<Items> list = itemsService.list(itemsLambdaQueryWrapper);
|
|
|
+ LambdaQueryWrapper<InvoiceItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ itemLambdaQueryWrapper.eq(InvoiceItem::getPid, detail.getId()).eq(InvoiceItem::getIsDeleted, 0);
|
|
|
+ List<InvoiceItem> invoiceItemList = iInvoiceItemService.list(itemLambdaQueryWrapper);
|
|
|
+ detail.setInvoiceItemList(invoiceItemList);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ list.forEach(e -> {
|
|
|
+ if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
|
|
|
+ R<User> user = iUserClient.userInfoById(e.getUpdateUser());
|
|
|
+ if (user.isSuccess() && user.getData() != null) {
|
|
|
+ e.setUpdateUserName(user.getData().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(detail.getUpdateUser())) {
|
|
|
+ R<User> user = iUserClient.userInfoById(e.getCreateUser());
|
|
|
+ if (user.isSuccess() && user.getData() != null) {
|
|
|
+ e.setCreateUserName(user.getData().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //客户名称
|
|
|
+ if (ObjectUtil.isNotEmpty(e.getCorpId())) {
|
|
|
+ e.setCorpName(corpsDescClient.getCorpMessage(e.getCorpId()).getData().getCname());
|
|
|
+ }
|
|
|
+ //客户名称
|
|
|
+ if (ObjectUtil.isNotEmpty(e.getFleetId())) {
|
|
|
+ e.setFleetName(corpsDescClient.getCorpMessage(e.getFleetId()).getData().getCname());
|
|
|
+ }
|
|
|
+ //费用名称
|
|
|
+ if (e.getItemId() != null) {
|
|
|
+ R<FeesDesc> r = iFeesDescClient.detail(e.getItemId());
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ e.setItemName(r.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ detail.setItemsList(list);
|
|
|
+ //获取客户中文名
|
|
|
+ if (detail.getCorpId() != null) {
|
|
|
+ R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(detail.getCorpId().toString());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ detail.setCustomerModel(corpMessage.getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(detail.getCreateUser())) {
|
|
|
+ //制单人
|
|
|
+ detail.setCreateUserName(iUserClient.userInfoById(detail.getCreateUser()).getData().getRealName());
|
|
|
+ }
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页 结算表
|
|
|
+ */
|
|
|
+ @GetMapping("/list")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "分页", notes = "传入settlement")
|
|
|
+ public R<IPage<Settlement>> list(Settlement settlement, Query query) {
|
|
|
+ LambdaQueryWrapper<Settlement> settlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ settlementLambdaQueryWrapper.between(StringUtils.isNotBlank(settlement.getSettlementStartDate()) && StringUtils.isNotBlank(settlement.getSettlementEndDate()), Settlement::getSettlementDate, settlement.getSettlementStartDate(), settlement.getSettlementEndDate());
|
|
|
+ settlementLambdaQueryWrapper.between(StringUtils.isNotBlank(settlement.getCreateStartDate()) && StringUtils.isNotBlank(settlement.getCreateEndDate()), Settlement::getCreateTime, settlement.getCreateStartDate(), settlement.getCreateEndDate());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getSrcOrderno()), Settlement::getSrcOrderno, settlement.getSrcOrderno());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getSysNo()), Settlement::getSysNo, settlement.getSysNo());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getBillNo()), Settlement::getBillNo, settlement.getBillNo());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getAccount()), Settlement::getAccount, settlement.getAccount());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getRemark()), Settlement::getRemark, settlement.getRemark());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getAccountName()), Settlement::getAccountName, settlement.getAccountName());
|
|
|
+ settlementLambdaQueryWrapper.like(settlement.getCorpId() != null, Settlement::getCorpId, settlement.getCorpId());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getFinanceStatus()), Settlement::getFinanceStatus, settlement.getFinanceStatus());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getCheckStatus()), Settlement::getCheckStatus, settlement.getCheckStatus());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getBillType()), Settlement::getBillType, settlement.getBillType());
|
|
|
+ settlementLambdaQueryWrapper.ge(Func.isNotEmpty(settlement.getCompletionTimeStart()), Settlement::getCompletionTime, settlement.getCompletionTimeStart());//单据完成开始日期
|
|
|
+ settlementLambdaQueryWrapper.le(Func.isNotEmpty(settlement.getCompletionTimeEnd()), Settlement::getCompletionTime, settlement.getCompletionTimeEnd());//单据完成结束日期
|
|
|
+ settlementLambdaQueryWrapper.eq(Settlement::getTenantId, AuthUtil.getTenantId());
|
|
|
+ settlementLambdaQueryWrapper.eq(Settlement::getIsDeleted, 0);
|
|
|
+ settlementLambdaQueryWrapper.like(ObjectUtil.isNotEmpty(settlement.getAmount()), Settlement::getAmount, settlement.getAmount());//金额
|
|
|
+ settlementLambdaQueryWrapper.like(ObjectUtil.isNotEmpty(settlement.getCode()), Settlement::getCode, settlement.getCode());//箱号
|
|
|
+ settlementLambdaQueryWrapper.orderByDesc(Settlement::getCreateTime);
|
|
|
+ IPage<Settlement> pages = settlementService.page(Condition.getPage(query), settlementLambdaQueryWrapper);
|
|
|
+ List<Settlement> settlementList = pages.getRecords();
|
|
|
+ if (CollectionUtils.isNotEmpty(settlementList)) {
|
|
|
+ settlementList.forEach(e -> {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
|
|
|
+ if (corpMessage.getData() != null) {
|
|
|
+ e.setCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.data(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 付费收费导出
|
|
|
+ */
|
|
|
+ @GetMapping("/expenseExport")
|
|
|
+ @ApiOperation(value = "付费收费导出", notes = "传入settlement")
|
|
|
+ public void expenseExport(Settlement settlement, HttpServletResponse response) {
|
|
|
+ LambdaQueryWrapper<Settlement> settlementLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ settlementLambdaQueryWrapper.between(StringUtils.isNotBlank(settlement.getSettlementStartDate()) && StringUtils.isNotBlank(settlement.getSettlementEndDate()), Settlement::getSettlementDate, settlement.getSettlementStartDate(), settlement.getSettlementEndDate());
|
|
|
+ settlementLambdaQueryWrapper.between(StringUtils.isNotBlank(settlement.getCreateStartDate()) && StringUtils.isNotBlank(settlement.getCreateEndDate()), Settlement::getCreateTime, settlement.getCreateStartDate(), settlement.getCreateEndDate());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getSrcOrderno()), Settlement::getSrcOrderno, settlement.getSrcOrderno());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getSysNo()), Settlement::getSysNo, settlement.getSysNo());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getBillNo()), Settlement::getBillNo, settlement.getBillNo());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getAccount()), Settlement::getAccount, settlement.getAccount());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getRemark()), Settlement::getRemark, settlement.getRemark());
|
|
|
+ settlementLambdaQueryWrapper.like(StringUtils.isNotBlank(settlement.getAccountName()), Settlement::getAccountName, settlement.getAccountName());
|
|
|
+ settlementLambdaQueryWrapper.like(settlement.getCorpId() != null, Settlement::getCorpId, settlement.getCorpId());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getFinanceStatus()), Settlement::getFinanceStatus, settlement.getFinanceStatus());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getCheckStatus()), Settlement::getCheckStatus, settlement.getCheckStatus());
|
|
|
+ settlementLambdaQueryWrapper.eq(StringUtils.isNotBlank(settlement.getBillType()), Settlement::getBillType, settlement.getBillType());
|
|
|
+ settlementLambdaQueryWrapper.ge(Func.isNotEmpty(settlement.getCompletionTimeStart()), Settlement::getCompletionTime, settlement.getCompletionTimeStart());//单据完成开始日期
|
|
|
+ settlementLambdaQueryWrapper.le(Func.isNotEmpty(settlement.getCompletionTimeEnd()), Settlement::getCompletionTime, settlement.getCompletionTimeEnd());//单据完成结束日期
|
|
|
+ settlementLambdaQueryWrapper.eq(Settlement::getTenantId, AuthUtil.getTenantId());
|
|
|
+ settlementLambdaQueryWrapper.eq(Settlement::getIsDeleted, 0);
|
|
|
+ settlementLambdaQueryWrapper.orderByDesc(Settlement::getCreateTime);
|
|
|
+ List<Settlement> list = settlementService.list(settlementLambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ list.forEach(e -> {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
|
|
|
+ if (corpMessage.getData() != null) {
|
|
|
+ e.setCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ExpenseExcel> excelList = BeanUtil.copy(list, ExpenseExcel.class);
|
|
|
+ if (settlement.getBillType().equals("付费")) {
|
|
|
+ ExcelUtil.export(response, "付款结算", "付费结算", excelList, ExpenseExcel.class);
|
|
|
+ } else if (settlement.getBillType().equals("收费")) {
|
|
|
+ ExcelUtil.export(response, "收款结算", "收费结算", excelList, ExpenseExcel.class);
|
|
|
+ } else if (settlement.getBillType().equals("对账")) {
|
|
|
+ ExcelUtil.export(response, "对账", "对账", excelList, ExpenseExcel.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/modifyExpense")
|
|
|
+ @ApiOperation(value = "修改新增收付款信息", notes = "传入修改新增收付款信息对象")
|
|
|
+ public R modify(@RequestBody SettlementDTO dto) {
|
|
|
+ Settlement modify = settlementService.modifyExpense(dto);
|
|
|
+ return R.data(modify);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/cancelModifyExpense")
|
|
|
+ @ApiOperation(value = "撤销结算", notes = "撤销结算")
|
|
|
+ public R cancelModify(@RequestBody SettlementDTO dto) {
|
|
|
+ Settlement modify = settlementService.cancelModifyExpense(dto);
|
|
|
+ return R.data(modify);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/saveOrEditExpense")
|
|
|
+ @ApiOperation(value = "保存收付款信息", notes = "保存收付款信息")
|
|
|
+ public R saveOrEdit(@RequestBody SettlementDTO dto) {
|
|
|
+ return R.data(settlementService.saveOrEditExpense(dto));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|