Commit 0e5c43977494f3bd4283544b7a0f0f21537934f6
1 parent
3b4dda90
曾加受控库存
Showing
12 changed files
with
120 additions
and
20 deletions
ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue
... | ... | @@ -37,6 +37,13 @@ |
37 | 37 | </a-tag> |
38 | 38 | </span> |
39 | 39 | |
40 | + <span slot="controller_dictText" slot-scope="controller_dictText"> | |
41 | + <a-tag :key="controller_dictText" :color="getStatusColor(controller_dictText)"> | |
42 | + {{ controller_dictText }} | |
43 | + </a-tag> | |
44 | + </span> | |
45 | + | |
46 | + | |
40 | 47 | <span slot="companyCode" slot-scope="companyCode"> |
41 | 48 | <a-tag :key="companyCode" color="blue"> |
42 | 49 | {{ solutionCompany(companyCode) }} |
... | ... | @@ -192,6 +199,12 @@ export default { |
192 | 199 | scopedSlots: {customRender: 'inventoryStatus_dictText'} |
193 | 200 | }, |
194 | 201 | { |
202 | + title: '受控状态', | |
203 | + align: 'center', | |
204 | + dataIndex: 'controller_dictText', | |
205 | + scopedSlots: {customRender: 'controller_dictText'} | |
206 | + }, | |
207 | + { | |
195 | 208 | title: '批次', |
196 | 209 | align: 'center', |
197 | 210 | dataIndex: 'batch' |
... | ... |
ant-design-vue-jeecg/src/views/system/inventory/SimpleInventoryDetailList.vue
... | ... | @@ -49,6 +49,15 @@ |
49 | 49 | </a-form-item> |
50 | 50 | </a-col> |
51 | 51 | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
52 | + <a-form-item label="受控状态"> | |
53 | + <j-dict-select-tag | |
54 | + placeholder="请选择受控状态" | |
55 | + v-model="queryParam.controller" | |
56 | + dictCode="inventory_controller" | |
57 | + /> | |
58 | + </a-form-item> | |
59 | + </a-col> | |
60 | + <a-col :xl="6" :lg="7" :md="8" :sm="24"> | |
52 | 61 | <a-form-item label="物料编码"> |
53 | 62 | <a-input placeholder="请输入物料编码" v-model="queryParam.materialCode"></a-input> |
54 | 63 | </a-form-item> |
... | ... | @@ -146,10 +155,10 @@ |
146 | 155 | |
147 | 156 | <!-- table区域-begin --> |
148 | 157 | <div> |
149 | - <!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">--> | |
150 | - <!-- <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项--> | |
151 | - <!-- <a style="margin-left: 24px" @click="onClearSelected">清空</a>--> | |
152 | - <!-- </div>--> | |
158 | + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> | |
159 | + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项 | |
160 | + <a style="margin-left: 24px" @click="onClearSelected">清空</a> | |
161 | + </div> | |
153 | 162 | |
154 | 163 | <a-table |
155 | 164 | ref="table" |
... | ... | @@ -161,9 +170,16 @@ |
161 | 170 | :dataSource="dataSource" |
162 | 171 | :pagination="ipagination" |
163 | 172 | :loading="loading" |
173 | + :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" | |
164 | 174 | class="j-table-force-nowrap" |
165 | 175 | @change="handleTableChange" |
166 | 176 | > |
177 | + <span slot="controller_dictText" slot-scope="controller_dictText"> | |
178 | + <a-tag :key="controller_dictText" :color="getStatusColor(controller_dictText)"> | |
179 | + {{ controller_dictText }} | |
180 | + </a-tag> | |
181 | + </span> | |
182 | + | |
167 | 183 | <span slot="inventoryStatus_dictText" slot-scope="inventoryStatus_dictText"> |
168 | 184 | <a-tag :key="inventoryStatus_dictText" :color="getStatusColor(inventoryStatus_dictText)"> |
169 | 185 | {{ inventoryStatus_dictText }} |
... | ... | @@ -218,7 +234,8 @@ import {mixinDevice} from '@/utils/mixin' |
218 | 234 | import {JeecgListMixin} from '@/mixins/JeecgListMixin' |
219 | 235 | import SimpleInventoryDetailModal from './modules/SimpleInventoryDetailModal' |
220 | 236 | import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' |
221 | -import {getCompanyList, getZoneList} from "@api/api"; | |
237 | +import {getCompanyList, getZoneList, } from "@api/api"; | |
238 | +import {postAction} from '@/api/manage' | |
222 | 239 | |
223 | 240 | export default { |
224 | 241 | name: 'InventoryDetailList', |
... | ... | @@ -310,6 +327,12 @@ export default { |
310 | 327 | scopedSlots: {customRender: 'inventoryStatus_dictText'} |
311 | 328 | }, |
312 | 329 | { |
330 | + title: '受控状态', | |
331 | + align: 'center', | |
332 | + dataIndex: 'controller_dictText', | |
333 | + scopedSlots: {customRender: 'controller_dictText'} | |
334 | + }, | |
335 | + { | |
313 | 336 | title: '批次', |
314 | 337 | align: 'center', |
315 | 338 | dataIndex: 'batch' |
... | ... | @@ -521,6 +544,7 @@ export default { |
521 | 544 | fieldList.push({type: 'BigDecimal', value: 'qty', text: '数量', dictCode: ''}) |
522 | 545 | fieldList.push({type: 'BigDecimal', value: 'taskQty', text: '任务锁定数量', dictCode: ''}) |
523 | 546 | fieldList.push({type: 'string', value: 'inventoryStatus', text: '库存状态', dictCode: 'inventory_status'}) |
547 | + fieldList.push({type: 'int', value: 'controller', text: '受控状态', dictCode: 'inventory_controller'}) | |
524 | 548 | fieldList.push({type: 'string', value: 'batch', text: '批次', dictCode: ''}) |
525 | 549 | // fieldList.push({type:'string',value:'sn',text:'序列号',dictCode:''}) |
526 | 550 | fieldList.push({type: 'datetime', value: 'receiptDate', text: '入库日期'}) |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
... | ... | @@ -243,6 +243,9 @@ public class WcsServiceImpl implements WcsService { |
243 | 243 | // 如果是外侧库位,那么就要判断该库位对应的内侧库位是不是有托盘 |
244 | 244 | if (rowFlag == QuantityConstant.ROW_OUT) { |
245 | 245 | Location insideLocation = locationService.getInsideNear(location); |
246 | + if (insideLocation == null) { | |
247 | + return Result.error("分配库位时" + locationCode + "没有找到对应的内侧库位"); | |
248 | + } | |
246 | 249 | if (StringUtils.isNotEmpty(insideLocation.getContainerCode())) { |
247 | 250 | Location destinationLocation = locationService.getEmptyLocation(insideLocation); |
248 | 251 | if (destinationLocation == null) { |
... | ... | @@ -348,6 +351,9 @@ public class WcsServiceImpl implements WcsService { |
348 | 351 | if (rowFlag == QuantityConstant.ROW_OUT) { |
349 | 352 | // 找到对应内侧库位 |
350 | 353 | Location insideLocation = locationService.getInsideNear(fromLocation); |
354 | + if (insideLocation == null) { | |
355 | + return Result.error("分配库位时" + fromLocation + "没有找到对应的内侧库位"); | |
356 | + } | |
351 | 357 | String insideLocationCode = insideLocation.getCode(); |
352 | 358 | // 如果对应内侧库位有托盘 |
353 | 359 | if (StringUtils.isNotEmpty(insideLocation.getContainerCode())) { |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/entity/InventoryDetail.java
... | ... | @@ -127,6 +127,7 @@ public class InventoryDetail implements Serializable { |
127 | 127 | private Integer inventoryAge; |
128 | 128 | /** 受控 */ |
129 | 129 | @Excel(name = "受控", width = 15) |
130 | + @Dict(dicCode = "inventory_controller") | |
130 | 131 | @ApiModelProperty(value = "受控") |
131 | 132 | private Integer controller; |
132 | 133 | /** 备用字段1 */ |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
... | ... | @@ -69,7 +69,8 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { |
69 | 69 | Result controller(List<Integer> inventoryDetailIdList); |
70 | 70 | |
71 | 71 | /** |
72 | - * @param | |
72 | + * 批量释放受控 | |
73 | + * @param inventoryDetailIdList 库存明细id | |
73 | 74 | * @return |
74 | 75 | */ |
75 | 76 | Result releaseController(List<Integer> inventoryDetailIdList); |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
... | ... | @@ -105,7 +105,9 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe |
105 | 105 | .eq(StringUtils.isNotEmpty(inventoryDetail.getBatch()), InventoryDetail::getBatch, inventoryDetail.getBatch()) |
106 | 106 | .eq(StringUtils.isNotEmpty(inventoryDetail.getLot()), InventoryDetail::getLot, inventoryDetail.getLot()) |
107 | 107 | .eq(StringUtils.isNotEmpty(inventoryDetail.getProject()), InventoryDetail::getProject, inventoryDetail.getLot()) |
108 | - .eq(InventoryDetail::getTaskQty, BigDecimal.ZERO).eq(InventoryDetail::getCompanyCode, inventoryDetail.getCompanyCode()); | |
108 | + .eq(InventoryDetail::getController, QuantityConstant.CONTROLLER_NOT_ENABLE) | |
109 | + .eq(InventoryDetail::getContainerStatus, QuantityConstant.STATUS_CONTAINER_EMPTY).eq(InventoryDetail::getTaskQty, BigDecimal.ZERO) | |
110 | + .eq(InventoryDetail::getCompanyCode, inventoryDetail.getCompanyCode()); | |
109 | 111 | List<InventoryDetail> inventoryDetailList = list(inventoryDetailLambdaQueryWrapper); |
110 | 112 | if (inventoryDetailList.size() == 0) { |
111 | 113 | return BigDecimal.ZERO; |
... | ... | @@ -223,6 +225,21 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe |
223 | 225 | |
224 | 226 | @Override |
225 | 227 | public Result releaseController(List<Integer> inventoryDetailIdList) { |
226 | - return null; | |
228 | + List<InventoryDetail> inventoryDetailList = listByIds(inventoryDetailIdList); | |
229 | + if (StringUtils.isEmpty(inventoryDetailList)) { | |
230 | + return Result.error("没有找到库存详情"); | |
231 | + } | |
232 | + List<InventoryDetail> inventoryDetailUpdateList = new ArrayList<>(); | |
233 | + for (InventoryDetail inventoryDetail : inventoryDetailList) { | |
234 | + InventoryDetail inventoryDetail1 = new InventoryDetail(); | |
235 | + inventoryDetail1.setId(inventoryDetail.getId()); | |
236 | + inventoryDetail1.setController(QuantityConstant.CONTROLLER_NOT_ENABLE); | |
237 | + inventoryDetailUpdateList.add(inventoryDetail1); | |
238 | + } | |
239 | + boolean success = updateBatchById(inventoryDetailUpdateList); | |
240 | + if (success) { | |
241 | + return Result.ok("批量释放受控库存成功"); | |
242 | + } | |
243 | + return Result.ok("批量释放受控库存失败"); | |
227 | 244 | } |
228 | 245 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/service/impl/ReceiveServiceImpl.java
... | ... | @@ -27,6 +27,8 @@ import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService |
27 | 27 | import org.jeecg.modules.wms.receipt.receiving.domain.Receive; |
28 | 28 | import org.jeecg.modules.wms.receipt.receiving.mapper.ReceiveMapper; |
29 | 29 | import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; |
30 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; | |
31 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; | |
30 | 32 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; |
31 | 33 | import org.jeecg.utils.StringUtils; |
32 | 34 | import org.jeecg.utils.constant.QuantityConstant; |
... | ... | @@ -75,6 +77,8 @@ public class ReceiveServiceImpl extends ServiceImpl<ReceiveMapper, Receive> impl |
75 | 77 | private IParameterConfigurationService parameterConfigurationService; |
76 | 78 | @Resource |
77 | 79 | private IReceiveService receiveService; |
80 | + @Resource | |
81 | + private IShipmentContainerHeaderService shipmentContainerHeaderService; | |
78 | 82 | |
79 | 83 | /** |
80 | 84 | * 组盘后自动生成任务,返回任务实体 |
... | ... | @@ -136,6 +140,10 @@ public class ReceiveServiceImpl extends ServiceImpl<ReceiveMapper, Receive> impl |
136 | 140 | if (containerType == null) { |
137 | 141 | return Result.error("入库组盘,容器类型为空" + containerCode); |
138 | 142 | } |
143 | + ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getUnCompleteShipmentContainerByCode(containerCode, warehouseCode); | |
144 | + if (shipmentContainerHeader != null) { | |
145 | + throw new JeecgBootException("入库组盘,容器" + containerCode + "不能有出库配盘"); | |
146 | + } | |
139 | 147 | int taskType = QuantityConstant.TASK_TYPE_WHOLERECEIPT; |
140 | 148 | String fromLocationCode = container.getLocationCode(); |
141 | 149 | if (StringUtils.isNotEmpty(fromLocationCode)) { |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/controller/ShipmentCombinationController.java
... | ... | @@ -112,7 +112,8 @@ public class ShipmentCombinationController { |
112 | 112 | @ResponseBody |
113 | 113 | public Result createShipmentTask(@RequestBody ShipmentContainerHeader shipmentContainerHeader, HttpServletRequest req) { |
114 | 114 | String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req); |
115 | - return huahengMultiHandlerService.createShipmentTask(shipmentContainerHeader, warehouseCode, 0, 0, 0); | |
115 | + Result result = huahengMultiHandlerService.createShipmentTask(shipmentContainerHeader, warehouseCode, 0, 0, 0); | |
116 | + return result; | |
116 | 117 | } |
117 | 118 | |
118 | 119 | /** |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/IShipmentCombinationService.java
... | ... | @@ -15,17 +15,17 @@ import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; |
15 | 15 | */ |
16 | 16 | public interface IShipmentCombinationService { |
17 | 17 | |
18 | - public List<InventoryDetail> getInventorys(ShipmentDetail shipmentDetail); | |
18 | + List<InventoryDetail> getInventorys(ShipmentDetail shipmentDetail); | |
19 | 19 | |
20 | - public Result autoCombination(String shipmentCode, String warehouseCode); | |
20 | + Result autoCombination(String shipmentCode, String warehouseCode); | |
21 | 21 | |
22 | - public Result createShipmentTask(ShipmentContainerHeader shipmentContainerHeader, String warehouseCode, long shipmentOrder, int sequence, int sequenceNumber); | |
22 | + Result createShipmentTask(ShipmentContainerHeader shipmentContainerHeader, String warehouseCode, long shipmentOrder, int sequence, int sequenceNumber); | |
23 | 23 | |
24 | - public Result getInventoryFromShipmentDetail(Integer shipmentDetailId); | |
24 | + Result getInventoryFromShipmentDetail(Integer shipmentDetailId); | |
25 | 25 | |
26 | - public Result combination(CombinationModel combinationModel); | |
26 | + Result combination(CombinationModel combinationModel); | |
27 | 27 | |
28 | - public Result autoCombinationDetail(ShipmentDetail shipmentDetail, BigDecimal shipQty); | |
28 | + Result autoCombinationDetail(ShipmentDetail shipmentDetail, BigDecimal shipQty); | |
29 | 29 | |
30 | 30 | ShipmentContainerHeader addShipmentContainerHeader(InventoryDetail inventoryDetail, ShipmentDetail shipmentDetail); |
31 | 31 | |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
... | ... | @@ -97,6 +97,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
97 | 97 | * @return |
98 | 98 | */ |
99 | 99 | @Override |
100 | + @Transactional(rollbackFor = JeecgBootException.class) | |
100 | 101 | public List<InventoryDetail> getInventorys(ShipmentDetail shipmentDetail) { |
101 | 102 | String warehouseCode = shipmentDetail.getWarehouseCode(); |
102 | 103 | String companyCode = shipmentDetail.getCompanyCode(); |
... | ... | @@ -116,7 +117,9 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
116 | 117 | } |
117 | 118 | LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); |
118 | 119 | inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getWarehouseCode, warehouseCode).eq(InventoryDetail::getCompanyCode, companyCode) |
119 | - .eq(InventoryDetail::getMaterialCode, materialCode).eq(InventoryDetail::getInventoryStatus, inventoryStatus); | |
120 | + .eq(InventoryDetail::getMaterialCode, materialCode).eq(InventoryDetail::getInventoryStatus, inventoryStatus) | |
121 | + .eq(InventoryDetail::getController, QuantityConstant.CONTROLLER_NOT_ENABLE) | |
122 | + .eq(InventoryDetail::getContainerStatus, QuantityConstant.STATUS_CONTAINER_EMPTY); | |
120 | 123 | List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper); |
121 | 124 | return inventoryDetailList; |
122 | 125 | } |
... | ... | @@ -169,7 +172,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
169 | 172 | if (shipQty != null) { |
170 | 173 | shipmentQty = shipQty; |
171 | 174 | } |
172 | - List<InventoryDetail> inventoryList = getInventorys(shipmentDetail); | |
175 | + List<InventoryDetail> inventoryList = shipmentCombinationService.getInventorys(shipmentDetail); | |
173 | 176 | // 去除已锁的库存 |
174 | 177 | ArrayList<InventoryDetail> removeInventoryList = new ArrayList<>(); |
175 | 178 | List<ReceiptContainerHeader> receiptContainerHeaderList = receiptContainerHeaderService.getUnCompleteCombineList(); |
... | ... | @@ -200,7 +203,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
200 | 203 | } |
201 | 204 | inventoryList.removeAll(removeInventoryList); |
202 | 205 | if (inventoryList.size() < 1) { |
203 | - return Result.error(shipmentDetail.getMaterialName() + "' 没有符合出库条件的库存"); | |
206 | + return Result.error(shipmentDetail.getMaterialName() + "没有符合出库条件的库存"); | |
204 | 207 | } |
205 | 208 | |
206 | 209 | for (InventoryDetail inventoryDetail : inventoryList) { |
... | ... | @@ -268,6 +271,10 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
268 | 271 | if (container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) { |
269 | 272 | return Result.error("配盘时, 容器已经锁定,不能再组盘"); |
270 | 273 | } |
274 | + ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getUnCompleteReceiptContainerByCode(containerCode, warehouseCode); | |
275 | + if (receiptContainerHeader != null) { | |
276 | + return Result.error("配盘时, 容器有入库组盘不能再组盘,容器编码" + containerCode); | |
277 | + } | |
271 | 278 | BigDecimal shipmentDetailQty = shipmentDetail.getQty(); |
272 | 279 | BigDecimal shipmentDetailTaskQty = shipmentDetail.getTaskQty(); |
273 | 280 | // 可出数量 |
... | ... | @@ -590,13 +597,14 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi |
590 | 597 | } |
591 | 598 | |
592 | 599 | @Override |
600 | + @Transactional(rollbackFor = JeecgBootException.class) | |
593 | 601 | public Result getInventoryFromShipmentDetail(Integer shipmentDetailId) { |
594 | 602 | ShipmentDetail shipmentDetail = shipmentDetailService.getById(shipmentDetailId); |
595 | 603 | if (shipmentDetail == null) { |
596 | 604 | return Result.error("找不到出库单详情"); |
597 | 605 | } |
598 | 606 | String warehouseCode = shipmentDetail.getWarehouseCode(); |
599 | - List<InventoryDetail> inventoryDetailList = getInventorys(shipmentDetail); | |
607 | + List<InventoryDetail> inventoryDetailList = shipmentCombinationService.getInventorys(shipmentDetail); | |
600 | 608 | if (inventoryDetailList.size() == 0) { |
601 | 609 | return Result.error("该物料没有库存或没有符合出库规则的库存"); |
602 | 610 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/stocktaking/cycleCountDetail/service/impl/CycleCountDetailServiceImpl.java
... | ... | @@ -18,6 +18,8 @@ import org.jeecg.modules.wms.config.material.service.impl.MaterialServiceImpl; |
18 | 18 | import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; |
19 | 19 | import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; |
20 | 20 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; |
21 | +import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; | |
22 | +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; | |
21 | 23 | import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetail; |
22 | 24 | import org.jeecg.modules.wms.stocktaking.cycleCountDetail.entity.CycleCountDetailChild; |
23 | 25 | import org.jeecg.modules.wms.stocktaking.cycleCountDetail.mapper.CycleCountDetailChildMapper; |
... | ... | @@ -73,6 +75,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
73 | 75 | private ContainerServiceImpl containerServiceImpl; |
74 | 76 | @Resource |
75 | 77 | private IParameterConfigurationService parameterConfigurationService; |
78 | + @Resource | |
79 | + private IReceiptContainerHeaderService receiptContainerHeaderService; | |
80 | + @Resource | |
81 | + private IShipmentContainerHeaderService shipmentContainerHeaderService; | |
76 | 82 | |
77 | 83 | @Override |
78 | 84 | @Transactional |
... | ... | @@ -224,6 +230,14 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
224 | 230 | if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) { |
225 | 231 | toLocationCode = fromLocationCode; |
226 | 232 | } |
233 | + // 校验入库组盘 | |
234 | + if (receiptContainerHeaderService.havaUnCompleteCombineByContainerCode(containerCode, warehouseCode)) { | |
235 | + return Result.error("创建出盘点任务时,容器:" + containerCode + "存在入库组盘,不能移库"); | |
236 | + } | |
237 | + // 校验出库组盘 | |
238 | + if (shipmentContainerHeaderService.havaUnCompleteCombineByContainerCode(containerCode, warehouseCode)) { | |
239 | + return Result.error("创建出盘点任务时, 容器:" + containerCode + "存在出库组盘,不能移库"); | |
240 | + } | |
227 | 241 | Result result = taskHeaderService.createTaskLockContainerAndLocation(QuantityConstant.TASK_TYPE_CYCLECOUNT, containerCode, fromLocationCode, toLocationCode, |
228 | 242 | warehouseCode); |
229 | 243 | if (!result.isSuccess()) { |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
... | ... | @@ -62,7 +62,6 @@ import org.jeecg.utils.StringUtils; |
62 | 62 | import org.jeecg.utils.constant.QuantityConstant; |
63 | 63 | import org.springframework.beans.factory.annotation.Autowired; |
64 | 64 | import org.springframework.stereotype.Service; |
65 | -import org.springframework.transaction.annotation.Propagation; | |
66 | 65 | import org.springframework.transaction.annotation.Transactional; |
67 | 66 | |
68 | 67 | import com.alibaba.fastjson.JSON; |
... | ... | @@ -298,6 +297,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
298 | 297 | if (container == null) { |
299 | 298 | return Result.error("创建出库查看任务时,容器为空"); |
300 | 299 | } |
300 | + // 校验入库组盘 | |
301 | + if (receiptContainerHeaderService.havaUnCompleteCombineByContainerCode(containerCode, warehouseCode)) { | |
302 | + return Result.error("创建出库查看任务时,容器:" + containerCode + "存在入库组盘,不能移库"); | |
303 | + } | |
304 | + // 校验出库组盘 | |
305 | + if (shipmentContainerHeaderService.havaUnCompleteCombineByContainerCode(containerCode, warehouseCode)) { | |
306 | + return Result.error("创建出库查看任务时, 容器:" + containerCode + "存在出库组盘,不能移库"); | |
307 | + } | |
301 | 308 | String fromLocationCode = container.getLocationCode(); |
302 | 309 | String toLocationCode = QuantityConstant.EMPTY_STRING; |
303 | 310 | String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION); |
... | ... |