|
|
@@ -1,18 +1,40 @@
|
|
|
package org.springblade.salesPart.order.controller;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.common.annotation.RepeatSubmit;
|
|
|
+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.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.salesPart.entity.PjOrder;
|
|
|
+import org.springblade.salesPart.entity.PjOrderItems;
|
|
|
+import org.springblade.salesPart.excel.PjOrderExportExcelCG;
|
|
|
+import org.springblade.salesPart.excel.PjOrderExportExcelXS;
|
|
|
+import org.springblade.salesPart.order.service.IOrderItemsService;
|
|
|
import org.springblade.salesPart.order.service.IOrderService;
|
|
|
+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.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author :jixinyuan
|
|
|
@@ -25,6 +47,232 @@ public class ShareSalesController {
|
|
|
|
|
|
private final IOrderService orderService;
|
|
|
|
|
|
+ private final IOrderItemsService orderItemsService;
|
|
|
+ //获取用户信息
|
|
|
+ private final IUserClient iUserClient;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 销售详情
|
|
|
+ */
|
|
|
+ @GetMapping("/detail")
|
|
|
+ @ApiOperationSupport(order = 1)
|
|
|
+ @ApiOperation(value = "详情", notes = "传入order")
|
|
|
+ public R<PjOrder> detail(PjOrder order) {
|
|
|
+ PjOrder detail = orderService.getShareSalesById(order);
|
|
|
+ return R.data(detail);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页 配件销售
|
|
|
+ */
|
|
|
+ @GetMapping("/list")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "分页", notes = "传入order")
|
|
|
+ public R<IPage<PjOrder>> list(PjOrder order, Query query) {
|
|
|
+ LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getBsType, order.getBsType())
|
|
|
+ .eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getStorageId()), PjOrder::getStorageId, order.getStorageId())//仓库
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getStorageName()), PjOrder::getStorageName, order.getStorageName())
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getSalerName()), PjOrder::getSalerName, order.getSalerName())
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getSalerId()), PjOrder::getSalerId, order.getSalerId())//业务员
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), PjOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());//来源
|
|
|
+ if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
|
|
|
+ lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
|
|
|
+ }
|
|
|
+ if (order.getPaymentDateList() != null && order.getPaymentDateList().size() > 1) {//支付时间
|
|
|
+ lambdaQueryWrapper.ge(PjOrder::getPaymentDate, order.getPaymentDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(PjOrder::getPaymentDate, order.getPaymentDateList().get(1));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
|
|
|
+ lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
|
|
|
+ if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getSalerId, AuthUtil.getUserId());
|
|
|
+ } else if (AuthUtil.getUserRole().contains("客户")) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getCreateUser, AuthUtil.getUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(pages.getRecords())) {
|
|
|
+ List<Long> userIds = new ArrayList<>();
|
|
|
+ List<Long> createUser = pages.getRecords().stream().map(PjOrder::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
+ if (!createUser.isEmpty()) {
|
|
|
+ userIds.addAll(createUser);
|
|
|
+ }
|
|
|
+ List<Long> updateUser = pages.getRecords().stream().map(PjOrder::getUpdateUser).filter(Objects::nonNull).filter(id -> !userIds.contains(id)).collect(Collectors.toList());
|
|
|
+ if (!updateUser.isEmpty()) {
|
|
|
+ userIds.addAll(updateUser);
|
|
|
+ }
|
|
|
+ StringBuilder user = new StringBuilder();
|
|
|
+ List<User> userList = new ArrayList<>();
|
|
|
+ for (Long item : userIds) {
|
|
|
+ user.append(item).append(",");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(user.toString())) {
|
|
|
+ userList = iUserClient.selectUserList(user.substring(0, user.length() - 1));
|
|
|
+ }
|
|
|
+ List<Long> ids = pages.getRecords().stream().map(PjOrder::getId).collect(Collectors.toList());
|
|
|
+ List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().eq(PjOrderItems::getIsDeleted, 0)
|
|
|
+ .in(PjOrderItems::getPid, ids));
|
|
|
+ for (PjOrder item : pages.getRecords()) {
|
|
|
+ if (ObjectUtil.isNotEmpty(userList)) {
|
|
|
+ if (ObjectUtils.isNotNull(item.getUpdateUser())) {
|
|
|
+ userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
|
|
|
+ .findFirst().ifPresent(users -> item.setUpdateUserName(users.getRealName()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(item.getCreateUser())) {
|
|
|
+ userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
|
|
|
+ .findFirst().ifPresent(users -> item.setCreateUserName(users.getRealName()));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) == 0) {
|
|
|
+ item.setReturnsStatus("全退");
|
|
|
+ } else if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) > 0 && new BigDecimal("0.00").compareTo(item.getReturnsNumber()) != 0) {
|
|
|
+ item.setReturnsStatus("部分");
|
|
|
+ } else {
|
|
|
+ item.setReturnsStatus("无");
|
|
|
+ }
|
|
|
+ if (!pjOrderItemsList.isEmpty()) {
|
|
|
+ long count = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).count();
|
|
|
+ item.setItem(count + "");
|
|
|
+ item.setNumberRows((int) count);
|
|
|
+ }
|
|
|
+ item.setSurplusShipNum(item.getGoodsTotalShipNum().subtract(item.getOutGoodsTotalShipNum()));
|
|
|
+ item.setSurplusShipAmount(item.getGoodsTotalShipAmount().subtract(item.getOutGoodsTotalShipAmount()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.data(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单(导出)
|
|
|
+ */
|
|
|
+ @GetMapping("/listExport")
|
|
|
+ @ApiOperationSupport(order = 3)
|
|
|
+ @ApiOperation(value = "分页", notes = "传入order")
|
|
|
+ public void listExport(PjOrder order, HttpServletResponse response) {
|
|
|
+ LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getBsType, order.getBsType())
|
|
|
+ .eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getStorageId()), PjOrder::getStorageId, order.getStorageId())//仓库
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getStorageName()), PjOrder::getStorageName, order.getStorageName())
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getSalerName()), PjOrder::getSalerName, order.getSalerName())
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getSalerId()), PjOrder::getSalerId, order.getSalerId())//业务员
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), PjOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
|
|
|
+ .like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());//来源
|
|
|
+ if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//业务日期
|
|
|
+ lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
|
|
|
+ }
|
|
|
+ if (order.getPaymentDateList() != null && order.getPaymentDateList().size() > 1) {//支付时间
|
|
|
+ lambdaQueryWrapper.ge(PjOrder::getPaymentDate, order.getPaymentDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(PjOrder::getPaymentDate, order.getPaymentDateList().get(1));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(order.getActualPaymentType())) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getActualPaymentStatus, order.getActualPaymentType());
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
|
|
|
+ lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
|
|
|
+ if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
|
|
|
+ if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getSalerId, AuthUtil.getUserId());
|
|
|
+ } else if (AuthUtil.getUserRole().contains("客户")) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getCreateUser, AuthUtil.getUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(pages)) {
|
|
|
+ List<Long> userIds = new ArrayList<>();
|
|
|
+ List<Long> createUser = pages.stream().map(PjOrder::getCreateUser).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
+ if (!createUser.isEmpty()) {
|
|
|
+ userIds.addAll(createUser);
|
|
|
+ }
|
|
|
+ List<Long> updateUser = pages.stream().map(PjOrder::getUpdateUser).filter(Objects::nonNull).filter(id -> !userIds.contains(id)).collect(Collectors.toList());
|
|
|
+ if (!updateUser.isEmpty()) {
|
|
|
+ userIds.addAll(updateUser);
|
|
|
+ }
|
|
|
+ StringBuilder user = new StringBuilder();
|
|
|
+ List<User> userList = new ArrayList<>();
|
|
|
+ for (Long item : userIds) {
|
|
|
+ user.append(item).append(",");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(user.toString())) {
|
|
|
+ userList = iUserClient.selectUserList(user.substring(0, user.length() - 1));
|
|
|
+ }
|
|
|
+ List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
+ .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
+ .in(PjOrderItems::getPid, pages.stream().map(PjOrder::getId).distinct().collect(Collectors.toList())));
|
|
|
+ for (PjOrder item : pages) {
|
|
|
+ if (ObjectUtil.isNotEmpty(userList)) {
|
|
|
+ if (ObjectUtils.isNotNull(item.getUpdateUser())) {
|
|
|
+ userList.stream().filter(e -> e.getId().equals(item.getUpdateUser()))
|
|
|
+ .findFirst().ifPresent(users -> item.setUpdateUserName(users.getRealName()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(item.getCreateUser())) {
|
|
|
+ userList.stream().filter(e -> e.getId().equals(item.getCreateUser()))
|
|
|
+ .findFirst().ifPresent(users -> item.setCreateUserName(users.getRealName()));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ List<Long> pjOrderItems = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId()))
|
|
|
+ .map(PjOrderItems::getGoodsId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ item.setGoodsIds(pjOrderItems.stream().map(Object::toString).collect(Collectors.joining(",")));
|
|
|
+ if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) == 0) {
|
|
|
+ item.setReturnsStatus("全退");
|
|
|
+ } else if (item.getGoodsTotalNum().compareTo(item.getReturnsNumber()) > 0 && new BigDecimal("0.00").compareTo(item.getReturnsNumber()) != 0) {
|
|
|
+ item.setReturnsStatus("部分");
|
|
|
+ } else {
|
|
|
+ item.setReturnsStatus("无");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<PjOrderExportExcelXS> list = BeanUtil.copy(pages, PjOrderExportExcelXS.class);
|
|
|
+ for (PjOrderExportExcelXS item : list) {
|
|
|
+ if (1 == item.getActualPaymentStatus()) {
|
|
|
+ item.setPaymentStatus("待付款");
|
|
|
+ } else if (2 == item.getActualPaymentStatus()) {
|
|
|
+ item.setPaymentStatus("已付款");
|
|
|
+ } else if (3 == item.getActualPaymentStatus()) {
|
|
|
+ item.setPaymentStatus("尾款");
|
|
|
+ } else if (4 == item.getActualPaymentStatus()) {
|
|
|
+ item.setPaymentStatus("已退款");
|
|
|
+ } else {
|
|
|
+ item.setPaymentStatus("-");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ("XS".equals(order.getBsType())) {
|
|
|
+ ExcelUtil.export(response, "销售订单", "订单数据", list, PjOrderExportExcelXS.class);
|
|
|
+ } else {
|
|
|
+ ExcelUtil.export(response, "采购订单", "订单数据", BeanUtil.copy(pages, PjOrderExportExcelCG.class), PjOrderExportExcelCG.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 共享销售单新增或修改
|