|
|
@@ -37,6 +37,8 @@ import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
|
|
|
import org.springblade.deliver.goods.service.IDeliveryItemsService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springblade.finance.feign.IFinanceClient;
|
|
|
+import org.springblade.mocha.entity.BusinessPointsItem;
|
|
|
+import org.springblade.mocha.feign.IBusinessPointsClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
@@ -49,10 +51,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* 发货明细 服务实现类
|
|
|
@@ -69,6 +73,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
private IOrderItemsClient orderItemsClient;//订单对外访问接口
|
|
|
private IOrderDescClient orderDescClient;//订单
|
|
|
private final IFinanceClient financeClient;
|
|
|
+ private final IBusinessPointsClient businessPointsClient;
|
|
|
@Override
|
|
|
public IPage<DeliveryItemsVO> selectDeliveryItemsPage(IPage<DeliveryItemsVO> page, DeliveryItemsVO deliveryItems) {
|
|
|
return page.setRecords(baseMapper.selectDeliveryItemsPage(page, deliveryItems));
|
|
|
@@ -132,56 +137,67 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
* @return
|
|
|
*/
|
|
|
public List<DeliveryItems> affirmDeliveryItemsList(Long pId,Delivery delivery,List<DeliveryItems> deliveryItemsList){
|
|
|
+ List<DeliveryItems> collect = deliveryItemsList.stream().filter(e -> e.getGoodType() == 0).collect(Collectors.toList());//发货商品
|
|
|
+ List<DeliveryItems> itemsList = deliveryItemsList.stream().filter(e -> e.getGoodType() == 1).collect(Collectors.toList());//赠送商品
|
|
|
//判断要发货物的金额和已收金额的大小
|
|
|
- /*R amount = this.deliveryAmount(deliveryItemsList, delivery.getTradeType());
|
|
|
+ /*R amount = this.deliveryAmount(collect, delivery.getTradeType());
|
|
|
if (!amount.isSuccess()){
|
|
|
throw new RuntimeException(amount.getMsg());
|
|
|
}*/
|
|
|
- for (DeliveryItems deliveryItems : deliveryItemsList) {
|
|
|
- if (deliveryItems.getItemId() == null){
|
|
|
- throw new RuntimeException("发货明细中商品id不能为空");
|
|
|
- }
|
|
|
- deliveryItems.setPid(pId);//父级ID
|
|
|
- deliveryItems.setTenantId(SecureUtil.getTenantId());//租户id
|
|
|
- deliveryItems.setDeliveryStatus(delivery.getDeliveryStatus());
|
|
|
- if (deliveryItems.getId() == null){
|
|
|
- deliveryItems.setCreateUser(SecureUtil.getUserId());
|
|
|
- deliveryItems.setCreateTime(new Date());
|
|
|
- baseMapper.insert(deliveryItems);
|
|
|
- }else {
|
|
|
- deliveryItems.setUpdateTime(new Date());
|
|
|
- deliveryItems.setUpdateUser(SecureUtil.getUserId());
|
|
|
- baseMapper.updateById(deliveryItems);
|
|
|
- }
|
|
|
- StockGoods stockGoods=null;
|
|
|
- StockGoodsVO stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
|
|
|
- if (stock != null && delivery.getDeliveryType() == DeliveryEnum.DELIVER.getType()){//发货
|
|
|
- //更新库存账
|
|
|
- stockGoods = this.deliverGoods(delivery.getTradeType(), stock.getId(), deliveryItems);
|
|
|
+ if (CollectionUtils.isNotEmpty(collect)){
|
|
|
+ for (DeliveryItems deliveryItems : collect) {
|
|
|
+ if (deliveryItems.getItemId() == null){
|
|
|
+ throw new RuntimeException("发货明细中商品id不能为空");
|
|
|
+ }
|
|
|
+ deliveryItems.setPid(pId);//父级ID
|
|
|
+ deliveryItems.setTenantId(SecureUtil.getTenantId());//租户id
|
|
|
+ deliveryItems.setDeliveryStatus(delivery.getDeliveryStatus());
|
|
|
+ if (deliveryItems.getId() == null){
|
|
|
+ deliveryItems.setCreateUser(SecureUtil.getUserId());
|
|
|
+ deliveryItems.setCreateTime(new Date());
|
|
|
+ baseMapper.insert(deliveryItems);
|
|
|
+ }else {
|
|
|
+ deliveryItems.setUpdateTime(new Date());
|
|
|
+ deliveryItems.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ baseMapper.updateById(deliveryItems);
|
|
|
+ }
|
|
|
+ StockGoods stockGoods=null;
|
|
|
+ StockGoodsVO stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
|
|
|
+ if (stock != null && delivery.getDeliveryType() == DeliveryEnum.DELIVER.getType()){//发货
|
|
|
+ //更新库存账
|
|
|
+ stockGoods = this.deliverGoods(delivery.getTradeType(), stock.getId(), deliveryItems);
|
|
|
|
|
|
- }else if (stock != null && delivery.getDeliveryType() == DeliveryEnum.REPEAL.getType()){ //撤销发货
|
|
|
- stockGoods = this.revocationDeliverGoods(delivery.getTradeType(), stock.getId(), deliveryItems);
|
|
|
+ }else if (stock != null && delivery.getDeliveryType() == DeliveryEnum.REPEAL.getType()){ //撤销发货
|
|
|
+ stockGoods = this.revocationDeliverGoods(delivery.getTradeType(), stock.getId(), deliveryItems);
|
|
|
|
|
|
- }else {
|
|
|
- //新增库存账
|
|
|
- throw new RuntimeException("库存为空");
|
|
|
- }
|
|
|
- // todo 更新订单明细中发货数量 采购和销售可能需要调不同接口
|
|
|
- R actualQuantity = orderItemsClient.updateActualQuantity(deliveryItems.getSrcId(), deliveryItems.getActualQuantity(),delivery.getDeliveryType());
|
|
|
- if (!actualQuantity.isSuccess()){
|
|
|
- throw new RuntimeException("更新订单发货数量出错");
|
|
|
- }
|
|
|
- // todo 出口贸易确认发货修改发票重量
|
|
|
- if (delivery.getTradeType().equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
- R actualWeight = orderItemsClient.updateActualWeight(deliveryItems.getSrcId(), deliveryItems.getInvoiceWeight(), delivery.getDeliveryType());
|
|
|
- if (!actualWeight.isSuccess()){
|
|
|
- throw new RuntimeException("更新订单发票重量出错");
|
|
|
+ }else {
|
|
|
+ //新增库存账
|
|
|
+ throw new RuntimeException("库存为空");
|
|
|
}
|
|
|
+ // todo 更新订单明细中发货数量 采购和销售可能需要调不同接口
|
|
|
+ R actualQuantity = orderItemsClient.updateActualQuantity(deliveryItems.getSrcId(), deliveryItems.getActualQuantity(),delivery.getDeliveryType());
|
|
|
+ if (!actualQuantity.isSuccess()){
|
|
|
+ throw new RuntimeException("更新订单发货数量出错");
|
|
|
+ }
|
|
|
+ // todo 出口贸易确认发货修改发票重量
|
|
|
+ if (delivery.getTradeType().equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
+ R actualWeight = orderItemsClient.updateActualWeight(deliveryItems.getSrcId(), deliveryItems.getInvoiceWeight(), delivery.getDeliveryType());
|
|
|
+ if (!actualWeight.isSuccess()){
|
|
|
+ throw new RuntimeException("更新订单发票重量出错");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //更新发货明细库存字段
|
|
|
+ deliveryItems.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
|
|
|
+ baseMapper.updateById(deliveryItems);
|
|
|
}
|
|
|
- //更新发货明细库存字段
|
|
|
- deliveryItems.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
|
|
|
- baseMapper.updateById(deliveryItems);
|
|
|
}
|
|
|
+ //发货只会消费积分
|
|
|
+ /*if (delivery.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
|
|
|
+ R updatePoints = this.updatePoints(delivery, null, itemsList);
|
|
|
+ if (!updatePoints.isSuccess()){
|
|
|
+ throw new RuntimeException(updatePoints.getMsg());
|
|
|
+ }
|
|
|
+ }*/
|
|
|
return deliveryItemsList;
|
|
|
}
|
|
|
/**
|
|
|
@@ -509,4 +525,45 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
public void updateByPid(Long id) {
|
|
|
baseMapper.updateByPid(id);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改客户积分信息
|
|
|
+ * @param delivery 发货主表信息
|
|
|
+ * @param list 赠送积分明细
|
|
|
+ * @param itemsList 消费积分明细
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public R updatePoints(Delivery delivery,List<DeliveryItems> list,List<DeliveryItems> itemsList){
|
|
|
+ int type = 0;
|
|
|
+ if (delivery.getDeliveryType() == DeliveryEnum.REPEAL.getType()){
|
|
|
+ type = 1;
|
|
|
+ }
|
|
|
+ //赠送积分明细
|
|
|
+ List<BusinessPointsItem> businessPointsItemList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ list.stream().forEach(item ->{
|
|
|
+ BusinessPointsItem businessPointsItem = new BusinessPointsItem();
|
|
|
+ businessPointsItem.setBillNo(delivery.getSysNo());
|
|
|
+ businessPointsItem.setOrderNo(item.getContractNumber());
|
|
|
+ businessPointsItem.setSrcPid(delivery.getId());
|
|
|
+ businessPointsItem.setSrcId(item.getId());
|
|
|
+ businessPointsItem.setPoints(item.getIntegral());
|
|
|
+ businessPointsItemList.add(businessPointsItem);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //消费积分明细
|
|
|
+ List<BusinessPointsItem> pointsItemList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)){
|
|
|
+ itemsList.stream().forEach(item ->{
|
|
|
+ BusinessPointsItem businessPointsItem = new BusinessPointsItem();
|
|
|
+ businessPointsItem.setBillNo(delivery.getSysNo());
|
|
|
+ businessPointsItem.setOrderNo(item.getContractNumber());
|
|
|
+ businessPointsItem.setSrcPid(delivery.getId());
|
|
|
+ businessPointsItem.setSrcId(item.getId());
|
|
|
+ businessPointsItem.setPoints(item.getIntegral());
|
|
|
+ pointsItemList.add(businessPointsItem);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return businessPointsClient.updatePoints(delivery.getCorpId(),delivery.getConvertIntegral(),delivery.getPresenterIntegral(),type,delivery.getId(),businessPointsItemList,pointsItemList);
|
|
|
+ }
|
|
|
}
|