|
|
@@ -16,6 +16,7 @@
|
|
|
*/
|
|
|
package org.springblade.purchase.sales.service.impl;
|
|
|
|
|
|
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
@@ -52,6 +53,7 @@ import org.springblade.purchase.sales.excel.*;
|
|
|
import org.springblade.purchase.sales.mapper.OrderFeesMapper;
|
|
|
import org.springblade.purchase.sales.mapper.OrderItemsMapper;
|
|
|
import org.springblade.purchase.sales.mapper.OrderMapper;
|
|
|
+import org.springblade.purchase.sales.mapper.OrderPartsMapper;
|
|
|
import org.springblade.purchase.sales.service.IOrderService;
|
|
|
import org.springblade.purchase.sales.vo.*;
|
|
|
import org.springblade.stock.entity.StockGoods;
|
|
|
@@ -121,6 +123,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
private final IMessageClient messageClient;//消息
|
|
|
private final IFeesDescClient feesDescClient;//费用
|
|
|
|
|
|
+ private final OrderPartsMapper orderPartsMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
|
|
|
List<OrderVO> orderVOList = baseMapper.selectOrderPage(page, order);
|
|
|
@@ -264,7 +268,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
if (!order.getTradeType().equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
// 生成毛利润 毛利额
|
|
|
- List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type",0).eq("is_deleted", 0));
|
|
|
+ List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type", 0).eq("is_deleted", 0));
|
|
|
Order orderMessage = new Order();
|
|
|
orderMessage.setId(order.getId());
|
|
|
if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
|
|
|
@@ -486,6 +490,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
List<OrderItems> orderItemsList = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", order.getId()).eq("good_type", 0).eq("is_deleted", 0).groupBy("corp_id"));
|
|
|
if (CollectionUtils.isNotEmpty(orderItemsList)) {
|
|
|
orderItemsList.forEach(item -> {
|
|
|
+
|
|
|
Order selectById = baseMapper.selectById(order.getId());
|
|
|
if (selectById == null) {
|
|
|
throw new RuntimeException("找不到单据信息");
|
|
|
@@ -510,7 +515,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
selectById.setOrgOrderNo((selectById.getOrderNo()));
|
|
|
}
|
|
|
selectById.setOrderNo((String) clientBillNo.getData());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new SecurityException("未找到供应商信息");
|
|
|
}
|
|
|
selectById.setCorpAttn(corpMessage.getData().getAttn());
|
|
|
@@ -549,6 +554,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
.eq("good_type", 0).eq("corp_id", item.getCorpId()));
|
|
|
if (CollectionUtils.isNotEmpty(orderList)) {
|
|
|
orderList.forEach(items -> {
|
|
|
+
|
|
|
+ List<OrderParts> orderPartsList = orderPartsMapper.selectList(new QueryWrapper<OrderParts>().eq("pid", items.getId()).eq("is_deleted", 0)
|
|
|
+ .eq("tenant_id", AuthUtil.getTenantId()).eq("status", 0));
|
|
|
+ for (OrderParts orderParts : orderPartsList) {
|
|
|
+ OrderItems orderItems = new OrderItems();
|
|
|
+ orderItems.setPrice(orderParts.getPrice());
|
|
|
+ orderItems.setAmount(orderParts.getAmout());
|
|
|
+ orderItems.setPriceCategory(orderParts.getGoodTypeName());
|
|
|
+ orderItems.setItemId(orderParts.getGoodId());
|
|
|
+ orderItems.setOrderQuantity(orderParts.getGoodNumber());
|
|
|
+ orderItems.setPurchaseAmount(orderParts.getAmout());
|
|
|
+ orderItems.setTenantId(AuthUtil.getTenantId());
|
|
|
+ orderItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ orderItems.setCreateTime(new Date());
|
|
|
+ orderItems.setCorpId(orderParts.getCorpId());
|
|
|
+ orderItems.setCorpName(orderParts.getCorpName());
|
|
|
+ orderItems.setPurchaseCost(orderParts.getPartsCost());
|
|
|
+ orderItems.setPid(selectById.getId());
|
|
|
+ orderItemsService.save(orderItems);
|
|
|
+ }
|
|
|
items.setAmount(items.getPurchaseAmount().multiply(items.getOrderQuantity()));
|
|
|
items.setPid(selectById.getId());
|
|
|
items.setId(null);
|
|
|
@@ -568,7 +593,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
//应付今额
|
|
|
selectById.setDebitAmount(itemTotalAmount);
|
|
|
//国内订单需要体积和重量
|
|
|
- if (StringUtils.isNotBlank(selectById.getTradeType()) && selectById.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
|
|
|
+ if (StringUtils.isNotBlank(selectById.getTradeType()) && selectById.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
|
|
|
//总重量求和
|
|
|
selectById.setCntrVolumn(orderList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrVolumn().multiply(y.getOrderQuantity())), BigDecimal::add));
|
|
|
//总体积求和
|
|
|
@@ -577,7 +602,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
baseMapper.updateById(selectById);
|
|
|
}
|
|
|
});
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new SecurityException("订单明细为空,生成采购单失败");
|
|
|
}
|
|
|
|
|
|
@@ -794,7 +819,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
List<AuditPathsLevels> auditPathsLevels;
|
|
|
if (checkFlag == 1) {
|
|
|
auditPathsLevels = iCheckClient.listLevelsByActId(4, "status");
|
|
|
- } else if (checkFlag == 2){
|
|
|
+ } else if (checkFlag == 2) {
|
|
|
auditPathsLevels = iCheckClient.listLevelsByActId(3, "status");
|
|
|
} else {
|
|
|
auditPathsLevels = iCheckClient.listLevelsByActId(13, "status");
|
|
|
@@ -936,7 +961,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
/**===========================End 审核通过生成账单 发送消息=============================*/
|
|
|
//todo 国内贸易销售订单审批通过自动生成账单 同时给角色为财务的用户推送消息
|
|
|
- this.paymentApply(order,"收费","销售");
|
|
|
+ this.paymentApply(order, "收费", "销售");
|
|
|
/**===========================start 审核通过操作返利信息=============================*/
|
|
|
//不需要计算返利
|
|
|
if ((order.getThisUsedProfit() == null || order.getThisUsedProfit().compareTo(new BigDecimal("0")) == 0) && (order.getCreateProfit() == null || order.getCreateProfit().compareTo(new BigDecimal("0")) == 0)) {
|
|
|
@@ -1003,7 +1028,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
} else if (OrderTypeEnum.DEALER.getType().equals(order.getTradeType())) {
|
|
|
if (OrderTypeEnum.SALES.getType().equals(order.getBillType())) {
|
|
|
- this.paymentApply(order,"收费","销售");
|
|
|
+ this.paymentApply(order, "收费", "销售");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1432,7 +1457,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
* 统计分析 销售明细对账
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<OrderReconciliationVo> reconciliationDetailed(IPage<OrderReconciliationVo> page,OrderReconciliationVo order){
|
|
|
+ public IPage<OrderReconciliationVo> reconciliationDetailed(IPage<OrderReconciliationVo> page, OrderReconciliationVo order) {
|
|
|
return page.setRecords(baseMapper.reconciliationDetailed(page, order));
|
|
|
}
|
|
|
|
|
|
@@ -1440,7 +1465,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
* 销售明细对账导出
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<OrderDetailedExcel> orderDetailedExport(OrderReconciliationVo order){
|
|
|
+ public List<OrderDetailedExcel> orderDetailedExport(OrderReconciliationVo order) {
|
|
|
return baseMapper.orderDetailedExport(order);
|
|
|
}
|
|
|
|
|
|
@@ -1478,7 +1503,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (order.getStatus() == 3) {
|
|
|
throw new SecurityException("订单已审批通过请勿重复审批");
|
|
|
}
|
|
|
- if (order.getGenerate() == 1){
|
|
|
+ if (order.getGenerate() == 1) {
|
|
|
throw new SecurityException("订单已生成销售订单请勿重复审批");
|
|
|
}
|
|
|
//修改采购合同信息
|
|
|
@@ -1488,7 +1513,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
baseMapper.updateOrderMessage(purchase);
|
|
|
//生成平台销售订单
|
|
|
Order market = new Order();
|
|
|
- BeanUtil.copy(order,market);
|
|
|
+ BeanUtil.copy(order, market);
|
|
|
market.setId(null);//id置为空
|
|
|
market.setSrcId(order.getId());//来源id
|
|
|
market.setSrcOrderNo(order.getOrderNo());//来源单号
|
|
|
@@ -1520,12 +1545,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
baseMapper.insert(market);
|
|
|
//保存销售订单明细信息
|
|
|
LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getTenantId,order.getTenantId());
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getPid, order.getId());
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getTenantId, order.getTenantId());
|
|
|
List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
|
|
|
- if (CollectionUtils.isNotEmpty(orderItemsList)){
|
|
|
- orderItemsList.stream().forEach(item ->{
|
|
|
+ if (CollectionUtils.isNotEmpty(orderItemsList)) {
|
|
|
+ orderItemsList.stream().forEach(item -> {
|
|
|
item.setId(null);
|
|
|
item.setStatus(0);
|
|
|
item.setPid(market.getId());
|
|
|
@@ -1539,7 +1564,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
stockGoods.setTradeType(market.getTradeType());
|
|
|
stockGoods.setStorageId(market.getStorageId());
|
|
|
StockGoods stock = stockGoodsClient.getOneStock(stockGoods);
|
|
|
- if (stock != null){
|
|
|
+ if (stock != null) {
|
|
|
item.setStorageQuantity(stock.getSurplusRouteQuantity());
|
|
|
}
|
|
|
orderItemsMapper.insert(item);
|
|
|
@@ -1547,7 +1572,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
// 生成毛利润 毛利额
|
|
|
- List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", market.getId()).eq("good_type",0).eq("is_deleted", 0));
|
|
|
+ List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", market.getId()).eq("good_type", 0).eq("is_deleted", 0));
|
|
|
Order orderMessage = new Order();
|
|
|
orderMessage.setId(market.getId());
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
@@ -1654,22 +1679,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
/**
|
|
|
* 订单生成账单 并且推送财务消息
|
|
|
- * @param order 订单信息
|
|
|
- * @param billType 货款类型: 申请 收费 付费
|
|
|
+ *
|
|
|
+ * @param order 订单信息
|
|
|
+ * @param billType 货款类型: 申请 收费 付费
|
|
|
* @param itemType 付款类型: 采购 销售 收货 发货
|
|
|
*/
|
|
|
- public void paymentApply(Order order,String billType,String itemType){
|
|
|
+ public void paymentApply(Order order, String billType, String itemType) {
|
|
|
//获取所属公司中文名
|
|
|
- if (order.getBelongToCorpId() != null){
|
|
|
+ if (order.getBelongToCorpId() != null) {
|
|
|
R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getBelongToCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null){
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
order.setBelongToCorpName(corpMessage.getData().getCname());
|
|
|
}
|
|
|
}
|
|
|
//获取客户中文名
|
|
|
- if (order.getCorpId() != null){
|
|
|
+ if (order.getCorpId() != null) {
|
|
|
R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(order.getCorpId());
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null){
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
order.setCorpsName(corpMessage.getData().getCname());
|
|
|
}
|
|
|
}
|
|
|
@@ -1689,27 +1715,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
List<Items> itemsList = new ArrayList<>();
|
|
|
//获取订单明细信息
|
|
|
LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
|
|
|
- orderItemsLambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
|
|
|
- orderItemsLambdaQueryWrapper.eq(OrderItems::getGoodType,0);
|
|
|
+ orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);
|
|
|
+ orderItemsLambdaQueryWrapper.eq(OrderItems::getPid, order.getId());
|
|
|
+ orderItemsLambdaQueryWrapper.eq(OrderItems::getGoodType, 0);
|
|
|
List<OrderItems> orderItemsList = orderItemsService.list(orderItemsLambdaQueryWrapper);
|
|
|
- if (CollectionUtils.isNotEmpty(orderItemsList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(orderItemsList)) {
|
|
|
amount = amount.add(orderItemsList.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
quantity = quantity.add(orderItemsList.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
}
|
|
|
//获取订单收款信息
|
|
|
LambdaQueryWrapper<OrderFees> orderFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- orderFeesLambdaQueryWrapper.eq(OrderFees::getIsDeleted,0);
|
|
|
- orderFeesLambdaQueryWrapper.eq(OrderFees::getPid,order.getId());
|
|
|
- orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType,1);
|
|
|
+ orderFeesLambdaQueryWrapper.eq(OrderFees::getIsDeleted, 0);
|
|
|
+ orderFeesLambdaQueryWrapper.eq(OrderFees::getPid, order.getId());
|
|
|
+ orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 1);
|
|
|
List<OrderFees> orderFeesList = orderFeesService.list(orderFeesLambdaQueryWrapper);
|
|
|
- if (CollectionUtils.isNotEmpty(orderFeesList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(orderFeesList)) {
|
|
|
amount = amount.add(orderFeesList.stream().map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
}
|
|
|
- if (order.getThisUsedProfit() != null){
|
|
|
+ if (order.getThisUsedProfit() != null) {
|
|
|
amount = amount.subtract(order.getThisUsedProfit());
|
|
|
}
|
|
|
- if (quantity.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ if (quantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
Items items = new Items();
|
|
|
@@ -1731,7 +1757,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
//items.setSrcFeesId(orderItems.getId());
|
|
|
//获取费用id
|
|
|
R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
|
|
|
- if (fees.isSuccess() && fees.getData() != null){
|
|
|
+ if (fees.isSuccess() && fees.getData() != null) {
|
|
|
items.setCostType(fees.getData().getId().toString());
|
|
|
}
|
|
|
itemsList.add(items);
|
|
|
@@ -1796,17 +1822,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
}*/
|
|
|
applyDTO.setItemsList(itemsList);
|
|
|
- if (CollectionUtils.isNotEmpty(itemsList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
//生成账单
|
|
|
R paymentApply = financeClient.paymentApply(applyDTO);
|
|
|
- if (!paymentApply.isSuccess()){
|
|
|
+ if (!paymentApply.isSuccess()) {
|
|
|
throw new RuntimeException(paymentApply.getMsg());
|
|
|
}
|
|
|
//给角色为财务的人发送消息
|
|
|
R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
- if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())){
|
|
|
+ if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
|
|
|
- if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())){
|
|
|
+ if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
for (User datum : userList.getData()) {
|
|
|
//循环发送消息
|
|
|
Message sendMessage = new Message();
|
|
|
@@ -1822,7 +1848,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
sendMessage.setUrl(order.getUrl());
|
|
|
sendMessage.setPageLabel(order.getPageLabel());
|
|
|
sendMessage.setPageStatus(order.getPageStatus());
|
|
|
- sendMessage.setMessageBody(order.getBelongToCorpName()+" 您的客户:"+order.getCorpsName() + "的销售订单 "+ order.getOrderNo() +"审核通过,请查看");
|
|
|
+ sendMessage.setMessageBody(order.getBelongToCorpName() + " 您的客户:" + order.getCorpsName() + "的销售订单 " + order.getOrderNo() + "审核通过,请查看");
|
|
|
R save = messageClient.save(sendMessage);
|
|
|
if (!save.isSuccess()) {
|
|
|
throw new SecurityException("发送消息失败");
|