Commit cb9dc16b authored by Smile's avatar Smile

需求134后台-集运-包裹列表-转运

parent 06cf8ede
...@@ -2,11 +2,14 @@ package cn.iocoder.yudao.module.order.service.cons; ...@@ -2,11 +2,14 @@ package cn.iocoder.yudao.module.order.service.cons;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import cn.iocoder.boot.module.order.api.dto.OrderRespDTO;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.IService; import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.vo.cons.*; import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
/** /**
* 集运包裹主 Service 接口 * 集运包裹主 Service 接口
...@@ -71,6 +74,10 @@ public interface ConsService extends IService<ConsDO> { ...@@ -71,6 +74,10 @@ public interface ConsService extends IService<ConsDO> {
* @return 集运包裹主列表 * @return 集运包裹主列表
*/ */
List<ConsDO> getConsList(ConsQueryVO query); List<ConsDO> getConsList(ConsQueryVO query);
/**
* 获取转运临时order对象
*/
OrderBackVO getTempOrderByConsIds(Collection<Long> ids);
/** /**
* PAD 创建集运包裹主 * PAD 创建集运包裹主
......
...@@ -7,6 +7,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; ...@@ -7,6 +7,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService; import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerContacts.CustomerContactsDO;
import cn.iocoder.yudao.module.customer.service.customerContacts.CustomerContactsService;
import cn.iocoder.yudao.module.depository.dto.LogisticsInfoDto;
import cn.iocoder.yudao.module.order.convert.cons.ConsConvert; import cn.iocoder.yudao.module.order.convert.cons.ConsConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO; import cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO;
...@@ -21,6 +24,12 @@ import cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO; ...@@ -21,6 +24,12 @@ import cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO;
import cn.iocoder.yudao.module.order.vo.consMedia.ConsMediaCreateReqVO; import cn.iocoder.yudao.module.order.vo.consMedia.ConsMediaCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
import cn.iocoder.yudao.module.order.vo.orderConsignee.OrderConsigneeBackVO;
import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO;
import cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO;
import cn.iocoder.yudao.module.product.dal.dataobject.product.ProductDO;
import cn.iocoder.yudao.module.product.dal.mysql.product.ProductMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.redisson.api.RAtomicLong; import org.redisson.api.RAtomicLong;
...@@ -33,11 +42,9 @@ import org.springframework.validation.annotation.Validated; ...@@ -33,11 +42,9 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Collection; import java.util.*;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
...@@ -65,6 +72,11 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -65,6 +72,11 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
@Resource @Resource
private RedissonClient redissonClient; private RedissonClient redissonClient;
@Resource
private ProductMapper productMapper;
@Resource
private CustomerContactsService customerContactsService;
@Override @Override
@Transactional @Transactional
public Long createCons(ConsCreateReqVO createReqVO) { public Long createCons(ConsCreateReqVO createReqVO) {
...@@ -310,7 +322,107 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -310,7 +322,107 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
} }
} }
} }
@Override
public OrderBackVO getTempOrderByConsIds(Collection<Long> ids) {
List<ConsDO> consList = consMapper.selectList(new LambdaQueryWrapperX<ConsDO>().in(ConsDO::getId, ids));
if (consList==null||consList.isEmpty()){
throw exception(30004,"包裹不存在");
}
OrderBackVO orderBackVO = new OrderBackVO();
orderBackVO.setDeliveryDate(new Date());
orderBackVO.setIsCargoControl(false);
orderBackVO.setCustomsType(1);
orderBackVO.setWarehouseType(1);
LogisticsInfoDto logisticsInfo = new LogisticsInfoDto();
List<ConsItemDO> consItemDOS = consItemService.selectList(new LambdaQueryWrapperX<ConsItemDO>().in(ConsItemDO::getConsId, ids));
List<OrderItemBackVO> orderItemVOList = new ArrayList<>();
//收集consItemDOS的productId
Set<Long> productIds = consItemDOS.stream().map(ConsItemDO::getProdId).collect(Collectors.toSet());
//根据productIds查询
List<ProductDO> productDOS = productMapper.selectList(new LambdaQueryWrapperX<ProductDO>().in(ProductDO::getId, productIds));
Map<Long, List<ProductDO>> productMap = productDOS.stream().collect(Collectors.groupingBy(ProductDO::getId));
//转成Map
Map<Long, List<ConsItemDO>> consItemsMap = consItemDOS.stream().collect(Collectors.groupingBy(ConsItemDO::getConsId));
for (int j = 0; j < consList.size(); j++) {
ConsDO consDO = consList.get(j);
if (j==0){
List<CustomerContactsDO> customerContacts = customerContactsService.getCustomerContactsListByCustomerId(consDO.getCustomerId());
Optional<CustomerContactsDO> firstDefault = customerContacts.stream()
.filter(customerContactsDO -> customerContactsDO.getIsDefault() == 1)
.findFirst();
if (firstDefault.isPresent()) {
CustomerContactsDO contact = firstDefault.get();
orderBackVO.setCustomerId(contact.getCustomerId());
orderBackVO.setMarks(contact.getName());
OrderConsigneeBackVO orderConsigneeBackVO = new OrderConsigneeBackVO();
OrderConsignorBackVO orderConsignorBackVO = new OrderConsignorBackVO();
orderConsigneeBackVO.setCustomerContactsId(contact.getId());
orderConsignorBackVO.setCustomerContactsId(contact.getId());
orderConsigneeBackVO.setCustomerId(consDO.getCustomerId());
orderConsignorBackVO.setCustomerId(consDO.getCustomerId());
orderConsigneeBackVO.setRelationId(consDO.getCustomerId());
orderConsignorBackVO.setRelationId(consDO.getCustomerId());
orderConsigneeBackVO.setName(contact.getName());
orderConsigneeBackVO.setNameEn(contact.getNameEn());
orderConsignorBackVO.setName(contact.getName());
orderConsignorBackVO.setNameEn(contact.getNameEn());
orderConsigneeBackVO.setPhone(contact.getPhoneNew());
orderConsignorBackVO.setPhone(contact.getPhoneNew());
orderConsigneeBackVO.setCountryCode(contact.getAreaCode());
orderConsignorBackVO.setCountryCode(contact.getAreaCode());
orderBackVO.setConsigneeVO(orderConsigneeBackVO);
orderBackVO.setConsignorVO(orderConsignorBackVO);
}else {
throw exception(30004,"包裹联系人为空");
}
}
if (consDO.getCustomerId()!=null&& orderBackVO.getCustomerId()==null){
orderBackVO.setCustomerId(consDO.getCustomerId());
orderBackVO.setMarks(consDO.getCustomerNumber());
}
if(consDO.getTransportId()!=null&& orderBackVO.getTransportId()==null){
orderBackVO.setTransportId(consDO.getTransportId());
}
if(consDO.getWarehouseLineId()!=null&& logisticsInfo.getLineId()==null){
logisticsInfo.setLineId(consDO.getWarehouseLineId());
logisticsInfo.setDestCityId(consDO.getConsigneeCityId());
logisticsInfo.setDestCountryId(consDO.getConsigneeCountryId());
orderBackVO.setLogisticsInfoDto(logisticsInfo);
orderBackVO.setLineId(consDO.getWarehouseLineId());
orderBackVO.setObjectiveId(consDO.getConsigneeCityId());
}
//包裹内商品处理
List<ConsItemDO> consItemDOList = consItemsMap.get(consDO.getId());
for (int i = 0; i < consItemDOList.size(); i++) {
ConsItemDO consItemDO = consItemDOList.get(i);
OrderItemBackVO orderItemBackVO = new OrderItemBackVO();
if (i==0){
orderItemBackVO.setWorth(consDO.getWorth());
}
orderItemBackVO.setProdId(consItemDO.getProdId());
orderItemBackVO.setProdTitleZh(productMap.get(consItemDO.getProdId()).get(0).getTitleZh());
orderItemBackVO.setProdTitleEn(productMap.get(consItemDO.getProdId()).get(0).getTitleEn());
orderItemBackVO.setProdTitleFr(productMap.get(consItemDO.getProdId()).get(0).getTitleFr());
orderItemBackVO.setBrandType(0);
orderItemBackVO.setNum(1);
orderItemBackVO.setExpressNo(consDO.getExpressNo());
if (consDO.getNeedInspect() != null && consDO.getNeedInspect() == 1) {
orderItemBackVO.setVolume(consItemDO.getInspectionVolume());
orderItemBackVO.setWeight(consItemDO.getInspectionWeight());
orderItemBackVO.setBoxGauge(consItemDO.getInspectionBoxGauge());
orderItemBackVO.setUnit(consItemDO.getInspectionUnit());
orderItemBackVO.setWorth(consItemDO.getInspectionWorth());
orderItemBackVO.setQuantity(Integer.parseInt(String.valueOf(consItemDO.getInspectionQuantity())));
orderItemBackVO.setNum(consItemDO.getInspectionNum());
}
orderItemVOList.add(orderItemBackVO);
}
orderBackVO.setOrderItemVOList(orderItemVOList);
};
orderBackVO.setIsCargoControl(false);
return orderBackVO;
}
//生成包裹号 //生成包裹号
public String generateConsNumber(String warehouseCode) { public String generateConsNumber(String warehouseCode) {
......
...@@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingReco ...@@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingReco
import cn.iocoder.yudao.module.order.vo.cons.*; import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -189,4 +190,11 @@ public class ConsController { ...@@ -189,4 +190,11 @@ public class ConsController {
consService.createPad(createReqVO); consService.createPad(createReqVO);
return success(true); return success(true);
} }
@GetMapping("/getTempOrderByConsIds")
@ApiOperation("创建转运临时order对象")
public CommonResult<OrderBackVO> getTempOrderByConsIds(@RequestParam("ids") Collection<Long> ids){
OrderBackVO tempOrderByConsIds = consService.getTempOrderByConsIds(ids);
return CommonResult.success(tempOrderByConsIds);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment