|
|
@@ -17,19 +17,16 @@
|
|
|
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.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import javax.validation.Valid;
|
|
|
-
|
|
|
-import org.springblade.client.entity.CorpsAttn;
|
|
|
+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;
|
|
|
@@ -39,20 +36,24 @@ 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.corps.service.ICorpsAttnService;
|
|
|
-import org.springblade.salesPart.entity.*;
|
|
|
+import org.springblade.salesPart.entity.PjCorpsAttn;
|
|
|
+import org.springblade.salesPart.entity.PjOrder;
|
|
|
+import org.springblade.salesPart.entity.PjOrderItems;
|
|
|
import org.springblade.salesPart.enums.OrderTypeEnum;
|
|
|
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.salesPart.vo.OrderStatistics;
|
|
|
import org.springblade.salesPart.vo.OrderVO;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import org.springblade.salesPart.order.service.IOrderService;
|
|
|
-import org.springblade.core.boot.ctrl.BladeController;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.MathContext;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
@@ -73,7 +74,8 @@ public class OrderController extends BladeController {
|
|
|
|
|
|
private final IOrderService orderService;
|
|
|
private final IOrderItemsService orderItemsService;
|
|
|
- private IUserClient iUserClient;//获取用户信息
|
|
|
+ //获取用户信息
|
|
|
+ private final IUserClient iUserClient;
|
|
|
private final ICorpsAttnService corpsAttnService;
|
|
|
|
|
|
/**
|
|
|
@@ -124,7 +126,7 @@ public class OrderController extends BladeController {
|
|
|
} else {
|
|
|
lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
|
|
|
}
|
|
|
-// lambdaQueryWrapper.apply("(( business_source = '外部销售' AND actual_payment_status = 2 ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
|
|
|
+ lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
|
|
|
lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
|
|
|
|
|
|
if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
@@ -134,34 +136,34 @@ public class OrderController extends BladeController {
|
|
|
}
|
|
|
IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
|
|
|
|
|
|
- String updateUserIds = "";//修改人id拼接
|
|
|
- String createUserIds = "";//创建人id拼接
|
|
|
+ StringBuilder updateUserIds = new StringBuilder();//修改人id拼接
|
|
|
+ StringBuilder createUserIds = new StringBuilder();//创建人id拼接
|
|
|
for (PjOrder items : pages.getRecords()) {
|
|
|
if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
|
|
|
- updateUserIds = updateUserIds + items.getUpdateUser() + ",";
|
|
|
+ updateUserIds.append(items.getUpdateUser()).append(",");
|
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
|
|
|
- createUserIds = createUserIds + items.getCreateUser() + ",";
|
|
|
+ createUserIds.append(items.getCreateUser()).append(",");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获得修改人信息
|
|
|
- List<User> updateUserList = iUserClient.selectUserIds(updateUserIds);
|
|
|
+ List<User> updateUserList = iUserClient.selectUserIds(updateUserIds.toString());
|
|
|
//获得创建人信息
|
|
|
- List<User> createUserList = iUserClient.selectUserIds(createUserIds);
|
|
|
+ List<User> createUserList = iUserClient.selectUserIds(createUserIds.toString());
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(pages.getRecords())) {
|
|
|
pages.getRecords().forEach(item -> {
|
|
|
if (ObjectUtil.isNotEmpty(updateUserList)) {
|
|
|
User user = updateUserList.stream().anyMatch(e -> e.getId().equals(item.getUpdateUser())) ? updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get() : null;
|
|
|
- if (ObjectUtils.isNotNull(user)) {
|
|
|
+ if (user != null) {
|
|
|
item.setUpdateUserName(user.getName());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(createUserList)) {
|
|
|
User user = createUserList.stream().anyMatch(e -> e.getId().equals(item.getCreateUser())) ? createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get() : null;
|
|
|
- if (ObjectUtils.isNotNull(user)) {
|
|
|
+ if (user != null) {
|
|
|
item.setCreateUserName(user.getName());
|
|
|
}
|
|
|
}
|
|
|
@@ -218,34 +220,34 @@ public class OrderController extends BladeController {
|
|
|
}
|
|
|
List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
|
|
|
|
|
|
- String updateUserIds = "";//修改人id拼接
|
|
|
- String createUserIds = "";//创建人id拼接
|
|
|
+ StringBuilder updateUserIds = new StringBuilder();//修改人id拼接
|
|
|
+ StringBuilder createUserIds = new StringBuilder();//创建人id拼接
|
|
|
for (PjOrder items : pages) {
|
|
|
if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
|
|
|
- updateUserIds = updateUserIds + items.getUpdateUser() + ",";
|
|
|
+ updateUserIds.append(items.getUpdateUser()).append(",");
|
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
|
|
|
- createUserIds = createUserIds + items.getCreateUser() + ",";
|
|
|
+ createUserIds.append(items.getCreateUser()).append(",");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获得修改人信息
|
|
|
- List<User> updateUserList = iUserClient.selectUserIds(updateUserIds);
|
|
|
+ List<User> updateUserList = iUserClient.selectUserIds(updateUserIds.toString());
|
|
|
//获得创建人信息
|
|
|
- List<User> createUserList = iUserClient.selectUserIds(createUserIds);
|
|
|
+ List<User> createUserList = iUserClient.selectUserIds(createUserIds.toString());
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(pages)) {
|
|
|
pages.forEach(item -> {
|
|
|
if (ObjectUtil.isNotEmpty(updateUserList)) {
|
|
|
User user = updateUserList.stream().anyMatch(e -> e.getId().equals(item.getUpdateUser())) ? updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get() : null;
|
|
|
- if (ObjectUtils.isNotNull(user)) {
|
|
|
+ if (user != null) {
|
|
|
item.setUpdateUserName(user.getName());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(createUserList)) {
|
|
|
User user = createUserList.stream().anyMatch(e -> e.getId().equals(item.getCreateUser())) ? createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get() : null;
|
|
|
- if (ObjectUtils.isNotNull(user)) {
|
|
|
+ if (user != null) {
|
|
|
item.setCreateUserName(user.getName());
|
|
|
}
|
|
|
}
|
|
|
@@ -253,8 +255,22 @@ public class OrderController extends BladeController {
|
|
|
.eq(PjOrderItems::getPid, item.getId())) + "");
|
|
|
});
|
|
|
}
|
|
|
+ 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, "销售订单", "订单数据", BeanUtil.copy(pages, PjOrderExportExcelXS.class), PjOrderExportExcelXS.class);
|
|
|
+ ExcelUtil.export(response, "销售订单", "订单数据", list, PjOrderExportExcelXS.class);
|
|
|
} else {
|
|
|
ExcelUtil.export(response, "采购订单", "订单数据", BeanUtil.copy(pages, PjOrderExportExcelCG.class), PjOrderExportExcelCG.class);
|
|
|
}
|
|
|
@@ -523,10 +539,10 @@ public class OrderController extends BladeController {
|
|
|
@ApiOperation(value = "购物车列表不分页查询", notes = "传入shoppingCart")
|
|
|
public R<List<Map<String, Object>>> listAll(PjOrder order) {
|
|
|
PjCorpsAttn pjCorpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
|
|
|
- .eq(PjCorpsAttn::getTenantId,AuthUtil.getTenantId())
|
|
|
- .eq(PjCorpsAttn::getIsDeleted,0)
|
|
|
- .eq(PjCorpsAttn::getUserId,AuthUtil.getUserId()));
|
|
|
- if (ObjectUtils.isNull(pjCorpsAttn)){
|
|
|
+ .eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjCorpsAttn::getIsDeleted, 0)
|
|
|
+ .eq(PjCorpsAttn::getUserId, AuthUtil.getUserId()));
|
|
|
+ if (ObjectUtils.isNull(pjCorpsAttn)) {
|
|
|
throw new RuntimeException("未找到用户信息");
|
|
|
}
|
|
|
LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
@@ -539,7 +555,7 @@ public class OrderController extends BladeController {
|
|
|
.orderByDesc(PjOrder::getCreateTime);
|
|
|
List<PjOrder> list = orderService.list(lambdaQueryWrapper);
|
|
|
for (PjOrder item : list) {
|
|
|
- if ("内部销售".equals(item.getBusinessSource())){
|
|
|
+ if ("内部销售".equals(item.getBusinessSource())) {
|
|
|
item.setSrcOrdNo(item.getOrdNo());
|
|
|
}
|
|
|
}
|
|
|
@@ -570,7 +586,7 @@ public class OrderController extends BladeController {
|
|
|
@PostMapping("/checkOrderCG")
|
|
|
@ApiOperationSupport(order = 13)
|
|
|
@ApiOperation(value = "请核", notes = "传入order")
|
|
|
- public R checkOrderCG(@RequestBody PjOrder order) {
|
|
|
+ public R checkOrderCg(@RequestBody PjOrder order) {
|
|
|
PjOrder declare = orderService.checkOrderCG(order);
|
|
|
return R.data(declare);
|
|
|
}
|
|
|
@@ -581,7 +597,7 @@ public class OrderController extends BladeController {
|
|
|
@PostMapping("/revokeCheckOrderCG")
|
|
|
@ApiOperationSupport(order = 13)
|
|
|
@ApiOperation(value = "撤销请核", notes = "传入order")
|
|
|
- public R revokeCheckOrderCG(@RequestBody PjOrder order) {
|
|
|
+ public R revokeCheckOrderCg(@RequestBody PjOrder order) {
|
|
|
PjOrder declare = orderService.revokeCheckOrderCG(order);
|
|
|
return R.data(declare);
|
|
|
}
|
|
|
@@ -612,4 +628,96 @@ public class OrderController extends BladeController {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 分页 配件销售
|
|
|
+ */
|
|
|
+ @GetMapping("/listBySettlement")
|
|
|
+ @ApiOperationSupport(order = 2)
|
|
|
+ @ApiOperation(value = "分页", notes = "传入order")
|
|
|
+ public R<IPage<PjOrder>> listBySettlement(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())
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户
|
|
|
+ .eq(ObjectUtils.isNotEmpty(order.getGenerateTask()), PjOrder::getGenerateTask, order.getGenerateTask())//客户
|
|
|
+ .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.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());
|
|
|
+ if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//创建日期
|
|
|
+ lambdaQueryWrapper.ge(PjOrder::getDueDate, order.getDueDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(PjOrder::getDueDate, order.getDueDateList().get(1));
|
|
|
+ }
|
|
|
+ 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 ("d".equals(order.getSettlementType())) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getGenerateTask, "已生成")
|
|
|
+ .apply("find_in_set(actual_payment_status,'1,3')");
|
|
|
+ } else if ("c".equals(order.getSettlementType())) {
|
|
|
+ lambdaQueryWrapper.eq(PjOrder::getStatus, "审核完成")
|
|
|
+ .apply("find_in_set(actual_payment_status,'1,3')");
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
|
|
|
+ IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
|
|
|
+ return R.data(pages);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * app营业分析
|
|
|
+ */
|
|
|
+ @GetMapping("/turnoverAnalysis")
|
|
|
+ @ApiOperation(value = "app营业分析", notes = "传入参数")
|
|
|
+ public R<Map<String, Object>> turnoverAnalysis(@RequestParam(value = "statusDate", required = false) String statusDate,
|
|
|
+ @RequestParam(value = "endDate", required = false) String endDate) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ LambdaQueryWrapper<PjOrder> lambdaQueryWrapperXS = new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .gt(ObjectUtils.isNotNull(statusDate), PjOrder::getBusinesDate, statusDate)
|
|
|
+ .lt(ObjectUtils.isNotNull(endDate), PjOrder::getBusinesDate, endDate)
|
|
|
+ .eq(PjOrder::getBsType, "XS");
|
|
|
+ if (AuthUtil.getUserRole().contains("业务员")) {
|
|
|
+ lambdaQueryWrapperXS.gt(PjOrder::getSalerId,AuthUtil.getTenantId());
|
|
|
+ }
|
|
|
+ List<PjOrder> pjOrderListXS = orderService.list(lambdaQueryWrapperXS);
|
|
|
+ List<PjOrder> pjOrderListCG = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getIsDeleted, 0)
|
|
|
+ .eq(PjOrder::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .gt(ObjectUtils.isNotNull(statusDate), PjOrder::getBusinesDate, statusDate)
|
|
|
+ .lt(ObjectUtils.isNotNull(endDate), PjOrder::getBusinesDate, endDate)
|
|
|
+ .eq(PjOrder::getBsType, "CG"));
|
|
|
+ //销售
|
|
|
+ BigDecimal income = new BigDecimal("0.00");
|
|
|
+ //支出
|
|
|
+ BigDecimal expenditure = new BigDecimal("0.00");
|
|
|
+ //利润
|
|
|
+ BigDecimal profit = new BigDecimal("0.00");
|
|
|
+ //成本
|
|
|
+ BigDecimal cost = new BigDecimal("0.00");
|
|
|
+ //平均客单价
|
|
|
+ BigDecimal averageAmount = new BigDecimal("0.00");
|
|
|
+
|
|
|
+ if (pjOrderListXS.size() > 0) {
|
|
|
+ income = pjOrderListXS.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ cost = pjOrderListXS.stream().map(PjOrder::getCost).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ profit = income.subtract(cost);
|
|
|
+ averageAmount = averageAmount.add(income.divide(new BigDecimal(pjOrderListXS.size()), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ }
|
|
|
+ if (pjOrderListCG.size() > 0 && AuthUtil.getUserRole().contains("admin")) {
|
|
|
+ expenditure = pjOrderListCG.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ map.put("income", income);
|
|
|
+ map.put("expenditure", expenditure);
|
|
|
+ map.put("profit", profit);
|
|
|
+ map.put("cost", cost);
|
|
|
+ map.put("averageAmount", averageAmount);
|
|
|
+ return R.data(map);
|
|
|
+ }
|
|
|
+
|
|
|
}
|