Commit af8877b2e49de67ef0d6e6001e3eac5a15773f98

Authored by pengcheng
2 parents 67a29b80 5b0d1232

Merge branch 'develop' of http://172.16.29.40:8010/wms/wms2 into develop

src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
@@ -175,8 +175,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap @@ -175,8 +175,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
175 @Override 175 @Override
176 @Transactional 176 @Transactional
177 public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId) { 177 public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId) {
178 - /*任务主表中存在库位,在盘点明细中生成任务时,不同的库位生成不同的主任务*/  
179 - 178 + /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/
  179 + //在盘点单生成任务并执行后,同一容器的物料仍然可以生成任务,否则任务已完成则无法添加任务100
  180 + //检查状态不为100的任务,在有和下发的盘点单容器相同的任务时,把该条明细的任务写入到当前相同容器的任务里
180 181
181 CycleCountDetail cycleCountDetail = this.getById(cycleCoutdetailId); 182 CycleCountDetail cycleCountDetail = this.getById(cycleCoutdetailId);
182 if(cycleCountDetail == null ){ 183 if(cycleCountDetail == null ){
@@ -193,29 +194,67 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap @@ -193,29 +194,67 @@ public class CycleCountDetailServiceImpl extends ServiceImpl<CycleCountDetailMap
193 if(StringUtils.isEmpty(loc.getContainerCode())){ 194 if(StringUtils.isEmpty(loc.getContainerCode())){
194 return AjaxResult.error(cycleCountDetail.getLocationCode()+"没有托盘,操作失败"); 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 TaskHeader task = new TaskHeader(); 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 }else{ 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 taskDetail.setBillCode(cycleCountDetail.getCycleCountHeadCode()); 258 taskDetail.setBillCode(cycleCountDetail.getCycleCountHeadCode());
220 taskDetail.setBillDetailId(cycleCountDetail.getId()); 259 taskDetail.setBillDetailId(cycleCountDetail.getId());
221 taskDetail.setMaterialCode(cycleCountDetail.getMaterialCode()); 260 taskDetail.setMaterialCode(cycleCountDetail.getMaterialCode());
@@ -226,26 +265,23 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -226,26 +265,23 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
226 taskDetail.setFromInventoryId(cycleCountDetail.getInventoryDetailId()); 265 taskDetail.setFromInventoryId(cycleCountDetail.getInventoryDetailId());
227 taskDetail.setLot(cycleCountDetail.getLot()); 266 taskDetail.setLot(cycleCountDetail.getLot());
228 taskDetail.setProjectNo(cycleCountDetail.getProjectNo()); 267 taskDetail.setProjectNo(cycleCountDetail.getProjectNo());
229 - taskDetail.setInternalTaskType(task.getTaskType());  
230 - taskDetail.setWarehouseCode(task.getWarehouseCode());  
231 taskDetail.setCompanyCode(cycleCountDetail.getCompanyCode()); 268 taskDetail.setCompanyCode(cycleCountDetail.getCompanyCode());
232 - taskDetail.setFromLocation(task.getFromLocation());  
233 - taskDetail.setToLocation(task.getToLocation());  
234 - taskDetail.setContainerCode(task.getContainerCode());  
235 taskDetail.setCreated(new Date()); 269 taskDetail.setCreated(new Date());
236 taskDetail.setCreatedBy(ShiroUtils.getLoginName()); 270 taskDetail.setCreatedBy(ShiroUtils.getLoginName());
237 taskDetail.setLastUpdated(new Date()); 271 taskDetail.setLastUpdated(new Date());
238 taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); 272 taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
239 if(taskDetailService.save(taskDetail) == false){ 273 if(taskDetailService.save(taskDetail) == false){
240 throw new ServiceException("盘点任务明细生成失败!"); 274 throw new ServiceException("盘点任务明细生成失败!");
241 - } 275 + }
  276 +
242 //修改细单状态 277 //修改细单状态
243 cycleCountDetail.setTaskHeaderId(taskDetail.getId()); 278 cycleCountDetail.setTaskHeaderId(taskDetail.getId());
244 - cycleCountDetail.setTaskHeaderId(task.getId()); 279 + //cycleCountDetail.setTaskHeaderId(task.getId());
245 cycleCountDetail.setLastUpdated(new Date()); 280 cycleCountDetail.setLastUpdated(new Date());
246 cycleCountDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); 281 cycleCountDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
247 cycleCountDetail.setEnableStatus(5); 282 cycleCountDetail.setEnableStatus(5);
248 this.saveOrUpdate(cycleCountDetail); 283 this.saveOrUpdate(cycleCountDetail);
  284 +
249 //修改主单状态 285 //修改主单状态
250 CycleCountHeader cycleCountHeader = new CycleCountHeader(); 286 CycleCountHeader cycleCountHeader = new CycleCountHeader();
251 cycleCountHeader.setCode(cycleCountDetail.getCycleCountHeadCode()); 287 cycleCountHeader.setCode(cycleCountDetail.getCycleCountHeadCode());
@@ -253,7 +289,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -253,7 +289,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
253 cycleCountHeader.setCompanyCode(cycleCountDetail.getCompanyCode()); 289 cycleCountHeader.setCompanyCode(cycleCountDetail.getCompanyCode());
254 LambdaQueryWrapper<CycleCountHeader> lamb = Wrappers.lambdaQuery(cycleCountHeader); 290 LambdaQueryWrapper<CycleCountHeader> lamb = Wrappers.lambdaQuery(cycleCountHeader);
255 cycleCountHeader = cycleCountHeaderService.getOne(lamb); 291 cycleCountHeader = cycleCountHeaderService.getOne(lamb);
256 - cycleCountHeader.setStatusCyc(10); 292 + cycleCountHeader.setStatusCyc(5);
257 cycleCountHeaderService.saveOrUpdate(cycleCountHeader); 293 cycleCountHeaderService.saveOrUpdate(cycleCountHeader);
258 return AjaxResult.success("盘点任务生成成功"); 294 return AjaxResult.success("盘点任务生成成功");
259 } 295 }