From 5962e00b926c95c988e658a2a29957ee31cf5882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Sun, 10 Dec 2023 23:30:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=89=B9=E9=87=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=85=A5=E5=BA=93=E6=88=96=E5=87=BA=E5=BA=93=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/ExceptionConstants.java | 9 +++++ .../service/depotHead/DepotHeadService.java | 37 +++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 02cf6db2..4173f8c5 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -421,6 +421,9 @@ public class ExceptionConstants { //单据录入-部分采购的单据不能进行反审核 public static final int DEPOT_HEAD_PURCHASE_STATUS_THREE_CODE = 8500027; public static final String DEPOT_HEAD_PURCHASE_STATUS_THREE_MSG = "抱歉,部分采购的单据不能进行反审核"; + //单据录入-单据中存在部分状态,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE = 8500028; + public static final String DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG = "抱歉,单据:%s是部分%s状态,需要到新增界面关联单据"; /** * 单据明细信息 @@ -441,6 +444,12 @@ public class ExceptionConstants { //单据明细-明细中仓库不存在 public static final int DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_CODE = 9000004; public static final String DEPOT_ITEM_DEPOTNAME_IS_NOT_EXIST_MSG = "抱歉,仓库:%s在基础资料-仓库信息中不存在"; + //单据明细-单据中存在序列号,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE = 9000005; + public static final String DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG = "抱歉,单据:%s里面存在序列号,需要到新增界面关联单据"; + //单据明细-单据中存在批号,需要到新增界面关联单据 + public static final int DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE = 9000006; + public static final String DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG = "抱歉,单据:%s里面存在批号,需要到新增界面关联单据"; /** * 财务信息 diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java index 9d7a99da..0a0fcc63 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -1512,12 +1512,20 @@ public class DepotHeadService { return result; } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void batchAddDepotHeadAndDetail(String ids, HttpServletRequest request) throws Exception { List dhList = getDepotHeadListByIds(ids); + StringBuilder sb = new StringBuilder(); + User userInfo=userService.getCurrentUser(); for(DepotHead depotHead : dhList) { String prefixNo = BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())?"QTRK":"QTCK"; //关联单据单号 - depotHead.setLinkNumber(depotHead.getNumber()); + String oldNumber = depotHead.getNumber(); + if("3".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); + } + depotHead.setLinkNumber(oldNumber); //给单号重新赋值 depotHead.setNumber(prefixNo + sequenceService.buildOnlyNumber()); depotHead.setDefaultNumber(prefixNo + sequenceService.buildOnlyNumber()); @@ -1526,16 +1534,24 @@ public class DepotHeadService { depotHead.setChangeAmount(BigDecimal.ZERO); depotHead.setTotalPrice(BigDecimal.ZERO); depotHead.setDiscountLastMoney(BigDecimal.ZERO); + depotHead.setCreator(userInfo==null?null:userInfo.getId()); depotHead.setOrganId(null); depotHead.setAccountId(null); + depotHead.setStatus("0"); depotHead.setTenantId(null); //查询明细 List itemList = depotItemService.getDetailList(depotHead.getId()); depotHead.setId(null); - String beanJson = JSONObject.toJSONString(depotHead); JSONArray rowArr = new JSONArray(); for(DepotItemVo4WithInfoEx item: itemList) { - //TODO 增加序列号和批次的提示,不能进行录入 + if("1".equals(item.getEnableSerialNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG, oldNumber)); + } + if("1".equals(item.getEnableBatchNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG, oldNumber)); + } item.setUnitPrice(BigDecimal.ZERO); item.setAllPrice(BigDecimal.ZERO); item.setLinkId(item.getId()); @@ -1547,7 +1563,20 @@ public class DepotHeadService { } String rows = rowArr.toJSONString(); //新增其它入库单或其它出库单 - this.addDepotHeadAndDetail(beanJson, rows, request); + sb.append("[").append(depotHead.getNumber()).append("]"); + depotHeadMapper.insertSelective(depotHead); + //根据单据编号查询单据id + DepotHeadExample dhExample = new DepotHeadExample(); + dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + /**入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows, headId, "add", request); + } } + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(sb).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); } }