| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | |
| | | AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false); |
| | | //生成工作档明细 |
| | | taskDto.getLocDtos().forEach(locDto -> { |
| | | //明细档所需参数 |
| | | createWrkDetlReWrite(locDto.getMatnr(), |
| | | wrkMast.getWrkNo(), |
| | | locDto.getOrderNo(), |
| | | locDto.getBatch(), |
| | | locDto.getAnfme(), |
| | | locDto.getContainerCode(), |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | if (!BaseController.isJSON(locDto.getOrderNo())) { |
| | | //明细档所需参数 |
| | | createWrkDetlReWrite(locDto.getMatnr(), |
| | | wrkMast.getWrkNo(), |
| | | locDto.getOrderNo(), |
| | | locDto.getBatch(), |
| | | locDto.getAnfme(), |
| | | locDto.getContainerCode(), |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | }else { |
| | | List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); |
| | | orderDtoList.forEach(orderDto -> { |
| | | //明细档所需参数 |
| | | createWrkDetlReWrite(locDto.getMatnr(), |
| | | wrkMast.getWrkNo(), |
| | | orderDto.getOrderNo(), |
| | | locDto.getBatch(), |
| | | orderDto.getAnfme(), |
| | | locDto.getContainerCode(), |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | }); |
| | | } |
| | | |
| | | //修改订单信息 |
| | | modifyOrderDetl(locDto, userId); |
| | |
| | | //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); |
| | | //修改库存信息 |
| | | agvWrkDetlList.forEach(agvWrkDetl -> { |
| | | if(agvWrkDetl.getAnfme() <= 0){ |
| | | return; |
| | | } |
| | | |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); |
| | | |
| | | //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | |
| | | double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); |
| | | agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | }); |
| | |
| | | @Transactional |
| | | public void locCheckOut(StockOutParam param, Long userId) { |
| | | String station = param.getStation(); |
| | | // List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | // .eq("station_code", station) |
| | | // .eq("loc_sts","O")); |
| | | // |
| | | // if(param.getLocDetls().size() > agvBasDevpList.size()){ |
| | | // throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | // } |
| | | |
| | | List<TaskDto> taskDtos = new ArrayList<>(); |
| | | param.getLocDetls().forEach(locDetl -> { |
| | |
| | | |
| | | Date now = new Date(); |
| | | taskDtos.forEach(taskDto -> { |
| | | |
| | | //判断是否有重复料想的工作当 |
| | | AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode()); |
| | | if(!Cools.isEmpty(agvWrkMastList)){ |
| | | return; |
| | | } |
| | | |
| | | //生成工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); |
| | | //生成工作档明细 |
| | |
| | | //locSts = ioType == 101 ? "S" : "Q"; |
| | | updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); |
| | | }); |
| | | |
| | | |
| | | // param.getLocDetls().forEach(locDetl -> { |
| | | // AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); |
| | | // AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); |
| | | // AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | // .eq("station_code", station) |
| | | // .eq("loc_sts","O")); |
| | | // Date now = new Date(); |
| | | // |
| | | // //生成工作党 |
| | | // AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); |
| | | // //生成工作明细档 |
| | | // createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | // //修改库位信息 |
| | | // updateAgvLocMast(agvLocMast,"P"); |
| | | // //修改站点信息 |
| | | // updateAgvBasDevp(agvBasDevp,"S"); |
| | | // |
| | | // }); |
| | | |
| | | } |
| | | |
| | |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | throw new CoolException(workNo+"工作档不存在"); |
| | | } |
| | | |
| | | if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){ |
| | | throw new CoolException("目标库位或者源库位暂未分配,无法取消"); |
| | | } |
| | | //修改AGV工作档的工作状态为205.工作完成 |
| | | agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205); |
| | | |
| | |
| | | agvWrkDetlList1.forEach(agvWrkDetl -> { |
| | | |
| | | if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){ |
| | | OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); |
| | | orderDetlService.updateById(orderDetl); |
| | | String orderNo = agvWrkDetl.getOrderNo(); |
| | | if(orderNo.contains("{")){ |
| | | JSONArray orderArray = JSON.parseArray(orderNo); |
| | | for (Object o : orderArray){ |
| | | JSONObject jsonobject = (JSONObject) o; |
| | | OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); |
| | | orderDetlService.updateById(orderDetl); |
| | | } |
| | | |
| | | }else { |
| | | OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); |
| | | orderDetlService.updateById(orderDetl); |
| | | } |
| | | } |
| | | }); |
| | | |
| | |
| | | if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){ |
| | | throw new CoolException("删除失败,请联系管理员"); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void changeToOutWrkMast(String workNo, Long userId) { |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectById(workNo); |
| | | if (Cools.isEmpty(agvWrkMast)){ |
| | | throw new CoolException(workNo+"工作档不存在"); |
| | | } |
| | | |
| | | agvWrkMast.setIoType(101); |
| | | agvWrkMast.setWrkSts(206L); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMast.setModiUser(userId); |
| | | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | |
| | | } |
| | | |
| | |
| | | orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); |
| | | } |
| | | |
| | | if(locAnfme > orderDetl.getAnfme()){ |
| | | orderAnfme = orderDetl.getAnfme(); |
| | | orderAnfme = orderDetl.getAnfme() - orderDetl.getQty(); |
| | | |
| | | if(locAnfme > orderAnfme){ |
| | | locAnfme -= orderAnfme; |
| | | }else { |
| | | orderAnfme = locAnfme; |