Commit 0e5c43977494f3bd4283544b7a0f0f21537934f6

Authored by 肖超群
1 parent 3b4dda90

曾加受控库存

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 &#39;@/utils/mixin&#39;
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&lt;InventoryDetail&gt; {
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&lt;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&lt;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&lt;ReceiveMapper, Receive&gt; 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&lt;ReceiveMapper, Receive&gt; 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&lt;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&lt;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&lt;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);
... ...