应收账单功能实现
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
package com.ruoyi.web.controller.ar;
|
||||
|
||||
import java.util.List;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.ar.domain.ArBill;
|
||||
import com.ruoyi.ar.domain.ArBankAccount;
|
||||
import com.ruoyi.ar.domain.ArBillExport;
|
||||
import com.ruoyi.ar.domain.ArBillLog;
|
||||
import com.ruoyi.ar.domain.vo.ArBillActionRequest;
|
||||
import com.ruoyi.ar.domain.vo.ArBillGenerateQuery;
|
||||
import com.ruoyi.ar.domain.vo.ArBillGenerateRequest;
|
||||
import com.ruoyi.ar.service.IArBillService;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||
import com.ruoyi.price.domain.PrcOrderBill;
|
||||
|
||||
/** 应收账单管理。 */
|
||||
@RestController
|
||||
@RequestMapping("/ar/bill")
|
||||
@Validated
|
||||
public class ArBillController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IArBillService billService;
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(ArBill query)
|
||||
{
|
||||
startPage();
|
||||
List<ArBill> list = billService.selectArBillList(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:query')")
|
||||
@GetMapping("/{arBillId}")
|
||||
public AjaxResult getInfo(@PathVariable Long arBillId)
|
||||
{
|
||||
return success(billService.selectArBillById(arBillId));
|
||||
}
|
||||
|
||||
/** 查询指定币种的公司默认收款账户,账号返回脱敏值。 */
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:generate')")
|
||||
@GetMapping("/default-bank-account")
|
||||
public AjaxResult defaultBankAccount(@RequestParam(required = false, defaultValue = "CNY") String currency)
|
||||
{
|
||||
ArBankAccount account = billService.getDefaultBankAccount(currency);
|
||||
return success(account);
|
||||
}
|
||||
|
||||
/** 查询生成账单前的订单计费结果。 */
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:generate')")
|
||||
@GetMapping("/generate/preview")
|
||||
public TableDataInfo preview(ArBillGenerateQuery query)
|
||||
{
|
||||
List<PrcOrderBill> list = billService.previewBill(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@Log(title = "应收账单", businessType = BusinessType.INSERT)
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:generate')")
|
||||
@PostMapping("/generate")
|
||||
public AjaxResult generate(@Valid @RequestBody ArBillGenerateRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(request.getRequestId(), headerRequestId);
|
||||
ArBill bill = billService.generateBill(request, getUsername(), requestId);
|
||||
return success(bill).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收账单", businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:confirm')")
|
||||
@PutMapping("/{arBillId}/confirm")
|
||||
public AjaxResult confirm(@PathVariable Long arBillId, @RequestBody(required = false) ArBillActionRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(request == null ? null : request.getRequestId(), headerRequestId);
|
||||
return success(billService.confirmBill(arBillId, request, getUsername(), requestId)).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收账单", businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:void')")
|
||||
@PutMapping("/{arBillId}/void")
|
||||
public AjaxResult voidBill(@PathVariable Long arBillId, @RequestBody ArBillActionRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(request == null ? null : request.getRequestId(), headerRequestId);
|
||||
return success(billService.voidBill(arBillId, request, getUsername(), requestId)).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收账单导出", businessType = BusinessType.EXPORT)
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:export')")
|
||||
@PostMapping("/{arBillId}/export")
|
||||
public AjaxResult export(@PathVariable Long arBillId,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(null, headerRequestId);
|
||||
return success(billService.exportBill(arBillId, getUsername(), requestId)).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:query')")
|
||||
@GetMapping("/{arBillId}/exports")
|
||||
public AjaxResult exports(@PathVariable Long arBillId)
|
||||
{
|
||||
return success(billService.selectExports(arBillId));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:bill:export')")
|
||||
@GetMapping("/export/{exportId}/download")
|
||||
public void download(@PathVariable Long exportId, HttpServletResponse response) throws Exception
|
||||
{
|
||||
billService.downloadExport(exportId, response);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:log:list')")
|
||||
@GetMapping("/log/list")
|
||||
public TableDataInfo logs(ArBillLog query)
|
||||
{
|
||||
startPage();
|
||||
return getDataTable(billService.selectLogList(query));
|
||||
}
|
||||
|
||||
private String requestId(String bodyRequestId, String headerRequestId)
|
||||
{
|
||||
if (StringUtils.isNotEmpty(bodyRequestId)) return bodyRequestId;
|
||||
if (StringUtils.isNotEmpty(headerRequestId)) return headerRequestId;
|
||||
return IdUtils.fastSimpleUUID();
|
||||
}
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
package com.ruoyi.web.controller.ar;
|
||||
|
||||
import java.util.List;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.ar.domain.ArReceipt;
|
||||
import com.ruoyi.ar.domain.ArReceiptWriteoff;
|
||||
import com.ruoyi.ar.domain.vo.ArBillActionRequest;
|
||||
import com.ruoyi.ar.domain.vo.ArReceiptQuery;
|
||||
import com.ruoyi.ar.domain.vo.ArReceiptWriteoffRequest;
|
||||
import com.ruoyi.ar.service.IArReceiptService;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||
|
||||
/** 应收收款与核销管理。 */
|
||||
@RestController
|
||||
@RequestMapping("/ar/receipt")
|
||||
@Validated
|
||||
public class ArReceiptController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IArReceiptService receiptService;
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(ArReceiptQuery query)
|
||||
{
|
||||
startPage();
|
||||
return getDataTable(receiptService.selectReceiptList(query));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:list')")
|
||||
@GetMapping("/{receiptId}/writeoffs")
|
||||
public AjaxResult writeoffs(@PathVariable Long receiptId)
|
||||
{
|
||||
return success(receiptService.selectWriteoffs(receiptId));
|
||||
}
|
||||
|
||||
@Log(title = "应收收款", businessType = BusinessType.INSERT)
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:add')")
|
||||
@PostMapping
|
||||
public AjaxResult add(@Valid @RequestBody ArReceipt receipt,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(headerRequestId);
|
||||
return success(receiptService.registerReceipt(receipt, getUsername(), requestId)).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收收款", businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:cancel')")
|
||||
@PutMapping("/{receiptId}/cancel")
|
||||
public AjaxResult cancelReceipt(@PathVariable Long receiptId, @RequestBody(required = false) ArBillActionRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(request == null ? null : request.getRequestId(), headerRequestId);
|
||||
receiptService.cancelReceipt(receiptId, request == null ? null : request.getRemark(), getUsername(), requestId);
|
||||
return success().put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收收款核销", businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:writeoff')")
|
||||
@PostMapping("/writeoff")
|
||||
public AjaxResult writeoff(@Valid @RequestBody ArReceiptWriteoffRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = StringUtils.isNotEmpty(request.getRequestId()) ? request.getRequestId() : requestId(headerRequestId);
|
||||
List<ArReceiptWriteoff> rows = receiptService.writeoff(request, getUsername(), requestId);
|
||||
return success(rows).put("request_id", requestId);
|
||||
}
|
||||
|
||||
@Log(title = "应收收款核销", businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermi('ar:receipt:cancel')")
|
||||
@PutMapping("/writeoff/{writeoffId}/cancel")
|
||||
public AjaxResult cancel(@PathVariable Long writeoffId, @RequestBody(required = false) ArBillActionRequest request,
|
||||
@RequestHeader(value = "X-Request-Id", required = false) String headerRequestId)
|
||||
{
|
||||
String requestId = requestId(request == null ? null : request.getRequestId(), headerRequestId);
|
||||
receiptService.cancelWriteoff(writeoffId, request == null ? null : request.getRemark(), getUsername(), requestId);
|
||||
return success().put("request_id", requestId);
|
||||
}
|
||||
|
||||
private String requestId(String headerRequestId)
|
||||
{
|
||||
return StringUtils.isNotEmpty(headerRequestId) ? headerRequestId : IdUtils.fastSimpleUUID();
|
||||
}
|
||||
|
||||
private String requestId(String bodyRequestId, String headerRequestId)
|
||||
{
|
||||
return StringUtils.isNotEmpty(bodyRequestId) ? bodyRequestId : requestId(headerRequestId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user