/* * 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 com.trade.finance.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.trade.finance.dto.ApplyDTO; import com.trade.finance.dto.SettlementDTO; import com.trade.finance.entity.Acc; import com.trade.finance.entity.Items; import com.trade.finance.entity.Settlement; import com.trade.finance.service.IItemsService; import com.trade.finance.service.ISettlementService; import com.trade.finance.vo.SettlementVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import javax.validation.Valid; import lombok.Data; import org.springblade.client.entity.CorpsBank; import org.springblade.client.entity.CorpsDesc; import org.springblade.client.feign.ICorpsDescClient; import org.springblade.client.feign.IFeesDescClient; 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.secure.utils.SecureUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.system.user.feign.IUserClient; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.boot.ctrl.BladeController; import java.util.List; import java.util.Map; /** * 结算表 控制器 * * @author BladeX * @since 2021-11-03 */ @RestController @AllArgsConstructor @RequestMapping("/settlement") @Api(value = "收款付款", tags = "收款付款-接口") public class SettlementController extends BladeController { private final ISettlementService settlementService; private final IItemsService itemsService; private final ICorpsDescClient corpsDescClient;//获取客户信息 private final IUserClient iUserClient; private final IFeesDescClient iFeesDescClient; /** * 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入settlement") public R detail(Settlement settlement) { Settlement detail = settlementService.getOne(Condition.getQueryWrapper(settlement)); LambdaQueryWrapper itemsLambdaQueryWrapper=new LambdaQueryWrapper<>(); itemsLambdaQueryWrapper.eq(Items::getPid,detail.getId()); List list = itemsService.list(itemsLambdaQueryWrapper); if(CollectionUtils.isNotEmpty(list)) { list.forEach(e->{ //录入人 e.setCreateUserName(iUserClient.userInfoById(e.getCreateUser()).getData().getRealName()); //客户名称 e.setCorpName(corpsDescClient.getCorpMessage(e.getCorpId()).getData().getCname()); //费用名称 e.setItemName(iFeesDescClient.detail(Long.valueOf(e.getCostType())).getData().getCname()); }); } detail.setItemsList(list); //获取客户中文名 if (detail.getCorpId() != null){ R>> corpMessage = corpsDescClient.getCorpsMessage(detail.getCorpId().toString()); if (corpMessage.isSuccess() && corpMessage.getData() != null){ detail.setCustomerModel(corpMessage.getData()); } } List corpsBanks = corpsDescClient.listBankByCorpId(detail.getCorpId()); detail.setBankList(corpsBanks); //制单人 detail.setCreateUserName(iUserClient.userInfoById(detail.getCreateUser()).getData().getRealName()); return R.data(detail); } /** * 分页 结算表 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入settlement") public R> list(Settlement settlement, Query query) { LambdaQueryWrapper 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.getBillNo()),Settlement::getBillNo,settlement.getBillNo()); 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.eq(Settlement::getTenantId, AuthUtil.getTenantId()); settlementLambdaQueryWrapper.eq(Settlement::getIsDeleted, 0); IPage pages = settlementService.page(Condition.getPage(query), settlementLambdaQueryWrapper); List settlementList = pages.getRecords(); if(CollectionUtils.isNotEmpty(settlementList)) { settlementList.forEach(e->{ R corpMessage = corpsDescClient.getCorpMessage(e.getCorpId()); if(corpMessage.getData()!=null) { e.setCorpName(corpMessage.getData().getCname()); } }); } return R.data(pages); } /** * 自定义分页 结算表 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入settlement") public R> page(SettlementVO settlement, Query query) { IPage pages = settlementService.selectSettlementPage(Condition.getPage(query), settlement); return R.data(pages); } @PostMapping("modify") @ApiOperation(value = "修改新增收付款信息", notes = "传入修改新增收付款信息对象") public R modify(@RequestBody SettlementDTO dto) { settlementService.modify(dto); return R.data(dto); } @PostMapping("saveOrEdit") @ApiOperation(value = "保存收付款信息", notes = "保存收付款信息") public R saveOrEdit(@RequestBody SettlementDTO dto) { settlementService.saveOrEdit(dto); return R.data(dto); } /** * 新增 结算表 @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入settlement") public R save(@Valid @RequestBody Settlement settlement) { return R.status(settlementService.save(settlement)); } *//** * 修改 结算表 *//* @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入settlement") public R update(@Valid @RequestBody Settlement settlement) { return R.status(settlementService.updateById(settlement)); }*/ /** * 新增或修改 结算表 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入settlement") public R submit(@Valid @RequestBody Settlement settlement) { settlementService.saveOrUpdate(settlement); return R.data(settlement); } /** * 删除 结算表 */ @PostMapping("/remove") @ApiOperationSupport(order = 8) @ApiOperation(value = "删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(settlementService.removeByIds(Func.toLongList(ids))); } /** * 申请货款(申请/付费) * */ @PostMapping("/apply") @ApiOperationSupport(order = 8) @ApiOperation(value = "请货款(收费/付费)", notes = "传入Finance_items") public R apply(@RequestBody ApplyDTO dto) { if(CollectionUtils.isEmpty(dto.getItemsList())) { throw new SecurityException("传入数据不能为空"); } return R.data(settlementService.apply(dto.getItemsList(),dto.getBillType())); } /** * 付款申请-清核 * */ @PostMapping("/check") @ApiOperationSupport(order = 8) @ApiOperation(value = "付款申请-清核", notes = "传入付款申请对象") public R check (@RequestBody Settlement settlement) { settlementService.check(settlement); R detail = this.detail(settlement); if(detail.getData()!=null) { return R.data(detail.getData()); } else { return R.data(null); } } /** * 销售-收款结算 * */ @PostMapping("/paymentApply") @ApiOperationSupport(order = 8) @ApiOperation(value = "付销售-收款结算-生成-销售收费账单", notes = "传入销售申请对象") public R paymentApply (@RequestBody ApplyDTO dto) { settlementService.paymentApply(dto.getItemsList(),dto.getBillType()); return R.success("操作成功"); } }