|
|
@@ -0,0 +1,521 @@
|
|
|
+/*
|
|
|
+ * 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.los.business.sea.controller;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+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.common.annotation.RepeatSubmit;
|
|
|
+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.los.Util.IDeptUtils;
|
|
|
+import org.springblade.los.business.release.entity.SeaReleaseBillItems;
|
|
|
+import org.springblade.los.business.sea.entity.Bills;
|
|
|
+import org.springblade.los.business.sea.service.IBillsService;
|
|
|
+import org.springblade.los.business.sea.vo.BillsVO;
|
|
|
+import org.springblade.los.excel.BillsExcel;
|
|
|
+import org.springblade.system.entity.DictBiz;
|
|
|
+import org.springblade.system.feign.IDictBizClient;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 贸易代理-海运进口 控制器
|
|
|
+ *
|
|
|
+ * @author BladeX
|
|
|
+ * @since 2023-10-16
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@AllArgsConstructor
|
|
|
+@RequestMapping("/tradebills")
|
|
|
+@Api(value = "贸易代理-海运进口", tags = "贸易代理-海运进口接口")
|
|
|
+public class TradeBillsController extends BladeController {
|
|
|
+
|
|
|
+ private final IBillsService billsService;
|
|
|
+
|
|
|
+ private final IDeptUtils deptUtils;
|
|
|
+
|
|
|
+ private final IDictBizClient dictBizClient;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ */
|
|
|
+ @GetMapping("/detailTrade")
|
|
|
+ @ApiOperationSupport(order = 1)
|
|
|
+ @ApiOperation(value = "详情", notes = "传入bills")
|
|
|
+ public R<Bills> detailTrade(Bills bills) {
|
|
|
+ Bills detail = billsService.detailTrade(bills);
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页 业务-海运进出口
|
|
|
+ */
|
|
|
+ @GetMapping("/listTrade")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "分页", notes = "传入bills")
|
|
|
+ public R<IPage<Bills>> listTrade(Bills bills, Query query) {
|
|
|
+ LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.select(Bills::getId, Bills::getBillNo, Bills::getBillType, Bills::getMasterBillNo,
|
|
|
+ Bills::getCorpCnName, Bills::getCorpId, Bills::getCorpEnName, Bills::getVesselCnName,
|
|
|
+ Bills::getVesselId, Bills::getVoyageNo, Bills::getMblno, Bills::getHblno, Bills::getEta, Bills::getEtd,
|
|
|
+ Bills::getPolEnName, Bills::getPolId, Bills::getPodEnName, Bills::getPodId, Bills::getLoadType, Bills::getPlaceReceiptName,
|
|
|
+ Bills::getCargoType, Bills::getMarks, Bills::getQuantity, Bills::getGrossWeight, Bills::getNetWeight,
|
|
|
+ Bills::getMeasurement, Bills::getQuantityV20, Bills::getQuantityV40, Bills::getQuantityV40hc, Bills::getQuantityV45,
|
|
|
+ Bills::getQuantityV48, Bills::getIsNeedLand, Bills::getIsNeedDeclare, Bills::getIsNeedIq, Bills::getAmountDr,
|
|
|
+ Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd, Bills::getAmountProfitUsd,
|
|
|
+ Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc, Bills::getCheckCrStatusDescr, Bills::getCheckDrStatusDescr,
|
|
|
+ Bills::getStlCrStatusDescr, Bills::getStlDrStatusDescr, Bills::getInvoiceCrStatusDescr, Bills::getInvoiceDrStatusDescr, Bills::getCreateUserName,
|
|
|
+ Bills::getCreateTime, Bills::getUpdateUserName, Bills::getUpdateTime, Bills::getStatus, Bills::getBillStatus,
|
|
|
+ Bills::getAccountStatus, Bills::getRemarks, Bills::getPackingUnit, Bills::getBillDate, Bills::getTeamName,
|
|
|
+ Bills::getCreateUser, Bills::getTeu, Bills::getIssueType, Bills::getBookingNo, Bills::getQuantityCntrDescr,
|
|
|
+ Bills::getCyCnName, Bills::getCarrierCnName, Bills::getSrcType, Bills::getSrcCnName, Bills::getBookingAgentCnName,
|
|
|
+ Bills::getHconsigneeCnName, Bills::getCreateDeptName, Bills::getLineCnName);
|
|
|
+ lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .and(i -> i.isNull(Bills::getMasterId).or()
|
|
|
+ .eq(Bills::getMasterId, 0))
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
|
|
|
+ .like(Bills::getVesselEnName, bills.getVesselCnName()))
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
|
|
|
+ .like(Bills::getCorpEnName, bills.getCorpCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCarrierCnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierCnName()).or()
|
|
|
+ .like(Bills::getCarrierEnName, bills.getCarrierCnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
|
|
|
+ .like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
|
|
|
+ .like(Bills::getLineEnName, bills.getLineCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
|
|
|
+ .like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
|
|
|
+ .apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
|
|
|
+ }
|
|
|
+ if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
+ lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
|
|
|
+ .like(Bills::getSrcEnName, bills.getSrcCnName()));
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
|
|
|
+ lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin")) {
|
|
|
+ lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
|
|
|
+ .like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
|
|
|
+ .like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
|
|
|
+
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getAccountStatus()), Bills::getAccountStatus, bills.getAccountStatus())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus());
|
|
|
+ if ("SE".equals(bills.getBusinessType())) {
|
|
|
+ lambdaQueryWrapper.orderByDesc(Bills::getEtd);
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.orderByDesc(Bills::getEta);
|
|
|
+ }
|
|
|
+ IPage<Bills> pages = billsService.page(Condition.getPage(query), lambdaQueryWrapper);
|
|
|
+ return R.data(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 业务-海运进List
|
|
|
+ */
|
|
|
+ @GetMapping("/listAllTrade")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "listAll", notes = "传入bills")
|
|
|
+ public R<List<Bills>> lislistAllTradetTrade(Bills bills) {
|
|
|
+ LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
|
|
|
+ .like(Bills::getVesselEnName, bills.getVesselCnName()))
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
|
|
|
+ .like(Bills::getCorpEnName, bills.getCorpCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCarrierCnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierCnName()).or()
|
|
|
+ .like(Bills::getCarrierEnName, bills.getCarrierCnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
|
|
|
+ .like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
|
|
|
+ .like(Bills::getLineEnName, bills.getLineCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
|
|
|
+ .like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
|
|
|
+ .like(Bills::getSrcEnName, bills.getSrcCnName()))
|
|
|
+ .apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
|
|
|
+ lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin")) {
|
|
|
+ lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
|
|
|
+ .like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
|
|
|
+ .like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
|
|
|
+
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
|
|
|
+
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getMasterBillNo()), Bills::getMasterBillNo, bills.getMasterBillNo())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getMasterId()), Bills::getMasterId, bills.getMasterId())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
|
|
|
+ .orderByDesc(Bills::getCreateTime);
|
|
|
+ List<Bills> pages = billsService.list(lambdaQueryWrapper);
|
|
|
+ return R.data(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增或修改 业务-海运进出口(全部)
|
|
|
+ */
|
|
|
+ @PostMapping("/submitTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "新增或修改", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R submitTrade(@Valid @RequestBody Bills bills) throws Exception {
|
|
|
+ return billsService.submit(bills);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增或修改 业务-海运进出口(单表)
|
|
|
+ */
|
|
|
+ @PostMapping("/addTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "新增或修改", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R add(@Valid @RequestBody Bills bills) throws Exception {
|
|
|
+ return billsService.add(bills);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 退舱
|
|
|
+ */
|
|
|
+ @PostMapping("/disembarkingTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "退舱", notes = "传入ids")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R disembarkingTrade(@RequestParam String ids) {
|
|
|
+ return billsService.disembarking(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 取消退舱
|
|
|
+ */
|
|
|
+ @PostMapping("/revokeDisembarkingTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "取消退舱", notes = "传入ids")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R revokeDisembarkingTrade(@RequestParam String ids) {
|
|
|
+ return billsService.revokeDisembarking(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除 业务-海运进出口
|
|
|
+ */
|
|
|
+ @PostMapping("/removeTrade")
|
|
|
+ @ApiOperationSupport(order = 8)
|
|
|
+ @ApiOperation(value = "删除", notes = "传入ids")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R removeTrade(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
|
|
|
+ billsService.removeIds(Func.toLongList(ids));
|
|
|
+ return R.data("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申请mblNo
|
|
|
+ */
|
|
|
+ @PostMapping("/getBillNoTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "新增或修改", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R getBillNoTrade(@Valid @RequestBody Bills bills) {
|
|
|
+ return billsService.getBillNo(bills);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 单据请核
|
|
|
+ */
|
|
|
+ @PostMapping("/checkBillsTrade")
|
|
|
+ @ApiOperationSupport(order = 13)
|
|
|
+ @ApiOperation(value = "请核", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R checkOrderTrade(@RequestBody Bills bills) {
|
|
|
+ Bills declare = billsService.checkBills(bills);
|
|
|
+ return R.data(declare);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 撤销单据请核
|
|
|
+ */
|
|
|
+ @PostMapping("/revokeCheckBillsTrade")
|
|
|
+ @ApiOperationSupport(order = 13)
|
|
|
+ @ApiOperation(value = "撤销请核", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R revokeCheckBillsTrade(@RequestBody Bills bills) {
|
|
|
+ Bills declare = billsService.revokeCheckOrder(bills);
|
|
|
+ return R.data(declare);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 审核通过
|
|
|
+ */
|
|
|
+ @PostMapping("/passCheckTrade")
|
|
|
+ @ApiOperationSupport(order = 14)
|
|
|
+ @ApiOperation(value = "审核通过", notes = "传入id")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R passCheckTrade(@ApiParam(value = "主表id", required = true) @RequestParam Long id) {
|
|
|
+ return billsService.passCheck(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 审核中
|
|
|
+ */
|
|
|
+ @PostMapping("/underReviewTrade")
|
|
|
+ @ApiOperationSupport(order = 15)
|
|
|
+ @ApiOperation(value = "审核中", notes = "传入id")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R underReviewTrade(@ApiParam(value = "主表id", required = true) @RequestParam Long id) {
|
|
|
+ return billsService.underReview(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 审核不通过
|
|
|
+ */
|
|
|
+ @PostMapping("/passCancelTrade")
|
|
|
+ @ApiOperationSupport(order = 16)
|
|
|
+ @ApiOperation(value = "Feign-审核不通过", notes = "传入财务id")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R passCancelTrade(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id) {
|
|
|
+ billsService.passCancel(id);
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 复制单据
|
|
|
+ */
|
|
|
+ @PostMapping("/copyBillsTrade")
|
|
|
+ @ApiOperationSupport(order = 13)
|
|
|
+ @ApiOperation(value = "复制单据", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R copyBillsTrade(@RequestBody Bills bills) {
|
|
|
+ Bills declare = billsService.copyBills(bills);
|
|
|
+ return R.data(declare);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ */
|
|
|
+ @GetMapping("/getDetailTrade")
|
|
|
+ @ApiOperationSupport(order = 1)
|
|
|
+ @ApiOperation(value = "详情", notes = "传入bills")
|
|
|
+ public R<List<Bills>> getDetailTrade(Bills bills) {
|
|
|
+ List<Bills> detail = billsService.getDetail(bills);
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否同步汇率
|
|
|
+ */
|
|
|
+ @GetMapping("/synchronizationExchangeRateTrade")
|
|
|
+ @ApiOperationSupport(order = 6)
|
|
|
+ @ApiOperation(value = "新增或修改", notes = "传入bills")
|
|
|
+ @RepeatSubmit
|
|
|
+ public R synchronizationExchangeRateTrade(@RequestParam("date") String date, @RequestParam("type") String type
|
|
|
+ , @RequestParam("billId") Long billId) {
|
|
|
+ return billsService.synchronizationExchangeRate(date, type, billId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出
|
|
|
+ */
|
|
|
+ @GetMapping("/exportBillsTrade")
|
|
|
+ public void exportBUnitsTrade(Bills bills, HttpServletResponse response) {
|
|
|
+ LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.select(Bills::getId, Bills::getBillNo, Bills::getBillType, Bills::getMasterBillNo,
|
|
|
+ Bills::getCorpCnName, Bills::getCorpId, Bills::getCorpEnName, Bills::getVesselCnName,
|
|
|
+ Bills::getVesselId, Bills::getVoyageNo, Bills::getMblno, Bills::getHblno, Bills::getEta, Bills::getEtd,
|
|
|
+ Bills::getPolEnName, Bills::getPolId, Bills::getPodEnName, Bills::getPodId, Bills::getLoadType, Bills::getPlaceReceiptName,
|
|
|
+ Bills::getCargoType, Bills::getMarks, Bills::getQuantity, Bills::getGrossWeight, Bills::getNetWeight,
|
|
|
+ Bills::getMeasurement, Bills::getQuantityV20, Bills::getQuantityV40, Bills::getQuantityV40hc, Bills::getQuantityV45,
|
|
|
+ Bills::getQuantityV48, Bills::getIsNeedLand, Bills::getIsNeedDeclare, Bills::getIsNeedIq, Bills::getAmountDr,
|
|
|
+ Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd, Bills::getAmountProfitUsd,
|
|
|
+ Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc, Bills::getCheckCrStatusDescr, Bills::getCheckDrStatusDescr,
|
|
|
+ Bills::getStlCrStatusDescr, Bills::getStlDrStatusDescr, Bills::getInvoiceCrStatusDescr, Bills::getInvoiceDrStatusDescr, Bills::getCreateUserName,
|
|
|
+ Bills::getCreateTime, Bills::getUpdateUserName, Bills::getUpdateTime, Bills::getStatus, Bills::getBillStatus,
|
|
|
+ Bills::getAccountStatus, Bills::getRemarks, Bills::getPackingUnit, Bills::getBillDate, Bills::getTeamName,
|
|
|
+ Bills::getCreateUser, Bills::getTeu, Bills::getIssueType, Bills::getBookingNo, Bills::getQuantityCntrDescr,
|
|
|
+ Bills::getCyCnName, Bills::getCarrierCnName, Bills::getSrcType, Bills::getSrcCnName, Bills::getBookingAgentCnName,
|
|
|
+ Bills::getHconsigneeCnName, Bills::getCreateDeptName, Bills::getLineCnName);
|
|
|
+ lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .and(i -> i.isNull(Bills::getMasterId).or()
|
|
|
+ .eq(Bills::getMasterId, 0))
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
|
|
|
+ .like(Bills::getVesselEnName, bills.getVesselCnName()))
|
|
|
+ .like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
|
|
|
+ .like(Bills::getCorpEnName, bills.getCorpCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCarrierCnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierCnName()).or()
|
|
|
+ .like(Bills::getCarrierEnName, bills.getCarrierCnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
|
|
|
+ .like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
|
|
|
+ .like(Bills::getLineEnName, bills.getLineCnName()))
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
|
|
|
+ .like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
|
|
|
+ .apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
|
|
|
+ }
|
|
|
+ if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
+ lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
|
|
|
+ .like(Bills::getSrcEnName, bills.getSrcCnName()));
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
|
|
|
+ lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
|
|
|
+ }
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin")) {
|
|
|
+ lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
|
|
|
+ .like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
|
|
|
+ .and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
|
|
|
+ .like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
|
|
|
+
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
|
|
|
+ .eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus())
|
|
|
+ .orderByDesc(Bills::getCreateTime);
|
|
|
+ List<Bills> list = billsService.list(lambdaQueryWrapper);
|
|
|
+ List<BillsExcel> billsExcelList = new ArrayList<>();
|
|
|
+ R<List<DictBiz>> res1 = dictBizClient.getList("account_status");
|
|
|
+ R<List<DictBiz>> res2 = dictBizClient.getList("audit_status_los");
|
|
|
+ R<List<DictBiz>> res3 = dictBizClient.getList("bill_status");
|
|
|
+ for (Bills item : list) {
|
|
|
+ BillsExcel billsExcel = new BillsExcel();
|
|
|
+ BeanUtil.copyProperties(item, billsExcel);
|
|
|
+ if (1 == item.getIsNeedLand()) {
|
|
|
+ billsExcel.setIsNeedLand("是");
|
|
|
+ } else {
|
|
|
+ billsExcel.setIsNeedLand("否");
|
|
|
+ }
|
|
|
+ if (1 == item.getIsNeedDeclare()) {
|
|
|
+ billsExcel.setIsNeedDeclare("是");
|
|
|
+ } else {
|
|
|
+ billsExcel.setIsNeedDeclare("否");
|
|
|
+ }
|
|
|
+ if (1 == item.getIsNeedIq()) {
|
|
|
+ billsExcel.setIsNeedIq("是");
|
|
|
+ } else {
|
|
|
+ billsExcel.setIsNeedIq("否");
|
|
|
+ }
|
|
|
+ if (res1.isSuccess() && !res1.getData().isEmpty()) {
|
|
|
+ DictBiz dictBiz = res1.getData().stream().filter(e -> e.getDictKey().equals(item.getAccountStatus() + "")).findFirst().orElse(null);
|
|
|
+ if (dictBiz != null) {
|
|
|
+ billsExcel.setAccountStatus(dictBiz.getDictValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (res2.isSuccess() && !res2.getData().isEmpty()) {
|
|
|
+ DictBiz dictBiz = res2.getData().stream().filter(e -> e.getDictKey().equals(item.getStatus() + "")).findFirst().orElse(null);
|
|
|
+ if (dictBiz != null) {
|
|
|
+ billsExcel.setStatus(dictBiz.getDictValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (res3.isSuccess() && !res3.getData().isEmpty()) {
|
|
|
+ DictBiz dictBiz = res3.getData().stream().filter(e -> e.getDictKey().equals(item.getBillStatus() + "")).findFirst().orElse(null);
|
|
|
+ if (dictBiz != null) {
|
|
|
+ billsExcel.setBillStatus(dictBiz.getDictValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ billsExcelList.add(billsExcel);
|
|
|
+ }
|
|
|
+ if ("SE".equals(bills.getBusinessType())) {
|
|
|
+ ExcelUtil.export(response, "海运出口", "海运出口", billsExcelList, BillsExcel.class);
|
|
|
+ } else {
|
|
|
+ ExcelUtil.export(response, "海运进口", "海运进口", billsExcelList, BillsExcel.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|