|
|
|
@ -16,8 +16,11 @@
|
|
|
|
|
*/ |
|
|
|
|
package com.logpm.warehouse.controller; |
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
|
|
|
|
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; |
|
|
|
|
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
|
|
|
|
import com.logpm.distribution.entity.DistributionStockArticleEntity; |
|
|
|
|
import com.logpm.distribution.feign.IDistributionStockArticleClient; |
|
|
|
|
import com.logpm.warehouse.dto.ProductDTO; |
|
|
|
@ -46,6 +49,7 @@ import javax.validation.Valid;
|
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 运单表 控制器 |
|
|
|
@ -64,6 +68,8 @@ public class WarehouseWaybillController extends BladeController {
|
|
|
|
|
|
|
|
|
|
private final IDistributionStockArticleClient distributionStockArticleClient; |
|
|
|
|
|
|
|
|
|
private final IBasicdataWarehouseClient basicdataWarehouseClient; |
|
|
|
|
|
|
|
|
|
private final IDictBizClient dictBizClient; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -76,6 +82,7 @@ public class WarehouseWaybillController extends BladeController {
|
|
|
|
|
WarehouseWaybillEntity detail = warehouseWaybillService.getOne(Condition.getQueryWrapper(warehouseWaybill)); |
|
|
|
|
return R.data(WarehouseWaybillWrapper.build().entityVO(detail)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 运单表 分页 |
|
|
|
|
*/ |
|
|
|
@ -83,7 +90,17 @@ public class WarehouseWaybillController extends BladeController {
|
|
|
|
|
@ApiOperationSupport(order = 2) |
|
|
|
|
@ApiOperation(value = "分页", notes = "传入warehouseWaybill") |
|
|
|
|
public R<IPage<WarehouseWaybillVO>> list(@ApiIgnore @RequestParam Map<String, Object> warehouseWaybill, Query query) { |
|
|
|
|
IPage<WarehouseWaybillEntity> pages = warehouseWaybillService.page(Condition.getPage(query), Condition.getQueryWrapper(warehouseWaybill, WarehouseWaybillEntity.class)); |
|
|
|
|
QueryWrapper<WarehouseWaybillEntity> queryWrapper = Condition.getQueryWrapper(warehouseWaybill, WarehouseWaybillEntity.class); |
|
|
|
|
//获取当前登录人仓库
|
|
|
|
|
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse(); |
|
|
|
|
List<Long> collect = myWatchWarehouse.stream() |
|
|
|
|
.map(BasicdataWarehouseEntity::getId) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
queryWrapper.lambda() |
|
|
|
|
.in(collect.size() > 0, WarehouseWaybillEntity::getDepartureWarehouseId, collect) |
|
|
|
|
.or() |
|
|
|
|
.in(collect.size() > 0, WarehouseWaybillEntity::getDestinationWarehouseId, collect); |
|
|
|
|
IPage<WarehouseWaybillEntity> pages = warehouseWaybillService.page(Condition.getPage(query), queryWrapper); |
|
|
|
|
return R.data(WarehouseWaybillWrapper.build().pageVO(pages)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -145,16 +162,16 @@ public class WarehouseWaybillController extends BladeController {
|
|
|
|
|
@ApiOperation(value = "拆单", notes = "传入ids") |
|
|
|
|
public R splitOrder(@RequestBody List<SplitOrderDTO> splitOrderDTOList) { |
|
|
|
|
//先查询运单数据
|
|
|
|
|
if(splitOrderDTOList.size() < 1){ |
|
|
|
|
if (splitOrderDTOList.size() < 1) { |
|
|
|
|
log.warn("################splitOrder: 没有拆单数据"); |
|
|
|
|
return R.fail(405,"没有拆单数据"); |
|
|
|
|
return R.fail(405, "没有拆单数据"); |
|
|
|
|
} |
|
|
|
|
String waybillNo = splitOrderDTOList.get(0).getWaybillNo();//运单号
|
|
|
|
|
//查询运单
|
|
|
|
|
WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillService.findByWaybillNo(waybillNo); |
|
|
|
|
if(Objects.isNull(warehouseWaybillEntity)){ |
|
|
|
|
log.warn("################splitOrder: 未找到运单信息 waybillNo={}",waybillNo); |
|
|
|
|
return R.fail(405,"未找到运单信息"); |
|
|
|
|
if (Objects.isNull(warehouseWaybillEntity)) { |
|
|
|
|
log.warn("################splitOrder: 未找到运单信息 waybillNo={}", waybillNo); |
|
|
|
|
return R.fail(405, "未找到运单信息"); |
|
|
|
|
} |
|
|
|
|
Integer totalCount = warehouseWaybillEntity.getTotalCount();//包件总数量
|
|
|
|
|
Integer stockCount = warehouseWaybillEntity.getStockCount();//包件在库数量
|
|
|
|
@ -165,45 +182,45 @@ public class WarehouseWaybillController extends BladeController {
|
|
|
|
|
// }
|
|
|
|
|
//判断运单对应的订单是否已经
|
|
|
|
|
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo); |
|
|
|
|
if(Objects.isNull(distributionStockArticleEntity)){ |
|
|
|
|
log.warn("################splitOrder: 当前在库订单已转库存品,不能拆单 waybillNo={}",waybillNo); |
|
|
|
|
return R.fail(405,"当前在库订单已转库存品"); |
|
|
|
|
if (Objects.isNull(distributionStockArticleEntity)) { |
|
|
|
|
log.warn("################splitOrder: 当前在库订单已转库存品,不能拆单 waybillNo={}", waybillNo); |
|
|
|
|
return R.fail(405, "当前在库订单已转库存品"); |
|
|
|
|
} |
|
|
|
|
Integer state = Integer.parseInt(distributionStockArticleEntity.getOrderStatus());//订单状态
|
|
|
|
|
Long orderId = distributionStockArticleEntity.getId();//订单id
|
|
|
|
|
if(state>30){ |
|
|
|
|
log.warn("################splitOrder: 当前在库订单已进入配送流程,不能拆单 waybillNo={}",waybillNo); |
|
|
|
|
return R.fail(405,"当前在库订单已进入配送流程"); |
|
|
|
|
if (state > 30) { |
|
|
|
|
log.warn("################splitOrder: 当前在库订单已进入配送流程,不能拆单 waybillNo={}", waybillNo); |
|
|
|
|
return R.fail(405, "当前在库订单已进入配送流程"); |
|
|
|
|
} |
|
|
|
|
//判断拆单后的数值是否等于总数量
|
|
|
|
|
Integer total = new Integer("0"); |
|
|
|
|
for (SplitOrderDTO splitOrderDTO:splitOrderDTOList){ |
|
|
|
|
for (SplitOrderDTO splitOrderDTO : splitOrderDTOList) { |
|
|
|
|
List<ProductDTO> products = splitOrderDTO.getProducts(); |
|
|
|
|
for (ProductDTO productDTO:products){ |
|
|
|
|
for (ProductDTO productDTO : products) { |
|
|
|
|
Integer splitNum = productDTO.getSplitNum(); |
|
|
|
|
if(!Objects.isNull(splitNum)){ |
|
|
|
|
if (!Objects.isNull(splitNum)) { |
|
|
|
|
total = total + splitNum; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(stockCount < total){ |
|
|
|
|
log.warn("################splitOrder: 拆单数量不能小于在库数量 waybillNo={}",waybillNo); |
|
|
|
|
return R.fail(405,"拆单数量不能小于在库数量"); |
|
|
|
|
if (stockCount < total) { |
|
|
|
|
log.warn("################splitOrder: 拆单数量不能小于在库数量 waybillNo={}", waybillNo); |
|
|
|
|
return R.fail(405, "拆单数量不能小于在库数量"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
try { |
|
|
|
|
//拆单操作
|
|
|
|
|
warehouseWaybillService.splitOrder(splitOrderDTOList,distributionStockArticleEntity); |
|
|
|
|
warehouseWaybillService.splitOrder(splitOrderDTOList, distributionStockArticleEntity); |
|
|
|
|
//拆单完成去把以前的订单逻辑删除
|
|
|
|
|
distributionStockArticleClient.deleteById(orderId); |
|
|
|
|
|
|
|
|
|
return R.success("拆单成功"); |
|
|
|
|
}catch (CustomerException e){ |
|
|
|
|
} catch (CustomerException e) { |
|
|
|
|
log.warn(e.message); |
|
|
|
|
return R.fail(e.code,e.message); |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
log.warn("系统出现异常",e); |
|
|
|
|
return R.fail(500,"系统出现异常"); |
|
|
|
|
return R.fail(e.code, e.message); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.warn("系统出现异常", e); |
|
|
|
|
return R.fail(500, "系统出现异常"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|