diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java index bb1fc6170..e858436a1 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billManage/BillManageApplicationService.java @@ -476,105 +476,51 @@ public class BillManageApplicationService { } /** - * 复制账单 + * 复制账单-获取原账单数据供前端回显 + * 前端拿到数据后跳转到类似修改/新增账单的页面,用户修改后通过addBill接口提交新增 */ - @Transactional - public Boolean copyBill(BillManageDTO billManageDTO) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - if (ObjectUtil.isNull(loginUser)) { - throw new DigitalLogisticsException(UserError.TIMEOUT); - } + public BillManagePO copyBill(BillManageDTO billManageDTO) { if (billManageDTO.getBillManageId() == null) { throw new ServiceException("原账单id不能为空"); } - // 1. 获取原账单信息 + // 获取原账单信息 BillManagePO originalBill = billManageDomainService.getInfo(billManageDTO.getBillManageId()); if (null == originalBill) { throw new ServiceException("原账单信息未找到"); } - // 2. 获取原账单明细 + // 获取原账单明细 List originalDetails = billDetailDomainService.getDetailsByBillManageId(billManageDTO.getBillManageId()); if (originalDetails == null || originalDetails.isEmpty()) { throw new ServiceException("原账单明细为空,无法复制"); } - // 3. 创建新账单,除账单编号外完全复制原账单 - String newBillNumber = OrderSequence.getOrderCode("ZD"); - BillManage newBill = new BillManage(); - BeanUtils.copyProperties(originalBill, newBill); - newBill.setBillManageId(null); - newBill.setBillNumber(newBillNumber); - newBill.setCreateBy(loginUser.getUserPo().getUserId()); - newBill.setCreateByName(loginUser.getUserPo().getUserName()); - newBill.setCreateTime(new Date()); - newBill.setUpdateBy(loginUser.getUserPo().getUserId()); - newBill.setUpdateByName(loginUser.getUserPo().getUserName()); - newBill.setUpdateTime(new Date()); - newBill.setDelFlag(1); - // 复制后重置状态字段为初始值 - // 账单状态、对账状态、发票状态重置 - newBill.setBillState(1); // 1-未确认 - newBill.setBillStep(1); // 1-发起对账 - newBill.setReconciliationStatus(0); // 1-暂未确认 - newBill.setIsInvoice(0); // 0-未索取 - // 实收=0,未收=账单金额 - newBill.setActualReceivedAmount(BigDecimal.ZERO); - newBill.setBillAmountUnsettled(newBill.getBillAmount()); - newBill.setBillAmountSettlement(BigDecimal.ZERO); - // NC同步状态重置 - newBill.setSynchronousStatus(0); // 0-未同步 - newBill.setSkSynchronousStatus(0); // 0-未同步 - // 清空发票、收款、推送相关字段 - newBill.setApplyNumber(null); // 发票申请单号 - newBill.setSettlementTime(null); // 收款时间 - newBill.setSynchronousTime(null); // 应收单推送时间 - newBill.setSkSynchronousTime(null); // 收款单推送时间 - newBill.setInvoiceId(null); // 发票表ID - newBill.setInvoiceMakeTime(null); // 开票时间 - newBill.setNcId(null); // nc唯一标识(应收) - newBill.setSkNcId(null); // nc唯一标识(收款) - // 保存新账单 - boolean flag = billManageDomainService.saveEntity(newBill); - if (!flag) { - throw new ServiceException("复制账单失败,请重试"); + // 重置关键字段为初始值,清空id等,方便前端回显后直接提交新增 + originalBill.setBillManageId(null); + originalBill.setBillNumber(null); + originalBill.setBillState(1); + originalBill.setBillStep(1); + originalBill.setReconciliationStatus(0); + originalBill.setIsInvoice(0); + originalBill.setActualReceivedAmount(BigDecimal.ZERO); + originalBill.setBillAmountUnsettled(originalBill.getBillAmount()); + originalBill.setBillAmountSettlement(BigDecimal.ZERO); + originalBill.setSynchronousStatus(0); + originalBill.setSkSynchronousStatus(0); + originalBill.setApplyNumber(null); + originalBill.setSettlementTime(null); + originalBill.setSynchronousTime(null); + originalBill.setSkSynchronousTime(null); + originalBill.setInvoiceId(null); + originalBill.setInvoiceMakeTime(null); + originalBill.setNcId(null); + originalBill.setSkNcId(null); + // 明细也清空id + for (BillDetailPO detail : originalDetails) { + detail.setBillDetailId(null); + detail.setBillManageId(null); + detail.setBillNumber(null); } - // 4. 复制账单明细 - List newDetailList = new ArrayList<>(); - for (BillDetailPO originalDetail : originalDetails) { - BillDetail newDetail = new BillDetail(); - BeanUtils.copyProperties(originalDetail, newDetail); - newDetail.setBillDetailId(null); - newDetail.setBillManageId(newBill.getBillManageId()); - newDetail.setBillNumber(newBillNumber); - newDetail.setCreateBy(loginUser.getUserPo().getUserId()); - newDetail.setCreateByName(loginUser.getUserPo().getUserName()); - newDetail.setCreateTime(new Date()); - newDetailList.add(newDetail); - } - Boolean flagTwo = billDetailDomainService.insertBatch(newDetailList); - // 5. 复制计费流水(billing_statement) - List originalStatements = billingStatementDomainService.getDetailsByManageId(billManageDTO.getBillManageId()); - boolean flagThree = true; - if (originalStatements != null && !originalStatements.isEmpty()) { - List newStatementList = new ArrayList<>(); - for (BillingStatementPO originalStatement : originalStatements) { - BillingStatement newStatement = new BillingStatement(); - BeanUtils.copyProperties(originalStatement, newStatement); - newStatement.setBillingStatementId(null); - newStatement.setBillManageId(newBill.getBillManageId()); - newStatement.setCreateBy(loginUser.getUserPo().getUserId()); - newStatement.setCreateByName(loginUser.getUserPo().getUserName()); - newStatement.setCreateTime(new Date()); - newStatementList.add(newStatement); - } - flagThree = billingStatementDomainService.saveEntityBatch(newStatementList); - } - // 6. 保存操作日志 - BillOperationLogDO billOperationLogDO = new BillOperationLogDO(); - billOperationLogDO.setBillManageId(newBill.getBillManageId()); - billOperationLogDO.setOperationInfo(StringUtils.format(BillLogsConstants.copy_bill_text, originalBill.getBillNumber(), newBillNumber)); - billOperationLogDO.setOperationType(1); - boolean three = billOperationLogDomainService.saveBillOperationLog(billOperationLogDO); - return flag && flagTwo && flagThree && three; + originalBill.setBillDetailPOList(originalDetails); + return originalBill; } /** diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java index bef4396b4..435d9499e 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillManageApi.java @@ -258,7 +258,7 @@ public class BillManageApi extends BaseController{ } - @ApiOperation("复制账单") + @ApiOperation("复制账单-获取原账单数据用于回显") @PostMapping("/copyBill") public AjaxResult copyBill(@RequestBody BillManageDTO billManageDTO) { @@ -266,8 +266,8 @@ public class BillManageApi extends BaseController{ throw new ServiceException("原账单id不能为空"); } try { - Boolean result = billManageApplicationService.copyBill(billManageDTO); - return toAjax(result); + BillManagePO result = billManageApplicationService.copyBill(billManageDTO); + return AjaxResult.success(result); }catch (Exception e){ return AjaxResult.error("复制账单失败:"+e.getMessage()); }