| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.model.DetlDto; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private MatService matService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 9.入库完成 |
| | |
| | | exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); |
| | | } |
| | | log.info("工作号:" + wrkMast.getWrkNo() + ",托盘码:" + wrkMast.getBarcode() + ",工作档明细列表:" + JSON.toJSONString(wrkDetls53)); |
| | | |
| | | // 去重 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | String zpallet = wrkDetls53.get(0).getZpallet(); |
| | | for (WrkDetl wrkDetl : wrkDetls53) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getSuppCode()); |
| | | if (null != locDetl) { |
| | | log.info("工作号:" + wrkMast.getWrkNo() + ",托盘码:" + wrkMast.getBarcode() + ",工作档明细:" + JSON.toJSONString(wrkDetl) + ",库存明细:" + JSON.toJSONString(locDetl)); |
| | | if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), |
| | | locMast.getLocNo(), |
| | | wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(), |
| | | wrkDetl.getSuppCode(), |
| | | wrkDetl.getThreeCode(), |
| | | wrkDetl.getDeadTime())) { |
| | | exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | } |
| | | DetlDto detlDto = new DetlDto(wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme(), wrkDetl.getThreeCode(), wrkDetl.getDeadTime(),wrkDetl.getSuppCode()); |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode()); |
| | | assert one != null; |
| | | //当前剩余库存 - 当前作业数量 |
| | | one.setAnfme(one.getAnfme() - detlDto.getAnfme()); |
| | | } else { |
| | | //新增的时候算出当前剩余库存 stock为总库存- 当前wrkdetl作业数量 |
| | | detlDto.setAnfme(wrkDetl.getStock() - detlDto.getAnfme()); |
| | | detlDtos.add(detlDto); |
| | | } |
| | | |
| | | // double anfme = wrkDetl.getStock() - wrkDetl.getAnfme(); |
| | | // if (anfme <= 0) {//库存 - 作业数量 <= 0 清掉该数据 |
| | | // continue; |
| | | // } |
| | | // |
| | | // LocDetl locDetl = new LocDetl(); |
| | | // locDetl.sync(wrkDetl); |
| | | // locDetl.setLocNo(wrkMast.getLocNo()); |
| | | // locDetl.setAnfme(anfme); |
| | | // locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | // locDetl.setAppeTime(now); |
| | | // locDetl.setAppeUser(9527L); |
| | | // locDetl.setModiTime(now); |
| | | // locDetl.setModiUser(9527L); |
| | | // if (!locDetlService.insert(locDetl)) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | // } |
| | | |
| | | // LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getSuppCode()); |
| | | // if (null != locDetl) { |
| | | // log.info("工作号:" + wrkMast.getWrkNo() + ",托盘码:" + wrkMast.getBarcode() + ",工作档明细:" + JSON.toJSONString(wrkDetl) + ",库存明细:" + JSON.toJSONString(locDetl)); |
| | | // if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), |
| | | // locMast.getLocNo(), |
| | | // wrkDetl.getMatnr(), |
| | | // wrkDetl.getBatch(), |
| | | // wrkDetl.getSuppCode(), |
| | | // wrkDetl.getThreeCode(), |
| | | // wrkDetl.getDeadTime())) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | for (DetlDto detlDto : detlDtos) { |
| | | Mat mat = matService.selectByMatnr(detlDto.getMatnr()); |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); |
| | | } |
| | | LocDetl locDetl = new LocDetl(); |
| | | locDetl.sync(mat); |
| | | locDetl.setLocNo(wrkMast.getLocNo()); |
| | | locDetl.setAnfme(detlDto.getAnfme()); |
| | | locDetl.setZpallet(zpallet); // 托盘条码 |
| | | locDetl.setSuppCode(detlDto.getContainerCode());// 料箱码 |
| | | locDetl.setBatch(detlDto.getBatch()); // 批号 |
| | | locDetl.setThreeCode(detlDto.getCsocode()); |
| | | locDetl.setDeadTime(detlDto.getIsoseq()); |
| | | locDetl.setAppeTime(now); |
| | | locDetl.setAppeUser(9527L); |
| | | locDetl.setModiTime(now); |
| | | locDetl.setModiUser(9527L); |
| | | |
| | | locDetlService.insert(locDetl); |
| | | } |
| | | |
| | | |
| | | // 修改库位状态 Q ====>> F |
| | | if (locMast.getLocSts().equals("Q")) { |
| | | locMast.setLocSts("F"); |
| | |
| | | if (!locMastService.updateById(locMast)) { |
| | | exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | } |
| | | |
| | | List<LocDetl> locDetls1 = locDetlService.selectByLocNo(locMast.getLocNo()); |
| | | log.info("工作号:" + wrkMast.getWrkNo() + ",托盘码:" + wrkMast.getBarcode() + ",修改库位状态Q=>F成功,库存明细:" + JSON.toJSONString(locDetls1)); |
| | | } |
| | | |
| | | //清空源库位数据 P ====>> O |
| | | LocMast locMast1 = locMastService.selectByLoc(wrkMast.getSourceLocNo()); |
| | | if (locMast1.getLocSts().equals("P")) { |
| | | locMast1.setLocSts("O"); // 清空库位 |
| | | locMast1.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast1)) { |
| | | throw new CoolException("改变库位状态失败"); |
| | | } |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no",locMast1.getLocNo())); |
| | | } else { |
| | | throw new CoolException("源库位状态异常"); |
| | | } |
| | | |
| | | break; |
| | | // 并板入库 |
| | | case 54: |
| | |
| | | if (!locMastService.updateById(sourceLoc)) { |
| | | exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | } |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no",locMast.getLocNo())); |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | locMast.setLocSts(locSts); |
| | |
| | | if (!locMastService.updateById(locMast)) { |
| | | exceptionHandle("盘点出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | } |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no",locMast.getLocNo())); |
| | | } |
| | | return SUCCESS;//盘点只处理库存数据不改变工作档状态 |
| | | // 空板出库 |