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 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&lt;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&lt;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 }
... ...