|
|
|
@ -1,31 +1,43 @@
|
|
|
|
|
package com.logpm.trunkline.service.impl; |
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
|
import com.logpm.basicdata.feign.IBasicdataCodeClient; |
|
|
|
|
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
|
|
|
|
import com.logpm.trunkline.dto.BillladingDTO; |
|
|
|
|
import com.logpm.trunkline.dto.BillladingWaybillDTO; |
|
|
|
|
import com.logpm.trunkline.entity.TrunklineBillladingEntity; |
|
|
|
|
import com.logpm.trunkline.entity.TrunklineBillladingLineEntity; |
|
|
|
|
import com.logpm.trunkline.entity.TrunklineBillladingLogEntity; |
|
|
|
|
import com.logpm.trunkline.entity.TrunklineBillladingWaybillEntity; |
|
|
|
|
import com.logpm.trunkline.mapper.TrunklineBillladingMapper; |
|
|
|
|
import com.logpm.trunkline.service.ITrunklineBillladingLineService; |
|
|
|
|
import com.logpm.trunkline.service.ITrunklineBillladingService; |
|
|
|
|
import com.logpm.trunkline.service.ITrunklineBillladingWaybillService; |
|
|
|
|
import com.logpm.trunkline.service.*; |
|
|
|
|
import com.logpm.trunkline.vo.TrunklineBillladingLineVO; |
|
|
|
|
import com.logpm.trunkline.vo.TrunklineBillladingPackageVO; |
|
|
|
|
import com.logpm.trunkline.vo.TrunklineBillladingVO; |
|
|
|
|
import com.logpm.trunkline.vo.TrunklineBillladingWaybillVO; |
|
|
|
|
import com.logpm.warehouse.entity.WarehouseWaybillEntity; |
|
|
|
|
import com.logpm.warehouse.feign.IWarehouseWaybillClient; |
|
|
|
|
import com.logpm.warehouse.vo.WarehouseWaybillVO; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springblade.common.exception.CustomerException; |
|
|
|
|
import org.springblade.common.utils.CommonUtil; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
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.StringUtil; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.Comparator; |
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@ -35,10 +47,13 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
|
|
|
|
|
|
|
|
|
|
private final ITrunklineBillladingLineService billladingLineService; |
|
|
|
|
private final ITrunklineBillladingWaybillService billladingWaybillService; |
|
|
|
|
|
|
|
|
|
private final ITrunklineBillladingPackageServicie trunklineBillladingPackageServicie; |
|
|
|
|
private final ITrunklineWaybillOrderService trunklineWaybillOrderService; |
|
|
|
|
private final IWarehouseWaybillClient warehouseWaybillClient; |
|
|
|
|
|
|
|
|
|
private final IBasicdataWarehouseClient basicdataWarehouseClient; |
|
|
|
|
private final IBasicdataCodeClient basicdataCodeClient; |
|
|
|
|
private final ITrunklineBillladingLogService trunklineBillladingLogService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<TrunklineBillladingVO> pageList(BillladingDTO billladingDTO) { |
|
|
|
@ -100,8 +115,20 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
|
|
|
|
|
billladingWaybillEntity.setRealNum(0); |
|
|
|
|
billladingWaybillEntity.setRealWeight(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillEntity.setRealVolume(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillEntity.setBillladingFee(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillService.save(billladingWaybillEntity); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TrunklineBillladingLogEntity logEntity = new TrunklineBillladingLogEntity(); |
|
|
|
|
logEntity.setWarehouseId(warehouseId); |
|
|
|
|
logEntity.setWarehouseName(warehouseName); |
|
|
|
|
logEntity.setCreateUserName(AuthUtil.getUserName()); |
|
|
|
|
logEntity.setContent("创建提货单 billladingCode="+billladingCode); |
|
|
|
|
logEntity.setBillladingId(billladingId); |
|
|
|
|
logEntity.setAfter(JSONObject.toJSONString(trunklineBillladingEntity)); |
|
|
|
|
trunklineBillladingLogService.save(logEntity); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@ -117,4 +144,342 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
|
|
|
|
|
|
|
|
|
|
return pageList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateBilllading(BillladingDTO billladingDTO) { |
|
|
|
|
log.info("###############updateBilllading: billladingDTO={}",billladingDTO); |
|
|
|
|
|
|
|
|
|
Long billladingId = billladingDTO.getId(); |
|
|
|
|
Long warehouseId = billladingDTO.getWarehouseId(); |
|
|
|
|
String warehouseName = billladingDTO.getWarehouseName(); |
|
|
|
|
if(Objects.isNull(billladingId)){ |
|
|
|
|
log.warn("##############updateBilllading: 提货单id为空 billladingId={}",billladingId); |
|
|
|
|
throw new CustomerException(405,"提货单id为空"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TrunklineBillladingEntity billladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(billladingEntity)){ |
|
|
|
|
log.warn("##############updateBilllading: 提货单信息不存在 billladingId={}",billladingId); |
|
|
|
|
throw new CustomerException(405,"提货单信息不存在"); |
|
|
|
|
} |
|
|
|
|
String billladingCode = billladingEntity.getBillladingCode(); |
|
|
|
|
|
|
|
|
|
TrunklineBillladingLogEntity logEntity = new TrunklineBillladingLogEntity(); |
|
|
|
|
logEntity.setWarehouseId(warehouseId); |
|
|
|
|
logEntity.setWarehouseName(warehouseName); |
|
|
|
|
logEntity.setCreateUserName(AuthUtil.getUserName()); |
|
|
|
|
logEntity.setContent("修改提货单 billladingCode="+billladingCode); |
|
|
|
|
logEntity.setBillladingId(billladingId); |
|
|
|
|
logEntity.setBefore(JSONObject.toJSONString(billladingEntity)); |
|
|
|
|
|
|
|
|
|
BeanUtil.copy(billladingDTO,billladingEntity); |
|
|
|
|
updateById(billladingEntity); |
|
|
|
|
|
|
|
|
|
//先删除路线节点
|
|
|
|
|
billladingLineService.deleteByBillladingId(billladingId); |
|
|
|
|
|
|
|
|
|
//保存线路节点
|
|
|
|
|
List<TrunklineBillladingLineVO> billladingLineList = billladingDTO.getBillladingLineList(); |
|
|
|
|
billladingLineList = billladingLineList.stream() |
|
|
|
|
.sorted(Comparator.comparing(TrunklineBillladingLineVO::getSort)) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
String lineTitle = ""; |
|
|
|
|
for (TrunklineBillladingLineVO billladingLineVO:billladingLineList){ |
|
|
|
|
String clientName = billladingLineVO.getClientName(); |
|
|
|
|
if(StringUtil.isBlank(lineTitle)){ |
|
|
|
|
lineTitle = lineTitle + clientName; |
|
|
|
|
}else{ |
|
|
|
|
lineTitle = lineTitle + "-->" + clientName; |
|
|
|
|
} |
|
|
|
|
TrunklineBillladingLineEntity billladingLineEntity = new TrunklineBillladingLineEntity(); |
|
|
|
|
BeanUtil.copy(billladingLineVO,billladingLineEntity); |
|
|
|
|
billladingLineEntity.setBillladingId(billladingId); |
|
|
|
|
billladingLineEntity.setWarehouseId(warehouseId); |
|
|
|
|
billladingLineEntity.setWarehouseName(warehouseName); |
|
|
|
|
billladingLineService.save(billladingLineEntity); |
|
|
|
|
} |
|
|
|
|
billladingEntity.setLineNameTitle(lineTitle); |
|
|
|
|
updateById(billladingEntity); |
|
|
|
|
|
|
|
|
|
//先删除所有对应的运单
|
|
|
|
|
billladingWaybillService.deletedByBillladingId(billladingId); |
|
|
|
|
|
|
|
|
|
//保存提货运单
|
|
|
|
|
List<TrunklineBillladingWaybillVO> billladingWaybillList = billladingDTO.getBillladingWaybillList(); |
|
|
|
|
for (TrunklineBillladingWaybillVO billladingWaybillVO:billladingWaybillList){ |
|
|
|
|
String waybillNo = billladingWaybillVO.getWaybillNo(); |
|
|
|
|
//查询运单以前是否挂在当前提货单下
|
|
|
|
|
QueryWrapper<TrunklineBillladingWaybillEntity> queryWrapper = new QueryWrapper<>(); |
|
|
|
|
queryWrapper.eq("billlading_id",billladingId) |
|
|
|
|
.eq("waybill_no",waybillNo); |
|
|
|
|
TrunklineBillladingWaybillEntity one = billladingWaybillService.getOne(queryWrapper); |
|
|
|
|
if(!Objects.isNull(one)){ |
|
|
|
|
one.setIsDeleted(0); |
|
|
|
|
billladingWaybillService.updateById(one); |
|
|
|
|
}else{ |
|
|
|
|
TrunklineBillladingWaybillEntity billladingWaybillEntity = new TrunklineBillladingWaybillEntity(); |
|
|
|
|
BeanUtil.copy(billladingWaybillVO,billladingWaybillEntity); |
|
|
|
|
billladingWaybillEntity.setBillladingId(billladingId); |
|
|
|
|
billladingWaybillEntity.setBilladingCode(billladingCode); |
|
|
|
|
billladingWaybillEntity.setRealNum(0); |
|
|
|
|
billladingWaybillEntity.setRealWeight(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillEntity.setRealVolume(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillEntity.setBillladingFee(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillService.save(billladingWaybillEntity); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
logEntity.setAfter(JSONObject.toJSONString(billladingEntity)); |
|
|
|
|
trunklineBillladingLogService.save(logEntity); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void updateBillladingStatus(Long billladingId, Integer type,Long warehouseId,String warehouseName) { |
|
|
|
|
log.info("#############updateBillladingStatus: 更新提货单状态 type={}",type); |
|
|
|
|
|
|
|
|
|
TrunklineBillladingEntity billladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(billladingEntity)){ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
throw new CustomerException(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
String billladingCode = billladingEntity.getBillladingCode(); |
|
|
|
|
|
|
|
|
|
StringBuilder stringBuffer = new StringBuilder(); |
|
|
|
|
TrunklineBillladingLogEntity logEntity = new TrunklineBillladingLogEntity(); |
|
|
|
|
logEntity.setWarehouseId(warehouseId); |
|
|
|
|
logEntity.setWarehouseName(warehouseName); |
|
|
|
|
logEntity.setCreateUserName(AuthUtil.getUserName()); |
|
|
|
|
logEntity.setBillladingId(billladingId); |
|
|
|
|
logEntity.setBefore(JSONObject.toJSONString(billladingEntity)); |
|
|
|
|
|
|
|
|
|
stringBuffer.append("变更提货单状态 billladingCode=").append(billladingCode); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String billladingStatus = billladingEntity.getBillladingStatus(); |
|
|
|
|
//提货单状态 1=未开始,2=提货中,3=已完成,4=已结算 5=已取消
|
|
|
|
|
switch (type){ |
|
|
|
|
case 1://开始提货
|
|
|
|
|
if("1".equals(billladingStatus)){ |
|
|
|
|
billladingEntity.setBillladingStatus("2"); |
|
|
|
|
billladingEntity.setStartTime(new Date()); |
|
|
|
|
stringBuffer.append(",未开始变更为提货中"); |
|
|
|
|
}else{ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不能更新为提货中 billladingStatus={}",billladingStatus); |
|
|
|
|
throw new CustomerException(405,"提货单不能更新为提货中"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 2://提货完成
|
|
|
|
|
if("2".equals(billladingStatus)){ |
|
|
|
|
billladingEntity.setBillladingStatus("3"); |
|
|
|
|
billladingEntity.setEndTime(new Date()); |
|
|
|
|
stringBuffer.append(",提货中变更为提货完成"); |
|
|
|
|
}else{ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不能更新为已完成 billladingStatus={}",billladingStatus); |
|
|
|
|
throw new CustomerException(405,"提货单不能更新为已完成"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 3://取消完成
|
|
|
|
|
if("3".equals(billladingStatus)){ |
|
|
|
|
billladingEntity.setBillladingStatus("2"); |
|
|
|
|
billladingEntity.setEndTime(null); |
|
|
|
|
stringBuffer.append(",提货完成变更为提货中"); |
|
|
|
|
}else{ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不能更新为提货中 billladingStatus={}",billladingStatus); |
|
|
|
|
throw new CustomerException(405,"提货单不能更新为提货中"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 4://结算
|
|
|
|
|
if("3".equals(billladingStatus)){ |
|
|
|
|
Date date = new Date(); |
|
|
|
|
billladingEntity.setBillladingStatus("4"); |
|
|
|
|
billladingEntity.setSettlementTime(date); |
|
|
|
|
billladingEntity.setSettlementId(AuthUtil.getUserId()); |
|
|
|
|
billladingEntity.setSettlementName(AuthUtil.getUserName()); |
|
|
|
|
stringBuffer.append(",提货完成变更为已结算,时间"+ CommonUtil.dateToString(date)+",变更人"+AuthUtil.getUserName()); |
|
|
|
|
}else{ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不能更新为已结算 billladingStatus={}",billladingStatus); |
|
|
|
|
throw new CustomerException(405,"提货单不能更新为提货中"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 5://取消结算
|
|
|
|
|
if("4".equals(billladingStatus)){ |
|
|
|
|
billladingEntity.setBillladingStatus("3"); |
|
|
|
|
billladingEntity.setSettlementTime(null); |
|
|
|
|
billladingEntity.setSettlementId(null); |
|
|
|
|
billladingEntity.setSettlementName(null); |
|
|
|
|
stringBuffer.append(",已结算变更为提货完成,时间"+ CommonUtil.dateToString(new Date())+",变更人"+AuthUtil.getUserName()); |
|
|
|
|
}else{ |
|
|
|
|
log.warn("##################updateBillladingStatus: 提货单不能更新为提货完成 billladingStatus={}",billladingStatus); |
|
|
|
|
throw new CustomerException(405,"提货单不能更新为提货完成"); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 6://取消提货
|
|
|
|
|
billladingEntity.setBillladingStatus("5"); |
|
|
|
|
stringBuffer.append(",变更为取消提货,时间"+ CommonUtil.dateToString(new Date())+",变更人"+AuthUtil.getUserName()); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
log.warn("#############updateBillladingStatus: 未知的更新操作"); |
|
|
|
|
throw new CustomerException(405,"未知的更新操作"); |
|
|
|
|
} |
|
|
|
|
//更新状态
|
|
|
|
|
updateById(billladingEntity); |
|
|
|
|
logEntity.setContent(stringBuffer.toString()); |
|
|
|
|
logEntity.setAfter(JSONObject.toJSONString(billladingEntity)); |
|
|
|
|
trunklineBillladingLogService.save(logEntity); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R billladingDetail(Long billladingId, Long warehouseId) { |
|
|
|
|
log.info("############billladingDetail: 查询提货单详情 billladingId={}",billladingId); |
|
|
|
|
TrunklineBillladingEntity billladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(billladingEntity)){ |
|
|
|
|
log.warn("#############billladingDetail: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
return R.fail(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
TrunklineBillladingVO trunklineBillladingVO = new TrunklineBillladingVO(); |
|
|
|
|
BeanUtil.copy(billladingEntity,trunklineBillladingVO); |
|
|
|
|
|
|
|
|
|
//查询提货单关联的运单信息
|
|
|
|
|
List<TrunklineBillladingWaybillVO> ls = billladingWaybillService.findWaybillInfoListByBillladingId(billladingId); |
|
|
|
|
|
|
|
|
|
trunklineBillladingVO.setWaybillList(ls); |
|
|
|
|
|
|
|
|
|
return R.data(trunklineBillladingVO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R billladingPackageDetail(BillladingDTO billladingDTO,Integer pageNum,Integer pageSize) { |
|
|
|
|
Long billladingId = billladingDTO.getId(); |
|
|
|
|
log.info("############billladingPackageDetail: 查询提货单包件明细 billladingId={}",billladingId); |
|
|
|
|
TrunklineBillladingEntity billladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(billladingEntity)){ |
|
|
|
|
log.warn("#############billladingPackageDetail: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
return R.fail(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
IPage<Object> page = new Page<>(); |
|
|
|
|
page.setCurrent(pageNum); |
|
|
|
|
page.setSize(pageSize); |
|
|
|
|
|
|
|
|
|
IPage<TrunklineBillladingPackageVO> pageList = trunklineBillladingPackageServicie.findBillladingPackageDetail(page,billladingDTO); |
|
|
|
|
return R.data(pageList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
@Override |
|
|
|
|
public R updateBillladingWaybillNum(Long billladingId, List<BillladingWaybillDTO> billladingWaybillEnterList) { |
|
|
|
|
log.info("############updateBillladingWaybillNum: 更新提货单下运单数量 billladingId={}",billladingId); |
|
|
|
|
TrunklineBillladingEntity billladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(billladingEntity)){ |
|
|
|
|
log.warn("#############updateBillladingWaybillNum: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
return R.fail(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Integer stockNum = 0; |
|
|
|
|
BigDecimal stockWeight = BigDecimal.ZERO; |
|
|
|
|
BigDecimal stockVolume = BigDecimal.ZERO; |
|
|
|
|
for (BillladingWaybillDTO billladingWaybillDTO:billladingWaybillEnterList){ |
|
|
|
|
Long billladingWaybillId = billladingWaybillDTO.getBillladingWaybillId(); |
|
|
|
|
|
|
|
|
|
TrunklineBillladingWaybillEntity billladingWaybillEntity = billladingWaybillService.getById(billladingWaybillId); |
|
|
|
|
Long waybillId = billladingWaybillEntity.getWaybillId(); |
|
|
|
|
String waybillNo = billladingWaybillEntity.getWaybillNo(); |
|
|
|
|
|
|
|
|
|
Integer tNum = billladingWaybillService.getFinishNumByWaybillIdNotBillladingWaybillId(waybillId,billladingWaybillId); |
|
|
|
|
|
|
|
|
|
WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); |
|
|
|
|
if(Objects.isNull(warehouseWaybillEntity)){ |
|
|
|
|
log.warn("###############updateBillladingWaybillNum: 运单不存在 waybillId={}",waybillId); |
|
|
|
|
return R.fail(405,"运单不存在"); |
|
|
|
|
} |
|
|
|
|
Integer totalCount = warehouseWaybillEntity.getTotalCount(); |
|
|
|
|
|
|
|
|
|
Integer enterNum = billladingWaybillDTO.getEnterNum(); |
|
|
|
|
if(tNum+enterNum > totalCount){ |
|
|
|
|
log.warn("###############updateBillladingWaybillNum: 运单提货数量已经大于总数 waybillId={} totalCount={}",waybillId,totalCount); |
|
|
|
|
throw new CustomerException(405,"【"+waybillNo+"】运单提货数量已经大于总数"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BigDecimal enterWeight = billladingWaybillDTO.getEnterWeight(); |
|
|
|
|
BigDecimal enterVolume = billladingWaybillDTO.getEnterVolume(); |
|
|
|
|
|
|
|
|
|
stockNum = stockNum + enterNum; |
|
|
|
|
stockWeight = stockWeight.add(enterWeight); |
|
|
|
|
stockVolume = stockVolume.add(enterVolume); |
|
|
|
|
billladingWaybillService.updateDataByBillladingWaybillId(billladingWaybillId,enterNum,enterWeight,enterVolume); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
billladingEntity.setRealNum(stockNum); |
|
|
|
|
billladingEntity.setRealWeight(stockWeight); |
|
|
|
|
billladingEntity.setRealVolume(stockVolume); |
|
|
|
|
updateById(billladingEntity); |
|
|
|
|
|
|
|
|
|
billladingWaybillService.updateBillladingFeeByBillladingId(billladingEntity); |
|
|
|
|
|
|
|
|
|
return R.success("更新成功"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R findWaybillListNotBillladingId(Long billladingId) { |
|
|
|
|
|
|
|
|
|
TrunklineBillladingEntity trunklineBillladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(trunklineBillladingEntity)){ |
|
|
|
|
log.warn("#############findWaybillListNotBillladingId: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
return R.fail(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<TrunklineBillladingWaybillVO> waybillInfoListByBillladingId = billladingWaybillService.findWaybillInfoListByBillladingId(billladingId); |
|
|
|
|
|
|
|
|
|
List<WarehouseWaybillVO> ls = baseMapper.findWaybillListNotBillladingId(waybillInfoListByBillladingId); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return R.data(ls); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R addWaybillToBillladingId(BillladingDTO billladingDTO) { |
|
|
|
|
log.info("##############addWaybillToBillladingId: 添加运单"); |
|
|
|
|
Long billladingId = billladingDTO.getId(); |
|
|
|
|
Integer enterNum = billladingDTO.getEnterNum(); |
|
|
|
|
String waybillNo = billladingDTO.getWaybillNo(); |
|
|
|
|
Long warehouseId = billladingDTO.getWarehouseId(); |
|
|
|
|
String warehouseName = billladingDTO.getWarehouseName(); |
|
|
|
|
|
|
|
|
|
TrunklineBillladingEntity trunklineBillladingEntity = baseMapper.selectById(billladingId); |
|
|
|
|
if(Objects.isNull(trunklineBillladingEntity)){ |
|
|
|
|
log.warn("#############addWaybillToBillladingId: 提货单不存在 billladingId={}",billladingId); |
|
|
|
|
return R.fail(405,"提货单不存在"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo); |
|
|
|
|
if(Objects.isNull(warehouseWaybillEntity)){ |
|
|
|
|
log.warn("#############addWaybillToBillladingId: 运单不存在 waybillNo={}",waybillNo); |
|
|
|
|
return R.fail(405,"运单不存在"); |
|
|
|
|
} |
|
|
|
|
Long waybillId = warehouseWaybillEntity.getId(); |
|
|
|
|
Integer totalCount = warehouseWaybillEntity.getTotalCount(); |
|
|
|
|
|
|
|
|
|
//查询运单有多少提货数量
|
|
|
|
|
Integer finishNum = billladingWaybillService.getFinishNumByWaybillId(waybillId); |
|
|
|
|
if(finishNum+enterNum > totalCount){ |
|
|
|
|
log.warn("#############addWaybillToBillladingId: 总提货数大于运单总数量 totalCount={} finishNum={} enterNum={}",totalCount,finishNum,enterNum); |
|
|
|
|
return R.fail(405,"总提货数大于运单总数量"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TrunklineBillladingWaybillEntity entity = new TrunklineBillladingWaybillEntity(); |
|
|
|
|
entity.setWarehouseId(warehouseId); |
|
|
|
|
entity.setWarehouseName(warehouseName); |
|
|
|
|
entity.setBillladingId(billladingId); |
|
|
|
|
entity.setBilladingCode(trunklineBillladingEntity.getBillladingCode()); |
|
|
|
|
entity.setWaybillId(waybillId); |
|
|
|
|
entity.setWaybillNo(waybillNo); |
|
|
|
|
entity.setRealNum(enterNum); |
|
|
|
|
entity.setRealWeight(BigDecimal.ZERO); |
|
|
|
|
entity.setRealVolume(BigDecimal.ZERO); |
|
|
|
|
entity.setBillladingFee(BigDecimal.ZERO); |
|
|
|
|
billladingWaybillService.save(entity); |
|
|
|
|
billladingWaybillService.updateBillladingFeeByBillladingId(trunklineBillladingEntity); |
|
|
|
|
return R.success("添加成功"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|