From d739a973995f98a2356825f27e3fd34cddda94fe Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Fri, 27 Dec 2024 11:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E7=A8=8E=E7=8E=87=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BmQrBoxServiceImpl.java | 3 - .../PurchaseCheckInfoController.java | 10 +- .../impl/PurchaseCheckInfoServiceImpl.java | 105 ++++++++++-------- 3 files changed, 62 insertions(+), 56 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/BmQrBoxServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/BmQrBoxServiceImpl.java index ccdde827..6b799b3f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/BmQrBoxServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/BmQrBoxServiceImpl.java @@ -20,7 +20,6 @@ import com.bonus.material.basic.mapper.BmQrBoxMapper; import com.bonus.material.basic.service.BmQrBoxService; import com.bonus.material.ma.domain.vo.MachineVo; import com.bonus.material.ma.mapper.MachineMapper; -import com.bonus.material.purchase.domain.vo.PurchaseVo; import com.bonus.material.purchase.mapper.PurchaseBindMapper; import com.bonus.material.purchase.mapper.PurchaseStorageMapper; import lombok.extern.slf4j.Slf4j; @@ -30,13 +29,11 @@ import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; -import java.io.FileInputStream; import java.io.InputStream; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.*; -import java.util.stream.Collectors; /** * @author ma_sh diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckInfoController.java index 9685253a..10398d1c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseCheckInfoController.java @@ -48,9 +48,9 @@ public class PurchaseCheckInfoController extends BaseController { //@RequiresPermissions("purchase:info:list") @GetMapping("/list") public AjaxResult list(PurchaseQueryDto purchaseQueryDto) { - List list = purchaseCheckInfoService.selectPurchaseCheckInfoList(purchaseQueryDto); - Integer pageIndex = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1); - Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10); + final List list = purchaseCheckInfoService.selectPurchaseCheckInfoList(purchaseQueryDto); + final Integer pageIndex = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1); + final Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10); return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list)); } @@ -76,7 +76,7 @@ public class PurchaseCheckInfoController extends BaseController { public AjaxResult add(@Valid @NotNull @RequestBody PurchaseCheckDto purchaseCheckDto) { try { return purchaseCheckInfoService.insertPurchaseCheckInfo(purchaseCheckDto); - } catch (Exception e) { + } catch (final Exception e) { return error("系统错误, " + e.getMessage()); } } @@ -92,7 +92,7 @@ public class PurchaseCheckInfoController extends BaseController { public AjaxResult edit(@RequestBody @NotNull(message = "请求参数不能为空") @Valid PurchaseCheckDto purchaseCheckDto) { try { return toAjax(purchaseCheckInfoService.updatePurchaseCheckInfo(purchaseCheckDto)); - } catch (Exception e) { + } catch (final Exception e) { return error("系统错误, " + e.getMessage()); } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java index c7107cc5..d7f419df 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java @@ -83,11 +83,11 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseQueryDto.setUserId(SecurityUtils.getUserId()); PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto(); PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId()); - if (purchaseCheckInfo != null) { + if (null != purchaseCheckInfo) { purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo); // boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER); List purchaseCheckDetailsList = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto); - if (purchaseQueryDto.getTaskStage() != null) { + if (null != purchaseQueryDto.getTaskStage()) { // 根据阶段来过滤详情数据 switch (purchaseQueryDto.getTaskStage()) { case PURCHASE_TASK_STAGE_MANAGE: @@ -128,11 +128,11 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { private void extractedFile(List purchaseCheckDetailsList) { if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) { for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) { - BmFileInfo fileInfo = new BmFileInfo(); + final BmFileInfo fileInfo = new BmFileInfo(); fileInfo.setTaskType(10); fileInfo.setModelId(purchaseCheckDetails.getId()); fileInfo.setTaskId(purchaseCheckDetails.getTaskId()); - List bmFileInfoList = bmFileInfoMapper.selectBmFileInfoList(fileInfo); + final List bmFileInfoList = bmFileInfoMapper.selectBmFileInfoList(fileInfo); if (!CollectionUtils.isEmpty(bmFileInfoList)) { purchaseCheckDetails.setBmFileInfos(bmFileInfoList); } @@ -152,15 +152,15 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { */ @Override public List selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto) { - List purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto); + final List purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto); if (CollectionUtils.isEmpty(purchaseCheckInfos) ) {return Collections.emptyList();} - AtomicReference loginUserId = new AtomicReference<>(SecurityUtils.getUserId()); + final AtomicReference loginUserId = new AtomicReference<>(SecurityUtils.getUserId()); if (Objects.isNull(loginUserId.get()) || Objects.isNull(purchaseQueryDto.getTaskStage())) {return Collections.emptyList();} - List purchaseCheckInfoResult = new ArrayList<>(); - boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER); + final List purchaseCheckInfoResult = new ArrayList<>(); + final boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER); - for (PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) { + for (final PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) { // 获取采购物资明细、2024-12-23日修改by阮世耀 根据当前库管员绑定物资来查询 不展示非本角色管理的物资类型 List purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseInfo.getTaskId(), null, loginUserId.get()); if (CollectionUtils.isEmpty(purchaseCheckDetails)) {continue;} @@ -169,7 +169,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> !(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) && (o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) || o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())))).collect(Collectors.toList()); - OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min(); + final OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min(); if (isAllowPartTransfer) { // 2024-12-23日 取消状态过滤,修改由任务阶段来过滤 --- by 阮世耀 @@ -207,12 +207,13 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { } if (!CollectionUtils.isEmpty(purchaseCheckDetails)) { BigDecimal purchaseMaTotalNumber = BigDecimal.ZERO, checkMaTotalNumber = BigDecimal.ZERO, bindMaTotalNumber = BigDecimal.ZERO, inputMaTotalNumber = BigDecimal.ZERO; - AtomicReference purchaseMaTotalPrice = new AtomicReference<>(BigDecimal.ZERO); + final AtomicReference purchaseMaTotalPrice = new AtomicReference<>(BigDecimal.ZERO); + final AtomicReference purchaseTaxPriceTotal = new AtomicReference<>(BigDecimal.ZERO); boolean isIncludeStage = false; - for (PurchaseCheckDetails detail : purchaseCheckDetails) { - if (detail.getPurchaseNum() == null || detail.getPurchasePrice() == null) {continue;} - if (detail.getPurchaseNum().compareTo(BigDecimal.ZERO) < 0 || detail.getPurchasePrice().compareTo(BigDecimal.ZERO) < 0) { + for (final PurchaseCheckDetails detail : purchaseCheckDetails) { + if (null == detail.getPurchaseNum() || null == detail.getPurchasePrice()) {continue;} + if (0 > detail.getPurchaseNum().compareTo(BigDecimal.ZERO) || 0 > detail.getPurchasePrice().compareTo(BigDecimal.ZERO)) { throw new IllegalArgumentException("采购数量和价格必须为非负数"); } if (!isIncludeStage) { @@ -224,23 +225,25 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { checkMaTotalNumber = checkMaTotalNumber.add(Optional.ofNullable(detail.getCheckNum()).orElse(BigDecimal.ZERO)); bindMaTotalNumber = bindMaTotalNumber.add(Optional.ofNullable(detail.getBindNum()).orElse(BigDecimal.ZERO)); inputMaTotalNumber = inputMaTotalNumber.add(Optional.ofNullable(detail.getInputNum()).orElse(BigDecimal.ZERO)); - purchaseMaTotalPrice.updateAndGet(v -> v.add(detail.getPurchaseNum().multiply(detail.getPurchasePrice()))); + purchaseMaTotalPrice.updateAndGet(v -> v.add(detail.getPurchaseNum().multiply(detail.getPurchasePrice()).setScale(10, RoundingMode.HALF_DOWN))); + purchaseTaxPriceTotal.updateAndGet(v -> v.add(detail.getPurchaseNum().multiply(detail.getPurchaseTaxPrice()).setScale(10, RoundingMode.HALF_DOWN))); } purchaseInfo.setPurchaseMaNumber(purchaseMaTotalNumber); purchaseInfo.setPurchasePrice(purchaseMaTotalPrice.get()); + purchaseInfo.setPurchaseTaxPrice(purchaseTaxPriceTotal.get()); purchaseInfo.setBindMaNumber(bindMaTotalNumber); purchaseInfo.setCheckMaNumber(checkMaTotalNumber); purchaseInfo.setInputMaNumber(inputMaTotalNumber); purchaseInfo.setWaitInputNumber(Optional.of(purchaseMaTotalNumber).orElse(BigDecimal.ZERO).subtract(Optional.of(inputMaTotalNumber).orElse(BigDecimal.ZERO))); - if (purchaseInfo.getTaxRate() != null && purchaseInfo.getPurchasePrice() != null) { - purchaseInfo.setPurchaseTaxPrice(calculateTaxPrice(purchaseMaTotalPrice.get(), purchaseInfo.getTaxRate())); - } +// if (null != purchaseInfo.getTaxRate() && null != purchaseInfo.getPurchasePrice()) { +// purchaseInfo.setPurchaseTaxPrice(calculateTaxPrice(purchaseMaTotalPrice.get(), purchaseInfo.getTaxRate())); +// } // 设置外层任务状态:入库待开始、入库进行中、入库已完成 - TmTask tmTask = tmTaskMapper.selectTmTaskByTaskId(purchaseInfo.getTaskId()); + final TmTask tmTask = tmTaskMapper.selectTmTaskByTaskId(purchaseInfo.getTaskId()); purchaseInfo.setTaskStatusName(isIncludeStage ? "未完成" : "已完成"); - if (purchaseQueryDto.getIsFinish() != null) { - if (purchaseQueryDto.getIsFinish() == 1) { + if (null != purchaseQueryDto.getIsFinish()) { + if (1 == purchaseQueryDto.getIsFinish()) { if (isIncludeStage) {continue;} } else { if (!isIncludeStage) {continue;} @@ -279,9 +282,15 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { * @return 不含税价格100 税率为13%,结果为 113.00 */ public static BigDecimal calculateTaxPrice(BigDecimal purchaseNoTaxPrice, BigDecimal taxRate) { - BigDecimal one = BigDecimal.ONE; - BigDecimal divisor = BigDecimal.valueOf(100); - return purchaseNoTaxPrice.multiply(one.add(taxRate.divide(divisor))).setScale(2, RoundingMode.HALF_UP); + if (null == taxRate || 0 > taxRate.compareTo(BigDecimal.ZERO) || 0 < taxRate.compareTo(BigDecimal.valueOf(100))) { + throw new IllegalArgumentException("税率必须在0到100之间"); + } + // 计算税率 + final BigDecimal rate = taxRate.divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP); + // 税后价格计算 + final BigDecimal taxIncludedPrice = purchaseNoTaxPrice.multiply(BigDecimal.ONE.add(rate)); + // 保留10位小数 + return taxIncludedPrice.setScale(10, RoundingMode.HALF_UP); } /** @@ -296,24 +305,24 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseCheckInfo.getPurchaseCheckInfo().setCreateTime(DateUtils.getNowDate()); purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getUsername()); try { - int thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId()); + final int thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId()); String taskCode = genderTaskCode(thisMonthMaxOrder); - TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId(), + final TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId(), PurchaseTaskStatusEnum.TO_NOTICE.getStatus(), purchaseCheckInfo.getPurchaseCheckInfo().getCompanyId(), thisMonthMaxOrder + 1, taskCode); tmTask.setCreateTime(DateUtils.getNowDate()); tmTaskMapper.insertTmTask(tmTask); Long taskId = tmTask.getTaskId(); purchaseCheckInfo.getPurchaseCheckInfo().setTaskId(taskId); - int count = purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo()); - if (count > 0) { + final int count = purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo()); + if (0 < count) { return insertPurchaseCheckDetails(purchaseCheckInfo.getPurchaseCheckDetailsList(), taskId); } else { return AjaxResult.error("新增任务失败,purchase_check_info表插入0条"); } - } catch (DataAccessException e) { + } catch (final DataAccessException e) { return AjaxResult.error("数据库操作失败:" + e.getMessage()); - } catch (Exception e) { + } catch (final Exception e) { return AjaxResult.error("新增任务失败:" + e.getMessage()); } } @@ -326,15 +335,15 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { PurchaseTaskStatusEnum.TO_CHECK.getStatus() : PurchaseTaskStatusEnum.TO_NOTICE.getStatus()); details.setInputStatus("0"); - List bmFileInfos = details.getBmFileInfos(); + final List bmFileInfos = details.getBmFileInfos(); if (!CollectionUtils.isEmpty(bmFileInfos)) { bmFileInfos.forEach(o -> o.setTaskId(taskId)); bmFileInfoMapper.insertBmFileInfos(bmFileInfos); } } // 批量插入详情数据 - int count = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckDetailsList); - if (count > 0) { + final int count = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckDetailsList); + if (0 < count) { return AjaxResult.success("新增任务成功"); } else { return AjaxResult.error("新增任务失败,purchase_check_detail详情表插入0条"); @@ -369,8 +378,8 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { } } } - return updateCount > 0 ? AjaxResult.success("验证成功") : AjaxResult.error("无验证信息"); - } catch (Exception e) { + return 0 < updateCount ? AjaxResult.success("验证成功") : AjaxResult.error("无验证信息"); + } catch (final Exception e) { return AjaxResult.error("验收状态更改失败,异常报错:" + e.getMessage()); } } @@ -396,7 +405,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { // 验收驳回处理流程 for (PurchaseCheckDetails details : purchaseVerifyVo.getPurchaseCheckDetailsList()) { details.setStatus(PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus()); - result = purchaseCheckDetailsMapper.updatePurchaseDetails4Check(details) > 0 ? AjaxResult.success("detail验证驳回成功") : AjaxResult.error("details无验证信息"); + result = 0 < purchaseCheckDetailsMapper.updatePurchaseDetails4Check(details) ? AjaxResult.success("detail验证驳回成功") : AjaxResult.error("details无验证信息"); tmTaskMapper.updateTmTask(new TmTask() .setTaskId(details.getTaskId()) .setTaskType(TmTaskTypeEnum.TM_TASK_PURCHASE.getTaskTypeId()) @@ -406,7 +415,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { } } return result; - } catch (Exception e) { + } catch (final Exception e) { return AjaxResult.error("验收状态更改失败,异常报错:" + e.getMessage()); } } @@ -417,8 +426,8 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { */ private void extractedFile(PurchaseCheckDetails details) { if (!CollectionUtils.isEmpty(details.getBmFileInfos())) { - for (BmFileInfo bmFileInfo : details.getBmFileInfos()) { - if (bmFileInfo.getTaskType() != null && bmFileInfo.getTaskType() == 10) { + for (final BmFileInfo bmFileInfo : details.getBmFileInfos()) { + if (null != bmFileInfo.getTaskType() && Objects.equals(TmTaskTypeEnum.TM_TASK_AGREEMENT_MANAGEMENT.getTaskTypeId(), bmFileInfo.getTaskType())) { bmFileInfo.setTaskId(details.getTaskId()); bmFileInfo.setModelId(details.getId()); bmFileInfo.setCreateBy(SecurityUtils.getUsername()); @@ -437,11 +446,11 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { @Override public PurchaseCheckFormVo selectPurchaseCheckFormVoByTaskId(Long taskId) { // 执行SQL查询外层信息 - PurchaseCheckFormVo result = purchaseCheckInfoMapper.selectPurchaseCheckFormVoByTaskId(taskId); + final PurchaseCheckFormVo result = purchaseCheckInfoMapper.selectPurchaseCheckFormVoByTaskId(taskId); - if (result != null) { + if (null != result) { // 执行SQL查询内层信息 - List purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(taskId, null, SecurityUtils.getUserId()); + final List purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(taskId, null, SecurityUtils.getUserId()); // 过滤掉空数据 purchaseCheckDetails.removeIf(Objects::isNull); result.setMaterialList(purchaseCheckDetails); @@ -457,10 +466,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { * @return 任务对象 */ private static String genderTaskCode(Integer thisMonthMaxOrder) { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date nowDate = DateUtils.getNowDate(); - String format = dateFormat.format(nowDate); - String result = format.replace("-", ""); + final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + final Date nowDate = DateUtils.getNowDate(); + final String format = dateFormat.format(nowDate); + final String result = format.replace("-", ""); return PURCHASE_TASK_TYPE_LABEL + result + String.format("-%03d", thisMonthMaxOrder + 1); } @@ -484,12 +493,12 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { ); } try { - Long[] ids = new Long[]{purchaseCheckDto.getPurchaseCheckInfo().getId()}; + final Long[] ids = {purchaseCheckDto.getPurchaseCheckInfo().getId()}; purchaseCheckDetailsMapper.deletePurchaseCheckDetailsByParentIds(ids); insertPurchaseCheckDetails(purchaseCheckDto.getPurchaseCheckDetailsList(), purchaseCheckDto.getPurchaseCheckInfo().getTaskId()); purchaseCheckInfoMapper.updatePurchaseCheckInfo(purchaseCheckDto.getPurchaseCheckInfo()); return true; - } catch (Exception e) { + } catch (final Exception e) { throw new ServiceException("错误信息描述"); } }