| | |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.KeyValVo; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams; |
| | | import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; |
| | | import com.vincent.rsf.server.manager.entity.BasStation; |
| | | import com.vincent.rsf.server.manager.entity.TaskItem; |
| | | import com.vincent.rsf.server.manager.entity.WaitPakin; |
| | | import com.vincent.rsf.server.manager.entity.WaitPakinItem; |
| | | import com.vincent.rsf.server.manager.service.TaskItemService; |
| | | import com.vincent.rsf.server.manager.service.TaskService; |
| | | import com.vincent.rsf.server.manager.service.WaitPakinItemService; |
| | | import com.vincent.rsf.server.manager.service.WaitPakinService; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | private WaitPakinItemService waitPakinItemService; |
| | | |
| | | @Autowired |
| | | private BasStationService basStationService; |
| | | |
| | | @Autowired |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private TaskItemService taskItemService; |
| | |
| | | @PostMapping("/waitPakin/page") |
| | | public R page(@RequestBody Map<String, Object> map) { |
| | | BaseParam baseParam = buildParam(map, BaseParam.class); |
| | | // 单据组托按单号查询:单号在明细表 asn_code,从 map 取出并移除,避免主表无此字段报错 |
| | | String asnCode = null; |
| | | if (baseParam.getMap() != null && baseParam.getMap().containsKey("asnCode")) { |
| | | Object v = baseParam.getMap().get("asnCode"); |
| | | if (v != null && StringUtils.isNotBlank(v.toString())) { |
| | | asnCode = v.toString().trim(); |
| | | } |
| | | baseParam.getMap().remove("asnCode"); |
| | | } |
| | | PageParam<WaitPakin, BaseParam> pageParam = new PageParam<>(baseParam, WaitPakin.class); |
| | | return R.ok().add(waitPakinService.page(pageParam, pageParam.buildWrapper(true))); |
| | | com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<WaitPakin> qw = pageParam.buildWrapper(true); |
| | | if (StringUtils.isNotBlank(asnCode)) { |
| | | List<Long> pakinIds = waitPakinItemService.list( |
| | | new LambdaQueryWrapper<WaitPakinItem>() |
| | | .select(WaitPakinItem::getPakinId) |
| | | .like(WaitPakinItem::getAsnCode, asnCode)) |
| | | .stream().map(WaitPakinItem::getPakinId).distinct().collect(Collectors.toList()); |
| | | if (pakinIds.isEmpty()) { |
| | | qw.and(w -> w.apply("1 = 0")); |
| | | } else { |
| | | qw.in("id", pakinIds); |
| | | } |
| | | } |
| | | Page<WaitPakin> page = waitPakinService.page(pageParam, qw); |
| | | fillAsnCodes(page.getRecords()); |
| | | return R.ok().add(page); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | @PostMapping("/waitPakin/list") |
| | | public R list(@RequestBody Map<String, Object> map) { |
| | | return R.ok().add(waitPakinService.list()); |
| | | List<WaitPakin> list = waitPakinService.list(); |
| | | fillAsnCodes(list); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | @PostMapping({"/waitPakin/many/{ids}", "/waitPakins/many/{ids}"}) |
| | | public R many(@PathVariable Long[] ids) { |
| | | return R.ok().add(waitPakinService.listByIds(Arrays.asList(ids))); |
| | | List<WaitPakin> list = waitPakinService.listByIds(Arrays.asList(ids)); |
| | | fillAsnCodes(list); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | @GetMapping("/waitPakin/{id}") |
| | | public R get(@PathVariable("id") Long id) { |
| | | return R.ok().add(waitPakinService.getById(id)); |
| | | WaitPakin one = waitPakinService.getById(id); |
| | | if (one != null) { |
| | | fillAsnCodes(Collections.singletonList(one)); |
| | | } |
| | | return R.ok().add(one); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:save')") |
| | |
| | | @PostMapping("/waitPakin/remove/{ids}") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R remove(@PathVariable Long[] ids) { |
| | | List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>() |
| | | .in(WaitPakinItem::getPakinId, ids)); |
| | | if (!pakinItems.isEmpty()) { |
| | | List<Long> list = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList()); |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getSource, list)); |
| | | if (!taskItems.isEmpty()) { |
| | | return R.error("组拖档有明细任务"); |
| | | if (Arrays.asList(ids).isEmpty()) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | for (Long id : ids) { |
| | | WaitPakin waitPakin = waitPakinService.getById(id); |
| | | BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | .eq(BasStation::getBarcode, waitPakin.getBarcode()) |
| | | ,false |
| | | ); |
| | | if (!Cools.isEmpty(isBarcodeSta)){ |
| | | throw new CoolException("该条码已被"+isBarcodeSta.getStationName()+"站绑定"); |
| | | } |
| | | } |
| | | if (!waitPakinService.removeByIds(Arrays.asList(ids))) { |
| | | return R.error("Delete Fail"); |
| | | } |
| | | if (!waitPakinItemService.removeByIds(pakinItems)) { |
| | | throw new CoolException("明细删除失败!!"); |
| | | } |
| | | return R.ok("Delete Success").add(ids); |
| | | return waitPakinService.removePakin(Arrays.asList(ids)); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | @PostMapping("/waitPakin/export") |
| | | public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { |
| | | ExcelUtil.build(ExcelUtil.create(waitPakinService.list(), WaitPakin.class), response); |
| | | List<WaitPakin> list = waitPakinService.list(); |
| | | fillAsnCodes(list); |
| | | ExcelUtil.build(ExcelUtil.create(list, WaitPakin.class), response); |
| | | } |
| | | |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:update')") |
| | | @ApiOperation("生成任务列表") |
| | | @PostMapping("/waitPakin/merge") |
| | | public R generateTask(@RequestBody List<WaitPakin> waitPakin) { |
| | | if (Objects.isNull(waitPakin) || waitPakin.isEmpty()) { |
| | | public R generateTask(@RequestBody GenerateTaskParams taskParams) { |
| | | if (Objects.isNull(taskParams)) { |
| | | throw new CoolException("参数不能为空!!"); |
| | | } |
| | | return taskService.generateTasks(waitPakin, getLoginUserId()); |
| | | if (Objects.isNull(taskParams.getWaitPakins()) || taskParams.getWaitPakins().isEmpty()) { |
| | | throw new CoolException("组拖档不能为空!!"); |
| | | } |
| | | return taskService.generateTasks(taskParams, getLoginUserId()); |
| | | } |
| | | |
| | | /** |
| | | * 根据组托明细填充主档的关联入库通知单号(asnCodes),多个单号逗号分隔 |
| | | */ |
| | | private void fillAsnCodes(List<WaitPakin> list) { |
| | | if (list == null || list.isEmpty()) { |
| | | return; |
| | | } |
| | | List<Long> pakinIds = list.stream().map(WaitPakin::getId).collect(Collectors.toList()); |
| | | List<WaitPakinItem> items = waitPakinItemService.list( |
| | | new LambdaQueryWrapper<WaitPakinItem>() |
| | | .in(WaitPakinItem::getPakinId, pakinIds) |
| | | .select(WaitPakinItem::getPakinId, WaitPakinItem::getAsnCode)); |
| | | Map<Long, String> asnCodesByPakinId = pakinIds.stream().collect(Collectors.toMap( |
| | | pid -> pid, |
| | | pid -> items.stream() |
| | | .filter(i -> pid.equals(i.getPakinId()) && i.getAsnCode() != null && !i.getAsnCode().trim().isEmpty()) |
| | | .map(WaitPakinItem::getAsnCode) |
| | | .distinct() |
| | | .collect(Collectors.joining(",")))); |
| | | for (WaitPakin p : list) { |
| | | p.setAsnCodes(asnCodesByPakinId.get(p.getId())); |
| | | } |
| | | } |
| | | |
| | | } |