Commit af8877b2e49de67ef0d6e6001e3eac5a15773f98
Merge branch 'develop' of http://172.16.29.40:8010/wms/wms2 into develop
Showing
1 changed file
with
66 additions
and
30 deletions
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
... | ... | @@ -175,8 +175,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
175 | 175 | @Override |
176 | 176 | @Transactional |
177 | 177 | public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId) { |
178 | - /*任务主表中存在库位,在盘点明细中生成任务时,不同的库位生成不同的主任务*/ | |
179 | - | |
178 | + /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/ | |
179 | + //在盘点单生成任务并执行后,同一容器的物料仍然可以生成任务,否则任务已完成则无法添加任务100 | |
180 | + //检查状态不为100的任务,在有和下发的盘点单容器相同的任务时,把该条明细的任务写入到当前相同容器的任务里 | |
180 | 181 | |
181 | 182 | CycleCountDetail cycleCountDetail = this.getById(cycleCoutdetailId); |
182 | 183 | if(cycleCountDetail == null ){ |
... | ... | @@ -193,29 +194,67 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
193 | 194 | if(StringUtils.isEmpty(loc.getContainerCode())){ |
194 | 195 | return AjaxResult.error(cycleCountDetail.getLocationCode()+"没有托盘,操作失败"); |
195 | 196 | } |
197 | + | |
198 | + //查询任务头和明细有相同容器,没有就新增任务头和明细 | |
199 | + | |
200 | + LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
201 | + taskHeaderLambdaQueryWrapper | |
202 | + .lt(TaskHeader::getStatus,100) | |
203 | + .eq(TaskHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) | |
204 | + .eq(TaskHeader::getCompanyCode,cycleCountDetail.getCompanyCode()) | |
205 | + .eq(TaskHeader::getInternalTaskType,700) | |
206 | + .eq(TaskHeader::getTaskType,700) | |
207 | + .eq(TaskHeader::getContainerCode,cycleCountDetail.getContainerCode());//容器 | |
208 | + List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper); | |
209 | + | |
210 | + TaskHeader taskHeader = new TaskHeader(); | |
196 | 211 | TaskHeader task = new TaskHeader(); |
197 | - task.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
198 | - task.setCompanyCode(cycleCountDetail.getCompanyCode()); | |
199 | - task.setInternalTaskType(700); | |
200 | - task.setTaskType(700); | |
201 | - task.setContainerCode(cycleCountDetail.getContainerCode()); | |
202 | - task.setStatus(0); | |
203 | - task.setFromLocation(cycleCountDetail.getLocationCode()); | |
204 | - task.setToLocation(cycleCountDetail.getLocationCode()); | |
205 | - task.setCreated(new Date()); | |
206 | - task.setCreatedBy(ShiroUtils.getLoginName()); | |
207 | - task.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
208 | - task.setLastUpdated(new Date()); | |
209 | - if(taskHeaderService.save(task)){ | |
210 | - //锁定库位状态 | |
211 | - locationService.updateStatus(loc.getContainerCode(),"lock"); | |
212 | + TaskDetail taskDetail = new TaskDetail(); | |
213 | + | |
214 | + if(taskHeaderList == null){ | |
215 | + | |
216 | + //存在相同容器的主任务直接加入该条主任务的明细 | |
217 | + task.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
218 | + task.setCompanyCode(cycleCountDetail.getCompanyCode()); | |
219 | + task.setInternalTaskType(700); | |
220 | + task.setTaskType(700); | |
221 | + task.setContainerCode(cycleCountDetail.getContainerCode()); | |
222 | + task.setStatus(0); | |
223 | + task.setFromLocation(cycleCountDetail.getLocationCode()); | |
224 | + task.setToLocation(cycleCountDetail.getLocationCode()); | |
225 | + task.setCreated(new Date()); | |
226 | + task.setCreatedBy(ShiroUtils.getLoginName()); | |
227 | + task.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
228 | + task.setLastUpdated(new Date()); | |
229 | + if(taskHeaderService.save(task)){ | |
230 | + //锁定库位状态 | |
231 | + locationService.updateStatus(loc.getContainerCode(),"lock"); | |
232 | + }else{ | |
233 | + throw new ServiceException("盘点任务主表生成失败!"); | |
234 | + } | |
235 | + //写入任务细表 | |
236 | + taskDetail.setTaskId(task.getId());//主单ID | |
237 | + taskDetail.setTaskType(task.getTaskType()); | |
238 | + taskDetail.setFromLocation(task.getFromLocation()); | |
239 | + taskDetail.setToLocation(task.getToLocation()); | |
240 | + taskDetail.setContainerCode(task.getContainerCode()); | |
241 | + taskDetail.setInternalTaskType(task.getTaskType()); | |
242 | + taskDetail.setWarehouseCode(task.getWarehouseCode()); | |
243 | + cycleCountDetail.setTaskHeaderId(task.getId()); //盘点明细修改状态task数据源 | |
212 | 244 | }else{ |
213 | - throw new ServiceException("盘点任务主表生成失败!"); | |
245 | + | |
246 | + //取其中一条主单即可 | |
247 | + taskHeader = taskHeaderList.get(0); | |
248 | + taskDetail.setTaskId(taskHeader.getId());//主单ID | |
249 | + taskDetail.setTaskType(taskHeader.getTaskType()); | |
250 | + taskDetail.setFromLocation(taskHeader.getFromLocation()); | |
251 | + taskDetail.setToLocation(taskHeader.getToLocation()); | |
252 | + taskDetail.setContainerCode(taskHeader.getContainerCode()); | |
253 | + taskDetail.setInternalTaskType(taskHeader.getTaskType()); | |
254 | + taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); | |
255 | + cycleCountDetail.setTaskHeaderId(taskHeader.getId());//盘点明细修改状态taskHeader数据源 | |
214 | 256 | } |
215 | - //写入任务细表 | |
216 | - TaskDetail taskDetail = new TaskDetail(); | |
217 | - taskDetail.setTaskId(task.getId());//主单ID | |
218 | - taskDetail.setTaskType(task.getTaskType()); | |
257 | + | |
219 | 258 | taskDetail.setBillCode(cycleCountDetail.getCycleCountHeadCode()); |
220 | 259 | taskDetail.setBillDetailId(cycleCountDetail.getId()); |
221 | 260 | taskDetail.setMaterialCode(cycleCountDetail.getMaterialCode()); |
... | ... | @@ -226,26 +265,23 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
226 | 265 | taskDetail.setFromInventoryId(cycleCountDetail.getInventoryDetailId()); |
227 | 266 | taskDetail.setLot(cycleCountDetail.getLot()); |
228 | 267 | taskDetail.setProjectNo(cycleCountDetail.getProjectNo()); |
229 | - taskDetail.setInternalTaskType(task.getTaskType()); | |
230 | - taskDetail.setWarehouseCode(task.getWarehouseCode()); | |
231 | 268 | taskDetail.setCompanyCode(cycleCountDetail.getCompanyCode()); |
232 | - taskDetail.setFromLocation(task.getFromLocation()); | |
233 | - taskDetail.setToLocation(task.getToLocation()); | |
234 | - taskDetail.setContainerCode(task.getContainerCode()); | |
235 | 269 | taskDetail.setCreated(new Date()); |
236 | 270 | taskDetail.setCreatedBy(ShiroUtils.getLoginName()); |
237 | 271 | taskDetail.setLastUpdated(new Date()); |
238 | 272 | taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); |
239 | 273 | if(taskDetailService.save(taskDetail) == false){ |
240 | 274 | throw new ServiceException("盘点任务明细生成失败!"); |
241 | - } | |
275 | + } | |
276 | + | |
242 | 277 | //修改细单状态 |
243 | 278 | cycleCountDetail.setTaskHeaderId(taskDetail.getId()); |
244 | - cycleCountDetail.setTaskHeaderId(task.getId()); | |
279 | + //cycleCountDetail.setTaskHeaderId(task.getId()); | |
245 | 280 | cycleCountDetail.setLastUpdated(new Date()); |
246 | 281 | cycleCountDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); |
247 | 282 | cycleCountDetail.setEnableStatus(5); |
248 | 283 | this.saveOrUpdate(cycleCountDetail); |
284 | + | |
249 | 285 | //修改主单状态 |
250 | 286 | CycleCountHeader cycleCountHeader = new CycleCountHeader(); |
251 | 287 | cycleCountHeader.setCode(cycleCountDetail.getCycleCountHeadCode()); |
... | ... | @@ -253,7 +289,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap |
253 | 289 | cycleCountHeader.setCompanyCode(cycleCountDetail.getCompanyCode()); |
254 | 290 | LambdaQueryWrapper<CycleCountHeader> lamb = Wrappers.lambdaQuery(cycleCountHeader); |
255 | 291 | cycleCountHeader = cycleCountHeaderService.getOne(lamb); |
256 | - cycleCountHeader.setStatusCyc(10); | |
292 | + cycleCountHeader.setStatusCyc(5); | |
257 | 293 | cycleCountHeaderService.saveOrUpdate(cycleCountHeader); |
258 | 294 | return AjaxResult.success("盘点任务生成成功"); |
259 | 295 | } |
... | ... |