|
|
@@ -33,11 +33,13 @@ 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.secure.utils.SecureUtil;
|
|
|
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.StringUtil;
|
|
|
import org.springblade.deliver.goods.entity.Delivery;
|
|
|
@@ -48,6 +50,7 @@ import org.springblade.finance.vojo.Acc;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.entity.OrderFees;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
+import org.springblade.purchase.sales.excel.SaleOrderExcel;
|
|
|
import org.springblade.purchase.sales.service.*;
|
|
|
import org.springblade.purchase.sales.vo.OrderItemsVO;
|
|
|
import org.springblade.purchase.sales.vo.OrderStatisticAnalysisVO;
|
|
|
@@ -56,6 +59,7 @@ 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.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
@@ -201,6 +205,89 @@ public class OrderController extends BladeController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 销售订单导出
|
|
|
+ */
|
|
|
+ @GetMapping("saleOrderExport")
|
|
|
+ @ApiOperation(value = "销售订单导出", notes = "传入order")
|
|
|
+ public void saleOrderExport(OrderVO order, HttpServletResponse response){
|
|
|
+ LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
|
|
|
+ lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
|
|
|
+ lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.SALES.getType());//订单类型
|
|
|
+ lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());//贸易类型
|
|
|
+ lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
|
|
|
+ lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
|
|
|
+ lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStorageId()), Order::getStorageId, order.getStorageId());//仓库id
|
|
|
+ lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
|
|
|
+ lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractEndDate()), Order::getBusinesDate, order.getContractEndDate());//合同日期结束
|
|
|
+ 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());//计划交货结束
|
|
|
+ lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderRemark()), Order::getOrderRemark, order.getOrderRemark());//备注
|
|
|
+ if (order.getGathering() != null && order.getGathering() == 0){
|
|
|
+ lambdaQueryWrapper.eq(Order::getBalanceAmount,BigDecimal.ZERO);
|
|
|
+ }else if (order.getGathering() != null && order.getGathering() == 1){
|
|
|
+ lambdaQueryWrapper.gt(Order::getBalanceAmount,BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.orderByDesc(Order::getId);
|
|
|
+ List<Order> page = orderService.list(lambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(page)) {
|
|
|
+ page.forEach(item -> {
|
|
|
+ if (item.getCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());//客户
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ item.setCorpsName(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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (item.getProductionPlant() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getProductionPlant());//销售公司
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ item.setProductionPlantName(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.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//发货数量
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SaleOrderExcel> list = BeanUtil.copy(page, SaleOrderExcel.class);
|
|
|
+ ExcelUtil.export(response, "销售订单", "销售订单", list, SaleOrderExcel.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 新增 销售或采购订单表
|
|
|
*/
|
|
|
@PostMapping("/save")
|