From 84d7f975178d7ad4d64d654d59bbabd944177b6e Mon Sep 17 00:00:00 2001 From: linfso Date: Sat, 27 Jul 2024 06:03:38 +0800 Subject: [PATCH] md --- .../erp/web/emis/EmisWaybillController.java | 11 +- .../erp/emis/service/IEmisWaybillService.java | 16 +- .../service/impl/EmisWaybillServiceImpl.java | 165 ++++++++++++++++-- 3 files changed, 165 insertions(+), 27 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java index 9739c806e..331c02c44 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java @@ -195,9 +195,14 @@ public class EmisWaybillController extends EmisBaseController } + /** + * 该方方法不要使用,跳转到开单界面 + * @param waybillOrder + * @return + */ @Log(title = "确认接单", businessType = BusinessType.UPDATE) - @PostMapping(value = "/confirmOrder") - public AjaxResult confirmOrder(@Valid @RequestBody WaybillOrder waybillOrder) + @PostMapping(value = "/confirmOrder1") + public AjaxResult confirmOrder1(@Valid @RequestBody WaybillOrder waybillOrder) { try { @@ -210,7 +215,7 @@ public class EmisWaybillController extends EmisBaseController // emisWaybill.setOrderRemark(waybillOrder.getOrderRemark()); emisWaybillService.confirmOrder(emisWaybill); - return AjaxResult.success("取消成功"); + return AjaxResult.success("保存成功"); }catch(EmisBizError ex){ ex.printStackTrace(); return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java index cfad995e3..b44ffb5eb 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java @@ -130,13 +130,15 @@ public interface IEmisWaybillService */ public int cancelOrder(EmisWaybill emisWaybill) throws EmisBizError; - /** - * 确认订单 - * @param emisWaybill - * @return - * @throws EmisBizError - */ - public int confirmOrder(EmisWaybill emisWaybill) throws EmisBizError; + + /** + * 确认订单 + * @param oldEmisWaybill + * @param emisWaybillSave + * @return + * @throws EmisBizError + */ + public void confirmOrder(EmisWaybill oldEmisWaybill,EmisWaybill emisWaybillSave) throws EmisBizError; /** * 指派业务员 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index f1d56e4f6..889349e9c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -589,7 +589,6 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb @Transactional public int realSubmitOrder(EmisWaybill emisWaybillSave) throws EmisBizError { - boolean isNew = true; EmisWaybill emisWaybillOld = null; @@ -607,6 +606,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } } + + // 新开单 if(isNew){ addNewWaybill(emisWaybillSave); @@ -614,14 +615,26 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 运单修改 else{ - // 检查是否已锁单 - checkDBBillIsLock(emisWaybillOld); + // 判断是否是接单 + boolean isConfirmOrder=false; + if("1".equals(emisWaybillOld.getOrderStatus())){ + emisWaybillSave.setId(emisWaybillOld.getId()); + emisWaybillSave.setOrderSn(emisWaybillOld.getOrderSn()); - emisWaybillSave.setId(emisWaybillOld.getId()); - // 把历史发货日期带过来用于重新计算预估到到时间 - emisWaybillSave.setSendDate(emisWaybillOld.getSendDate()); + // 开始接单 + confirmOrder(emisWaybillOld,emisWaybillSave); - reUpdateWayBill(emisWaybillOld,emisWaybillSave); + }else { + // 检查是否已锁单 + checkDBBillIsLock(emisWaybillOld); + + emisWaybillSave.setId(emisWaybillOld.getId()); + + // 把历史发货日期带过来用于重新计算预估到到时间 + emisWaybillSave.setSendDate(emisWaybillOld.getSendDate()); + + reUpdateWayBill(emisWaybillOld, emisWaybillSave); + } } return 1; @@ -702,29 +715,147 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb return emisWaybillMapper.cancelOrder(emisWaybill); } + /** * 确认订单 - * @param emisWaybill + * @param oldEmisWaybill + * @param emisWaybillSave * @return * @throws EmisBizError */ @Override - public int confirmOrder(EmisWaybill emisWaybill) throws EmisBizError{ + public void confirmOrder(EmisWaybill oldEmisWaybill,EmisWaybill emisWaybillSave) throws EmisBizError{ // 已接单不允许再接单 - EmisWaybill emisWaybillOld = this.selectEmisWaybillByOrderSn(emisWaybill.getOrderSn()); - if(emisWaybillOld==null){ - throw new EmisBizError(EmisBizErrorType.NOT_EXISTS,"订单不存在"); - } - - if(OrderStatus.CANCEL.statusCode.equals(emisWaybillOld.getOrderStatus())){ + if(OrderStatus.CANCEL.statusCode.equals(oldEmisWaybill.getOrderStatus())){ throw new EmisBizError(EmisBizErrorType.FAIL,"订单已取消"); } - if(!OrderStatus.INIT.statusCode.equals(emisWaybillOld.getOrderStatus())){ + if(!OrderStatus.INIT.statusCode.equals(oldEmisWaybill.getOrderStatus())){ throw new EmisBizError(EmisBizErrorType.FAIL,"已接单"); } - return emisWaybillMapper.confirmOrder(emisWaybill); + if(!WaybillStatus.INIT.statusCode.equals(oldEmisWaybill.getWaybillStatus())){ + throw new EmisBizError(EmisBizErrorType.FAIL,"已揽收"); + } + + // 子单号做扣减 + if ("1".equals(emisWaybillSave.getBlGenSubbill())) { + int subBillCount = emisElectronicSitePagService.getTotalAvailablePagCount(emisWaybillSave.getSendSiteCode(), "T7080", "1002"); + if (subBillCount <= 0) { + throw new EmisBizError(EmisBizErrorType.FAIL, "子单数量不足"); + } + } + + emisWaybillSave.setId(oldEmisWaybill.getId()); + + // 公共计算部分 + calcWayBillCommonInfo(emisWaybillSave,true); + + emisWaybillSave.preUpdate(); + + // 变为已接单 + emisWaybillSave.setOrderStatus("1"); + + // 基础信息更新 + emisWaybillMapper.updateEmisWaybill(emisWaybillSave); + + // 扣减子单 + emisElectronicSitePagService.realMatchSubBill(emisWaybillSave.getSendSiteCode(),"T7080",emisWaybillSave.getParcelQty()); + + // 删除旧信息 + emisWaybillFeeitemMapper.deleteEmisWaybillFeeitemByWaybillId(emisWaybillSave.getId()); + + emisWaybillCargoMapper.deleteEmisWaybillCargoByWaybillId(emisWaybillSave.getId()); + + // 产生主键插入其他数据 + // 插入费用 + List feeitemList=emisWaybillSave.getFeeitemList(); + if(!CollectionUtils.isEmpty(feeitemList)){ + for (EmisWaybillFeeitem feeItem:feeitemList) { + feeItem.setWaybillId(emisWaybillSave.getId()); + emisWaybillFeeitemMapper.insertEmisWaybillFeeitem(feeItem); + } + } + + // 插入商品信息 + if(!CollectionUtil.isEmpty(emisWaybillSave.getCargoList() )){ + List cargoList=emisWaybillSave.getCargoList(); + for (EmisWaybillCargo cargoItem:cargoList) { + cargoItem.setWaybillId(emisWaybillSave.getId()); + emisWaybillCargoMapper.insertEmisWaybillCargo(cargoItem); + } + } + + // 保存货物图片 + if(!StringUtils.isEmpty(emisWaybillSave.getGoodsPics())){ + if(CollectionUtil.isEmpty(emisWaybillSave.getAttachmentList() )){ + List attachmentList = new ArrayList(); + EmisWaybillAttachment goodsPicAttachment = new EmisWaybillAttachment(); + goodsPicAttachment.setAttachType(WaybillAttachType.GOODS_PIC.typeCode); + goodsPicAttachment.setBillCode(emisWaybillSave.getBillCode()); + goodsPicAttachment.setFileUrl(emisWaybillSave.getGoodsPics()); + attachmentList.add(goodsPicAttachment); + emisWaybillSave.setAttachmentList(attachmentList); + } + } + + + // 插入附件信息 + if(!CollectionUtil.isEmpty(emisWaybillSave.getAttachmentList() )){ + // 商品附件图片插入到附件 + List attachmentList=emisWaybillSave.getAttachmentList(); + for (EmisWaybillAttachment attachmentItem:attachmentList) { + attachmentItem.setWaybillId(emisWaybillSave.getId()); + attachmentItem.setBillCode(emisWaybillSave.getBillCode()); + emisWaybillAttachmentMapper.insertEmisWaybillAttachment(attachmentItem); + } + } + + // 占用进仓单号 + if(!StringUtils.isEmpty(emisWaybillSave.getWarehouseInNo())) { + String warehouseInNo = WaybillHelper.formatQueryValue(emisWaybillSave.getWarehouseInNo()); +// useWarehouseInNo(emisWaybillSave.getBillCode(),null,warehouseInNo); + useWarehouseInNo(emisWaybillSave.getBillCode(),null,warehouseInNo); + } + + // 插入揽收记录 + ScanInfo scanInfo = new ScanInfo(); + List> scanDataList = new ArrayList<>(); + scanInfo.setOpType(2); + scanInfo.setScanType(ScanType.GOT.opCode); + + String dispatchOrSendManCode=""; + if("1".equals(emisWaybillSave.getPickupMethod())){ + dispatchOrSendManCode=emisWaybillSave.getOperateEmployeeCode(); + } + else if("2".equals(emisWaybillSave.getPickupMethod())){ + dispatchOrSendManCode=emisWaybillSave.getTakePieceEmployeeCode(); + } + + Map scanDateItem = new HashMap<>(); + scanDateItem.put("billCode",emisWaybillSave.getBillCode()); + scanDateItem.put("dispatchOrSendManCode",dispatchOrSendManCode); + scanDateItem.put("scanDate", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,emisWaybillSave.getSendDate())); + scanDateItem.put("scanWeight", "0.0"); + scanDataList.add(scanDateItem); + scanInfo.setScanData(scanDataList); + + try { + emisTmsScanRecordService.scan(scanInfo); + } catch (Exception e) { + e.printStackTrace(); + } + + // 占用进仓单号 + useWarehouseInNo(emisWaybillSave.getBillCode(),oldEmisWaybill.getWarehouseInNo(),emisWaybillSave.getWarehouseInNo()); + + // 运单修改需要重新出账 + try { + redoGenerateBill(emisWaybillSave.getBillCode()); + }catch (Exception ex){ + ex.printStackTrace(); + } + } /**