From 1eb8972a6a9416c42644ac15a246667f073391dd Mon Sep 17 00:00:00 2001 From: FOAM <491460741@qq.com> Date: Mon, 13 Oct 2025 19:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E9=80=BB=E8=BE=91=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/youchain/utils/DateUtil.java | 6 +- .../service/impl/ImportPointServiceImpl.java | 78 +++++++++--------- .../repository/InventoryRepository.java | 2 +- .../repository/TaskRepository.java | 4 + .../rest/AsnDetailController.java | 4 +- .../rest/PickDetailController.java | 79 ++++++++++++++----- .../rest/XppRecordController.java | 1 + .../dto/InventoryLogQueryCriteria.java | 12 ++- .../service/impl/AsnDetailServiceImpl.java | 10 ++- .../service/impl/InventoryServiceImpl.java | 2 +- .../service/impl/PickDetailServiceImpl.java | 63 ++++++++------- .../service/impl/PickTicketServiceImpl.java | 6 +- 12 files changed, 170 insertions(+), 97 deletions(-) diff --git a/youchain-common/src/main/java/com/youchain/utils/DateUtil.java b/youchain-common/src/main/java/com/youchain/utils/DateUtil.java index 94d448a..84d6938 100644 --- a/youchain-common/src/main/java/com/youchain/utils/DateUtil.java +++ b/youchain-common/src/main/java/com/youchain/utils/DateUtil.java @@ -190,7 +190,11 @@ public class DateUtil { }else if(day>28){ z="29-31"; } - return year+"-"+month+"-"+z; + if(month<=9){ + return year+"-0"+month+"-"+z; + }else{ + return year+"-"+month+"-"+z; + } } public static String formatChageDay(Date date, String type, int value) { diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java index 552a498..e7c8ca5 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java @@ -62,39 +62,45 @@ public class ImportPointServiceImpl implements ImportPointService { List pointcodes = dataList.stream().map(PointImport::getCode).collect(Collectors.toList()); pointcodes = pointcodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); Map exitPointMap = validatePoint(pointcodes); - - //获取文件中所有的库区名称 - List areaNames = dataList.stream().map(PointImport::getAreaName).collect(Collectors.toList()); - areaNames = areaNames.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); - Map exitAreaMap = validateArea(areaNames); + List pointAll=pointRepository.findAll(); + for(Point p:pointAll){ + exitPointMap.put(p.getCode(),p); + } +// +// //获取文件中所有的库区名称 +// List areaNames = dataList.stream().map(PointImport::getAreaName).collect(Collectors.toList()); +// areaNames = areaNames.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); +// Map exitAreaMap = validateArea(areaNames); for (PointImport data : dataList) { + log.info(data.getAreaName()+"===="+data.getCode()); Point point = exitPointMap.get(data.getCode()); - if (point == null) { - point=new Point(); - point.setCode(data.getCode()); - point.setDept(UserUtils.getDept()); - point.setCreateBy(SecurityUtils.getCurrentUsername()); - point.setCreateTime(new Timestamp(new Date().getTime())); - point.setEnabled(Boolean.TRUE); - } - point.setArea(exitAreaMap.get(data.getAreaName())); - String lx = data.getType(); - if (lx.equals("材管库位")) { - lx = BaseStatus.CH; - } else if (lx.equals("制造库位")) { - lx = BaseStatus.ZZKW; - }else if (lx.equals("缓存库位")) { - lx = BaseStatus.HCKW; - } - point.setType(lx); - point.setBeatCode(data.getNs()); - point.setDescription(data.getBqlx()); - point.setItemCode(data.getItemCode()); - point.setZflx(data.getZflx()); - point.setBqlx(data.getBqlx()); - point.setGlzkw(data.getGlzkw()); - point.setInvMin(Integer.parseInt(data.getKcxx())); + point.setCode(data.getAreaName()); +// if (point == null) { +// point=new Point(); +// point.setCode(data.getCode()); +// point.setDept(UserUtils.getDept()); +// point.setCreateBy(SecurityUtils.getCurrentUsername()); +// point.setCreateTime(new Timestamp(new Date().getTime())); +// point.setEnabled(Boolean.TRUE); +// } +// point.setArea(exitAreaMap.get(data.getAreaName())); +// String lx = data.getType(); +// if (lx.equals("材管库位")) { +// lx = BaseStatus.CH; +// } else if (lx.equals("制造库位")) { +// lx = BaseStatus.ZZKW; +// }else if (lx.equals("缓存库位")) { +// lx = BaseStatus.HCKW; +// } +// point.setType(lx); +// point.setBeatCode(data.getNs()); +// point.setDescription(data.getBqlx()); +// point.setItemCode(data.getItemCode()); +// point.setZflx(data.getZflx()); +// point.setBqlx(data.getBqlx()); +// point.setGlzkw(data.getGlzkw()); +// point.setInvMin(Integer.parseInt(data.getKcxx())); pointRepository.save(point); } } @@ -125,12 +131,12 @@ public class ImportPointServiceImpl implements ImportPointService { // 根据模板类型进行不同的处理 List requiredColumns = Arrays.asList( "库位号", - "库区", - "存储类型", - "品番", - "库存下限", - "纳所", - "标签类型" + "库区" +// "存储类型", +// "品番", +// "库存下限", +// "纳所", +// "标签类型" // , // "总分类型", // "关联总库位" diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java index 077880d..c9a066a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java @@ -62,7 +62,7 @@ public interface InventoryRepository extends JpaRepository, Jpa @Query(value = "SELECT * from data_inventory inv \n" + "left join base_point p on inv.point_id=p.id\n" + - "WHERE inv.quantity>0 and p.type='CH' and inv.stock_code=:stockCode" , nativeQuery = true) + "WHERE inv.quantity-inv.queued_qty>0 and p.type='CH' and inv.stock_code=:stockCode" , nativeQuery = true) List queryInvStockCode(String stockCode); @Query(value = "SELECT inv.* from data_inventory inv \n" + diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java index 35172d3..c2e720c 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/TaskRepository.java @@ -105,4 +105,8 @@ public interface TaskRepository extends JpaRepository, JpaSpecificat */ @Query(value = "select * from data_task t where t.plan_qty>t.move_qty and t.pick_detail_id is not null and t.item_key_id=1? ", nativeQuery = true) List getItemKeyTask(Long id); + + @Query(value = "select * from data_task t where t.task_type='PICK' and t.move_qty getStockTasks(String stockCode); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java index 47becd6..9d8d88a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/AsnDetailController.java @@ -389,7 +389,7 @@ public class AsnDetailController { } return new ResponseEntity("取消成功", HttpStatus.OK); } - @Log("取消收货的操作") + @Log("的操作") @ApiOperation("取消收货的操作") @PostMapping("/rkAndQxButtonQX") @PreAuthorize("@el.check('super:man')") @@ -437,7 +437,7 @@ public class AsnDetailController { } //生成库存日志 - InventoryLog inventoryLog = invLogService.storeInventoryLog(BizStatus.RECEIVING_CANCEL, BizStatus.REDUCE, null, ad.getPoint().getArea(), inve.getItemKey(), + InventoryLog inventoryLog = invLogService.storeInventoryLog(BizStatus.RECEIVING_CANCEL, BizStatus.REDUCE, asn.getCode(), ad.getPoint().getArea(), inve.getItemKey(), pointMapper.toEntity(inventoryDto.getPoint()) , dstPoint, ad.getStock(), ad.getStock(), ad.getReceivedQty(), ad.getReceivedQty(), null,null,BizStatus.ASN, ad.getId(), inventoryDto.getId(), ad.getRemark()); } // } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java index 2b2ddd0..2d08d90 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java @@ -176,6 +176,7 @@ public class PickDetailController { @Log("修改pickDetail") @ApiOperation("修改pickDetail") @PreAuthorize("@el.check('super:man')") + @Transactional public ResponseEntity updatePickDetail(@Validated @RequestBody PickDetail resources) { if(resources.getAllocatedQty()>0){ throw new BadRequestException("已出单,不能修改"); @@ -188,6 +189,7 @@ public class PickDetailController { @Log("删除pickDetail") @ApiOperation("删除pickDetail") @PreAuthorize("@el.check('super:man')") + @Transactional public ResponseEntity deletePickDetail(@RequestBody Long[] ids) { //删除时需判断是否有分配 for(Long id:ids){ @@ -207,6 +209,7 @@ public class PickDetailController { @ApiOperation("制造叫料App") @PreAuthorize("@el.check('super:man')") @AnonymousAccess + @Transactional @DuplicateSubmission(5) public ResponseEntity zzjlApp(@RequestBody CxjlDto cxjldto) throws Exception { String ewm=cxjldto.getEwm(); @@ -223,6 +226,7 @@ public class PickDetailController { if(point==null||!point.getType().equals("ZZKW")){ throw new BadRequestException("制造库位错误"); } + //查询BOM,寻找收容数 cxjldto.setRk_id(point.getArea().getId()); cxjldto.setItem_id(item.getId()); cxjldto.setZzkw_id(point.getId()); @@ -242,6 +246,10 @@ public class PickDetailController { PickDetail pickDetail = pickDetailService.cxjlCreate(cxjldto); //自动分配 pickDetailService.allocate(pickDetail.getId(), pickDetail.getOrderQty() - pickDetail.getAllocatedQty(), pickDetail.getPo(), BaseStatus.ZZJL); + int qh_qty=pickDetail.getOrderQty().intValue()-pickDetail.getAllocatedQty().intValue(); + if(qh_qty>0){ + throw new BadRequestException(pickDetail.getItem().getCode()+"库存缺货,仅有"+pickDetail.getAllocatedQty().intValue()+",请汇报上级"); + } }else if(type.equals("cxjl_003")){//制造入库APP //解析二维码内容 String[] str=ewm.split("]"); @@ -275,6 +283,7 @@ public class PickDetailController { @ApiOperation("制造叫料") @PreAuthorize("@el.check('super:man')") @AnonymousAccess + @Transactional @DuplicateSubmission(5) public ResponseEntity zzjl(@RequestBody CxjlDto cxjldto) throws Exception { PickDetail pickDetail=pickDetailService.cxjlCreate(cxjldto); @@ -282,6 +291,10 @@ public class PickDetailController { cxjldto.setBonded(bomAccount.getBonded()); //自动分配 pickDetailService.allocate(pickDetail.getId(), pickDetail.getOrderQty() - pickDetail.getAllocatedQty(),pickDetail.getPo(),BaseStatus.ZZJL); + int qh_qty=pickDetail.getOrderQty().intValue()-pickDetail.getAllocatedQty().intValue(); + if(qh_qty>0){ + throw new BadRequestException(pickDetail.getItem().getCode()+"库存缺货,仅有"+pickDetail.getAllocatedQty().intValue()+",请汇报上级"); + } return new ResponseEntity<>(HttpStatus.OK); } @@ -341,7 +354,7 @@ public class PickDetailController { if(tasks.size()>=0){ for(Task t:tasks){ ZzjlPickDetail detail=new ZzjlPickDetail(); - detail.setStock_code(""); + detail.setStock_code(t.getDstStockCode()==null?"":t.getDstStockCode()); detail.setPoint_code(t.getSrcPoint().getCode()); detail.setPch(t.getItemKey().getPropC1()); detail.setItem_code(t.getItemKey().getItem().getCode()); @@ -349,25 +362,30 @@ public class PickDetailController { detail.setBonded(pickDetail.getPropC2()); detail.setQty(t.getPlanQty()+""); detail_list.add(detail); - view_type="02"; - view_name="现品票"; + if(t.getDstStockCode()!=null){ + view_type="03"; + view_name="箱单号"; + }else { + view_type = "02"; + view_name = "现品票"; + } } } - if(tasks.size()==0){ - List invs= inventoryService.queryInvForPickDetail(pickDetail.getId()); - for(XdInventory inv:invs) { - ZzjlPickDetail detail=new ZzjlPickDetail(); - detail.setStock_code(inv.getStockCode()); - detail.setPoint_code(inv.getPointCode()); - detail.setPch(inv.getPropC1()); - detail.setItem_code(inv.getItemCode()); - detail.setItem_name(inv.getItemName()); - detail.setBonded(inv.getBonded()); - detail.setQty(inv.getInvQty()); - detail_list.add(detail); - view_type="03"; - } - } +// if(tasks.size()==0){ +// List invs= inventoryService.queryInvForPickDetail(pickDetail.getId()); +// for(XdInventory inv:invs) { +// ZzjlPickDetail detail=new ZzjlPickDetail(); +// detail.setStock_code(inv.getStockCode()); +// detail.setPoint_code(inv.getPointCode()); +// detail.setPch(inv.getPropC1()); +// detail.setItem_code(inv.getItemCode()); +// detail.setItem_name(inv.getItemName()); +// detail.setBonded(inv.getBonded()); +// detail.setQty(inv.getInvQty()); +// detail_list.add(detail); +// view_type="03"; +// } +// } if(pickDetail.getBeXdPf()){ view_name="箱单(品番)"; view_type="04"; @@ -393,11 +411,27 @@ public class PickDetailController { } PickDetail pickDetail=pickDetailRepository.getById(zzjlPick.getDetail_id()); if(stock_code!=null&&(zzjlPick.getView_type().equals("03")||zzjlPick.getView_type().equals("04"))){ - if(!pickDetail.getBeXdPf()){//箱单出库 + if(!pickDetail.getBeXdPf()){//箱单出库,按照锁定箱单出库 + //先把符合数据的箱单全部拣货完成,剩余的再挂靠拣货 + List ts=taskRepository.getStockTasks(stock_code); + boolean no_exits=true; + for(Task task:ts) { + if (task.getPickDetail().getId().equals(pickDetail.getId())) { + no_exits = false; + } + } + if(no_exits){ + throw new BadRequestException( "扫描箱单号不正确"); + } + for(Task task:ts){ + pickTicketService.pickForTask(task.getId(), task.getSrcStockCode(), task.getPlanQty()-task.getMoveQty(), null, SecurityUtils.getCurrentUsername()); + } + List invs = inventoryRepository.queryInvStockCode(stock_code); for (Inventory inv : invs) { + double ky_qty=inv.getQuantity()-inv.getQueuedQty(); //生成Task,生成出库扣减库存 - Task task = taskService.storeTask(null,pickDetail,inv.getArea(),inv.getItemKey(),inv.getPoint(),null,inv.getQuantity(),inv.getStockCode()); + Task task = taskService.storeTask(null,pickDetail,inv.getArea(),inv.getItemKey(),inv.getPoint(),null,ky_qty,inv.getStockCode()); task.setBillCode(pickDetail.getItem().getCode()+"关联箱单出库"+pickDetail.getId()); task.setTaskType(BizStatus.XD_PICK); taskRepository.save(task); @@ -462,6 +496,7 @@ public class PickDetailController { @Log("制造叫料分配审核") @ApiOperation("制造叫料分配审核") @AnonymousAccess + @Transactional public synchronized ResponseEntity allocatePickDetail(@RequestBody Long[] ids) throws Exception { List pickDetailIds = Arrays.asList(ids); Collections.sort(pickDetailIds);//升序排序 @@ -480,6 +515,7 @@ public class PickDetailController { @Log("制造叫料取消分配") @ApiOperation("制造叫料取消分配") @AnonymousAccess + @Transactional public synchronized ResponseEntity cancelAllocatePickDetail(@RequestBody Long[] ids) throws Exception { List pickDetailIds = Arrays.asList(ids); Collections.sort(pickDetailIds);//升序排序 @@ -501,6 +537,7 @@ public class PickDetailController { @Log("设变") @ApiOperation("设变") @AnonymousAccess + @Transactional public ResponseEntity sbPickdetail(@RequestBody HashMap map) { Long pdId=Long.parseLong(map.get("pdId").toString()); Double sbQty=Double.parseDouble(map.get("sbQty").toString()); @@ -609,6 +646,7 @@ public class PickDetailController { @Log("退拣") @ApiOperation("退拣") @AnonymousAccess + @Transactional public synchronized ResponseEntity pickBarBack(@RequestBody Long pickDetailId) throws Exception { //查询已完成的拣货任务 List Tasks = taskService.getPickAllTask(pickDetailId); @@ -631,6 +669,7 @@ public class PickDetailController { @ApiOperation("指示残-波次补料") @PreAuthorize("@el.check('super:man')") @AnonymousAccess + @Transactional public ResponseEntity autoBcbl(@RequestBody HashMap map) { BillType bt=billTypeRepository.findByName(BaseStatus.BT_BCBL); if(bt==null){ diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java index 1167da0..9cf6f5a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java @@ -818,6 +818,7 @@ public class XppRecordController { @Log("删除xppRecord") @ApiOperation("删除xppRecord") @PreAuthorize("@el.check('super:man')") + @Transactional public ResponseEntity deleteXppRecord(@RequestBody Long[] ids) { for (Long id : ids) { //查找对应的入库明细是否收货 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java index bdba9af..4e83b8e 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java @@ -55,13 +55,17 @@ public class InventoryLogQueryCriteria{ @Query(joinName = "itemKey>", propName="propC2",type = Query.Type.EQUAL) private String bonded; - - /** 源点位号 */ - @Query(type = Query.Type.EQUAL) - private String srcPointCode; +// +// /** 源点位号 */ +// @Query(type = Query.Type.EQUAL) +// private String srcPointCode; @Query(joinName = "area",propName = "code",type = Query.Type.EQUAL) private String areaCode; + /** 源库位 */ + @Query(joinName = "srcPoint",propName = "code",type = Query.Type.INNER_LIKE) + private String srcPointCode; + } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java index 8c8f749..26a501e 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java @@ -154,12 +154,14 @@ public class AsnDetailServiceImpl implements AsnDetailService { if(asn!=null){ xdh=asn.getCusCode(); } - Inventory inventory=inventoryService.getInventory(t.getItemKey(),xppRecord.getArea(),srcPoint,t.getAsnDetail().getPoint(),t.getArea().getDept(),BizStatus.RECEIVING_CANCEL,xdh); + Inventory inventory=inventoryService.getInventory(t.getItemKey(),srcPoint.getArea(),srcPoint,t.getAsnDetail().getPoint(),t.getArea().getDept(),BizStatus.RECEIVING_CANCEL,xdh); if(inventory==null){ throw new BadRequestException("找不到对应库存"); } - if((inventory.getQuantity().intValue()- inventory.getQueuedQty().intValue()) inventoryList = query.getResultList(); return inventoryList; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index fd44f6f..a3e81c4 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -147,23 +147,25 @@ public class PickDetailServiceImpl implements PickDetailService { //扣主表的订单数量 PickDetail detail = pickDetailRepository.getById(id); PickTicket pt=detail.getPickTicket(); - Boolean bcbl=Boolean.FALSE; - if(pt.getBillType().getName().equals(BaseStatus.BT_BCBL)){ - bcbl=Boolean.TRUE; - } - if(detail.getAllocatedQty()+detail.getBcQty()>0){ - throw new BadRequestException("已出单,不能删除"); - } - if(bcbl){ - PickDetail oldDetail=pickDetailRepository.getById(detail.getSourceId()); - if(oldDetail!=null){ - oldDetail.setBcQty(oldDetail.getBcQty()- detail.getOrderQty()); - this.update(oldDetail); + if(pt!=null) { + Boolean bcbl = Boolean.FALSE; + if (pt.getBillType().getName().equals(BaseStatus.BT_BCBL)) { + bcbl = Boolean.TRUE; } + if (detail.getAllocatedQty() + detail.getBcQty() > 0) { + throw new BadRequestException("已出单,不能删除"); + } + if (bcbl) { + PickDetail oldDetail = pickDetailRepository.getById(detail.getSourceId()); + if (oldDetail != null) { + oldDetail.setBcQty(oldDetail.getBcQty() - detail.getOrderQty()); + this.update(oldDetail); + } + } + pt.setOrderQuantity(pt.getOrderQuantity() - detail.getOrderQty()); + // pickTicketService.update(pt); + pickTicketRepository.save(pt); } - pt.setOrderQuantity(pt.getOrderQuantity()-detail.getOrderQty()); - // pickTicketService.update(pt); - pickTicketRepository.save(pt); pickDetailRepository.deleteById(id); } @@ -228,14 +230,15 @@ public class PickDetailServiceImpl implements PickDetailService { double srs=item.getExtendD3(); Map map=new HashMap<>(); for (Inventory inv : invs) { - if(inv.getStockCode()!=null&&pd.getPo()==null&&!type.equals(BaseStatus.QTCK)){ - //回写推荐托盘即可 - pd.setStatus(BizStatus.ALLOCATE); - pd.setArea(inv.getArea()); - pd.setCkPoint(inv.getPoint()); - map.put(inv.getId()+"",inv.getStockCode()+"]"+inv.getItemKey().getPropC1()+"]"+inv.getPoint().getCode()+"]"+inv.getQuantity()); - continue; - } + //推荐箱单功能暂时不使用,直接锁库 +// if(inv.getStockCode()!=null&&pd.getPo()==null&&!type.equals(BaseStatus.QTCK)){ +// //回写推荐托盘即可 +// pd.setStatus(BizStatus.ALLOCATE); +// pd.setArea(inv.getArea()); +// pd.setCkPoint(inv.getPoint()); +// map.put(inv.getId()+"",inv.getStockCode()+"]"+inv.getItemKey().getPropC1()+"]"+inv.getPoint().getCode()+"]"+inv.getQuantity()); +// continue; +// } Point startPoint = inv.getPoint();//原库位 // String areaCode=BaseStatus.DEFAULT_AREA; // Point endPoint = pointService.getPoint(null, null, BaseStatus.BHZC, areaCode);//目标库位 @@ -288,6 +291,7 @@ public class PickDetailServiceImpl implements PickDetailService { } pd.setArea(inv.getArea()); pd.setCkPoint(inv.getPoint()); + pd.setPo(inv.getStockCode()); pickDetailRepository.save(pd); Task task = taskService.storeTask(null,pd,inv.getArea(),inv.getItemKey(),startPoint,endPoint,allocateQty,inv.getStockCode()); //修改占用数,写入日志 @@ -304,6 +308,11 @@ public class PickDetailServiceImpl implements PickDetailService { } }else{ log.info("无库存。。。。"); +// if(!type.equals(BaseStatus.QTCK)) { +// throw new BadRequestException("无库存,请汇报上级!"); +// }else{ +// log.info("无库存。。。。"); +// } } } else { throw new BadRequestException("已分配,请勿重复操作!"); @@ -426,7 +435,7 @@ public class PickDetailServiceImpl implements PickDetailService { " left join base_area a on a.id=d.area_id\n" + " left join base_area s on s.id=d.sh_area_id\n" + " left join base_point ck_point on ck_point.id=d.ck_point_id\n" + - " where 1=1 and d.type='ZZJL' and d.picked_qty=0 "; + " where 1=1 and d.type='ZZJL' and d.order_qty>0 and d.picked_qty0 and d.status!='PICK_ALL'" + + " GROUP BY ck_area.name \n" + + " ORDER BY ck_area.name desc"; Query query = entityManager.createNativeQuery(sql); List ts= query .unwrap(SQLQuery.class) diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java index 22ba5ef..c0f8b26 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java @@ -556,8 +556,12 @@ public class PickTicketServiceImpl implements PickTicketService { inventoryService.update(dstInv); **/ pd.setPickedQty(pd.getPickedQty() + pickQty); if(pd.getPickedQty()>0){ - pd.setStatus(BizStatus.PICK_ALL); + pd.setStatus(BizStatus.PICKUP); + if(pd.getPickedQty()>=pd.getOrderQty()){ + pd.setStatus(BizStatus.PICK_ALL); + } } + pickDetailRepository.save(pd); if(pt!=null) { //拣货数量