| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- package com.trade.purchase.enquiry;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
- import com.trade.purchase.order.dto.OrderSubmitDto;
- import com.trade.purchase.order.entity.Order;
- import com.trade.purchase.order.entity.OrderFees;
- import com.trade.purchase.order.entity.OrderFiles;
- import com.trade.purchase.order.entity.OrderItems;
- import com.trade.purchase.order.enums.OrderTypeEnum;
- import com.trade.purchase.order.service.IOrderFeesService;
- import com.trade.purchase.order.service.IOrderFilesService;
- import com.trade.purchase.order.service.IOrderItemsService;
- import com.trade.purchase.order.service.IOrderService;
- import com.trade.purchase.order.vo.OrderVO;
- 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.feign.ICorpsDescClient;
- import org.springblade.core.boot.ctrl.BladeController;
- 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.entity.User;
- import org.springblade.system.user.feign.IUserClient;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * 出口采购询价 控制器
- *
- * @author BladeX
- * @since 2021-09-26
- */
- @RestController
- @AllArgsConstructor
- @RequestMapping("/purchase-enquiry")
- @Api(value = "出口采购询价", tags = "出口采购询价接口")
- public class PurchaseEnquiry extends BladeController {
- private final IOrderService orderService;
- private final IOrderFeesService orderFeesService;
- private final IOrderFilesService orderFilesService;
- private final IOrderItemsService orderItemsService;
- private final String ERROR_MSG = "缺少查询信息";
- private final ICorpsDescClient corpsDescClient;//获取客户信息
- private final IUserClient userClient;//获取用户信息
- /**
- * 详情
- */
- @GetMapping("/{id}")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "详情", notes = "传入order")
- public R<OrderVO> detail(@PathVariable(value = "id") String id) {
- return orderService.getOrderMessage(id);
- }
- /**
- * 分页 出口采购询价
- */
- @GetMapping("/list")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "查询所有", notes = "传入order")
- public R<IPage<Order>> list(Order order, Query query) {
- order.setIsDeleted(0);
- order.setTenantId(AuthUtil.getTenantId());
- order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
- order.setTradeType(OrderTypeEnum.EXPORT.getType());
- IPage<Order> pages = orderService.page(Condition.getPage(query), Condition.getQueryWrapper(order));
- return R.data(pages);
- }
- /**
- * 自定义分页 出口采购询价
- */
- @GetMapping("/page")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "分页", notes = "传入order")
- public R<IPage<Order>> page(OrderVO order, Query query) {
- LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
- lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
- lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.PURCHASE_ENQUIRY.getType());//订单类型
- lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.EXPORT.getType());//贸易类型
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期结束
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());//订单来源
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getShippingAddress()), Order::getShippingAddress, order.getShippingAddress());//发货地址
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getArrivalAddress()), Order::getArrivalAddress, order.getArrivalAddress());//到货地址
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getActualDeliveryDateStart()), Order::getActualDeliveryDate, order.getActualDeliveryDateStart());//发货日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getActualDeliveryDateEnd()), Order::getActualDeliveryDate, order.getActualDeliveryDateEnd());//发货日期结束
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDeliveryStartDate()), Order::getRequiredDeliveryDate, order.getDeliveryStartDate());//要求发货日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getDeliveryEndDate()), Order::getRequiredDeliveryDate, order.getDeliveryEndDate());//要求发货日期结束
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getArrivalDateStart()), Order::getRequiredArrivalDate, order.getArrivalDateStart());//要求到货日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getArrivalDateEnd()), Order::getRequiredArrivalDate, order.getArrivalDateEnd());//要求到货日期结束
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderStatus()), Order::getOrderStatus, order.getOrderStatus());//单据状态
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getSysNo()), Order::getSysNo, order.getSysNo());//系统编号
- lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getCreateTimeStart()), Order::getCreateTime, order.getCreateTimeStart());//制单日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getCreateTimeEnd()), Order::getCreateTime, order.getCreateTimeEnd());//制单日期结束
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDateValidityStart()), Order::getDateValidity, order.getDateValidityStart());//有效日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getDateValidityEnd()), Order::getDateValidity, order.getDateValidityEnd());//有效日期结束
- lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()),Order::getBusinesDate,order.getOrderStartDate());//订单日期开始
- lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()),Order::getBusinesDate,order.getOrderEndDate());//订单日期结束
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getPortOfLoad()),Order::getPortOfLoad,order.getPortOfLoad());//装货港
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getPortOfDestination()),Order::getPortOfDestination,order.getPortOfDestination());//目的港
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryStart()),Order::getPlannedDeliveryDate,order.getPlannedDeliveryStart());//计划交货开始
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryEnd()),Order::getPlannedDeliveryDate,order.getPlannedDeliveryEnd());//计划交货结束
- IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
- if (CollectionUtils.isNotEmpty(page.getRecords())) {
- page.getRecords().stream().forEach(item -> {
- if (item.getCorpId() != null) {
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());//客户
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
- item.setCorpName(corpMessage.getData().getCname());
- }
- }
- if (item.getBelongToCorpId() != null) {
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getBelongToCorpId());//销售公司
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
- item.setBelongToCorpName(corpMessage.getData().getCname());
- }
- }
- R<User> user = userClient.userInfoById(item.getCreateUser());//制单人
- if (user.isSuccess() && user.getData() != null) {
- item.setCreateUserName(user.getData().getName());
- }
- //获取订单明细
- List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
- if (CollectionUtils.isNotEmpty(list)){
- item.setOrderQuantity(list.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//数量合计
- item.setAmount(list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
- item.setPurchaseAmount(list.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//采购金额
- item.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//发货数量
- }
- });
- }
- return R.data(page);
- }
- /**
- * 新增 出口采购询价
- */
- @PostMapping("/save")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "新增", notes = "传入order")
- public R<String> save(@Valid @RequestBody OrderSubmitDto submitDto) {
- submitDto.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
- submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
- return orderService.saveOrderMessage(submitDto);
- }
- /**
- * 修改 出口采购询价
- */
- @PostMapping("/update")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "修改", notes = "传入order")
- public R<String> update(@Valid @RequestBody Order order) {
- if (order.getId() == null) {
- return R.fail(ERROR_MSG);
- }
- order.setIsDeleted(1);
- return R.status(orderService.updateById(order));
- }
- /**
- * 新增或修改 出口采购询价
- */
- @PostMapping("/submit")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "新增或修改", notes = "传入order")
- public R<OrderSubmitDto> submit(@Valid @RequestBody OrderSubmitDto submitDto) {
- submitDto.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
- submitDto.setTradeTypeEnum(OrderTypeEnum.EXPORT);
- return orderService.savePurchase(submitDto);
- }
- /**
- * 采购订单表
- */
- @PostMapping("/removeByItem")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "删除明细信息", notes = "传入order")
- public R<String> update(@Valid @RequestBody OrderItems order) {
- if (order.getId() == null) {
- return R.fail(500, "请选择要删除的数据");
- }
- order.setIsDeleted(1);
- return R.status(orderItemsService.updateById(order));
- }
- /**
- * 删除 出口采购询价
- */
- @PostMapping("/remove")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "删除", notes = "传入ids")
- public R<String> remove(@Valid @RequestBody Order order) {
- if (order.getId() == null){
- return R.fail(500,"请选择要删除的数据");
- }
- return R.status(orderService.removeById(order));
- }
- @PostMapping("/remove-byItem")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "删除明细信息", notes = "传入order")
- public R<String> removeByitem(@Valid @RequestBody OrderItems order) {
- if (order.getId() == null) {
- return R.fail(500, "请选择要删除的数据");
- }
- return R.status(orderItemsService.removeById(order));
- }
- /**
- * 删除费用信息
- */
- @PostMapping("/removeByFees")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "删除费用信息", notes = "传入order")
- public R<String> update(@Valid @RequestBody OrderFees order) {
- if (order.getId() == null) {
- return R.fail(ERROR_MSG);
- }
- order.setIsDeleted(1);
- return R.status(orderFeesService.updateById(order));
- }
- /**
- * 删除订单文件信息
- *
- * @param order
- * @return
- */
- @PostMapping("/removeByFiles")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "删除文件信息", notes = "传入order")
- public R<String> update(@Valid @RequestBody OrderFiles order) {
- if (order.getId() == null) {
- return R.fail(ERROR_MSG);
- }
- order.setIsDeleted(1);
- return R.status(orderFilesService.updateById(order));
- }
- /**
- * 报价单生成采购询价
- * @param order
- * @return
- */
- @PostMapping("/savePurchaseEnquiry")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "报价单生成采购询价单", notes = "传入order的id")
- public R<OrderVO> savePurchaseEnquiry(@Valid @RequestBody Order order){
- order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
- order.setTradeType(OrderTypeEnum.EXPORT.getType());
- return orderService.savePurchaseEnquiry(order);
- }
- /**
- * 提交采购询价
- * @param order
- * @return
- */
- @PostMapping("/submitMessage")
- @ApiOperationSupport(order = 10)
- @ApiOperation(value = "提交采购询价", notes = "传入order的id")
- public R<OrderVO> submitMessage(@Valid @RequestBody Order order){
- if (order.getId() == null){
- throw new RuntimeException("请选择确认的单据");
- }
- if (StringUtils.isNotBlank(order.getIfEnquiry()) && order.getIfEnquiry().equals("询价确认")) {
- throw new RuntimeException("请勿重复提交");
- }
- order.setBillType(OrderTypeEnum.PURCHASE_ENQUIRY.getType());
- order.setTradeType(OrderTypeEnum.EXPORT.getType());
- return orderService.submit(order);
- }
- }
|