|
1
2
3
|
package com.huaheng.pc.shipment.shippingCombination.service;
|
|
4
5
6
7
8
9
10
11
12
13
14
15
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
import com.huaheng.pc.config.configValue.domain.ConfigValue;
import com.huaheng.pc.config.configValue.service.ConfigValueService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialServiceImpl;
import com.huaheng.pc.config.shipmentPreference.domain.ShipmentPreference;
import com.huaheng.pc.config.shipmentPreference.service.ShipmentPreferenceService;
|
|
16
|
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
|
|
17
18
|
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
|
|
19
20
|
import com.huaheng.pc.shipment.shippingCombination.domain.ShippingSearch;
import com.huaheng.pc.shipment.shippingCombination.mapper.ShippingCombinationMapper;
|
|
21
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
22
23
|
import org.springframework.stereotype.Service;
|
|
24
|
import javax.annotation.Resource;
|
|
25
|
import java.util.ArrayList;
|
|
26
27
|
import java.util.List;
|
|
28
29
30
31
|
@Service
public class ShippingCombinationService {
|
|
32
33
|
@Resource
private ShippingCombinationMapper shippingCombinationMapper;
|
|
34
35
36
37
38
39
40
41
42
43
|
@Autowired
InventoryDetailService inventoryDetailService;
@Autowired
ConfigValueService configValueService;
@Autowired
FilterConfigDetailService filterConfigDetailService;
@Autowired
ShipmentPreferenceService shipmentPreferenceService;
@Autowired
MaterialServiceImpl materialService;
|
|
44
45
|
|
|
46
47
48
|
//根据分配规则查找库存
public List<InventoryDetail> getInventorys(ShipmentDetail shipmentDetail) {
|
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
LambdaQueryWrapper<ConfigValue> configValueLambdaQueryWrapper=Wrappers.lambdaQuery();
configValueLambdaQueryWrapper.eq(ConfigValue::getModuleType,"shipment")
.eq(ConfigValue::getWarehouseCode,shipmentDetail.getWarehouseCode());
ConfigValue configValue=configValueService.getOne(configValueLambdaQueryWrapper);
if(configValue==null){
throw new ServiceException("仓库的出库配置不存在");
}
//查找出库首选项
LambdaQueryWrapper<ShipmentPreference> slam=Wrappers.lambdaQuery();
slam.eq(ShipmentPreference::getCode,configValue.getIdentifier())
.eq(ShipmentPreference::getWarehouseCode,configValue.getWarehouseCode());
ShipmentPreference shipmentPreference=shipmentPreferenceService.getOne(slam);
if(shipmentPreference==null){
throw new ServiceException("仓库的出库配置中出库首选项不存在");
}
|
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
List<InventoryDetail> list=new ArrayList<>();
FilterConfigDetail filterConfigDetail=new FilterConfigDetail();
LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambdaQueryWrapper= Wrappers.lambdaQuery();
filterConfigDetailLambdaQueryWrapper.eq(FilterConfigDetail::getWarehouseCode,shipmentDetail.getWarehouseCode());
//出库子单的分配规则有时,优先出库子单的分配规则
if(StringUtils.isNotEmpty(shipmentDetail.getAllocationRule())){
filterConfigDetailLambdaQueryWrapper.eq(FilterConfigDetail::getCode,shipmentDetail.getAllocationRule());
filterConfigDetail=filterConfigDetailService.getOne(filterConfigDetailLambdaQueryWrapper);
if(filterConfigDetail==null){
throw new ServiceException("出库子单出库规则配置不存在");
}
//根据sql查库存
try {
|
|
81
|
list = inventoryDetailService.selectBysql(filterConfigDetail.getStatement(),shipmentDetail,filterConfigDetail.getSqll(),shipmentPreference);
|
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
}catch (Exception e){
throw new ServiceException("sql错误");
}
return list;
}
//出库子单的分配规则没有时,优先物料的分配规则
LambdaQueryWrapper<Material> materialLambdaQueryWrapper=Wrappers.lambdaQuery();
materialLambdaQueryWrapper.eq(Material::getCode,shipmentDetail.getMaterialCode())
.eq(Material::getWarehouseCode,shipmentDetail.getWarehouseCode());
Material material=materialService.getOne(materialLambdaQueryWrapper);
if(StringUtils.isNotEmpty(material.getAllocationRule())){
filterConfigDetailLambdaQueryWrapper.eq(FilterConfigDetail::getCode,material.getAllocationRule());
filterConfigDetail=filterConfigDetailService.getOne(filterConfigDetailLambdaQueryWrapper);
if(filterConfigDetail==null){
throw new ServiceException("物料出库规则配置不存在");
}
//根据sql查库存
|
|
101
|
list=inventoryDetailService.selectBysql(filterConfigDetail.getStatement(),shipmentDetail,filterConfigDetail.getSqll(),shipmentPreference);
|
|
102
103
104
105
106
107
108
109
110
111
112
113
114
|
return list;
}
//都没有时,默认仓库的分配规则
//查找分配规则
filterConfigDetailLambdaQueryWrapper.eq(FilterConfigDetail::getCode,shipmentPreference.getAllocationRule());
filterConfigDetail=filterConfigDetailService.getOne(filterConfigDetailLambdaQueryWrapper);
if(filterConfigDetail==null){
throw new ServiceException("出库首选项中出库规则配置不存在");
}
//根据sql查库存
|
|
115
|
list=inventoryDetailService.selectBysql(filterConfigDetail.getStatement(),shipmentDetail,filterConfigDetail.getSqll(),shipmentPreference);
|
|
116
|
return list;
|
|
117
118
|
}
|
|
119
|
}
|