common/src/main/java/com/ruoyi/common/enums/SystemDataNoEnum.java
@@ -21,6 +21,8 @@ DL("DL","DL","调度编号"), YF("YF","YF","应付编号"), YS("YS","YS","应收编号"), YSZD("YSZD","YSZD","应收账单编号"), YFZD("YFZD","YFZD","应付账单编号"), YFD("YFD","YFD","应付详情编号"), YSD("YSD","YSD","应收详情编号"), OF("OF","OF","其他账单编号"), service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java
@@ -86,6 +86,14 @@ public int deleteReceivableFeeDetailByIds(Integer[] ids); /** * 根据应收费用ID删除应收费用明细 * * @param receivableFeeId 应收费用ID * @return 结果 */ public int deleteReceivableFeeDetailByReceivableFeeId(Integer receivableFeeId); /** * 根据应收费用ID数组查询应收费用明细列表 * * @param receivableFeeIds 应收费用ID数组 service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java
@@ -101,6 +101,14 @@ public int deleteReceivableFeeDetailById(Integer id); /** * 根据应收费用ID删除应收费用明细 * * @param receivableFeeId 应收费用ID * @return 结果 */ public int deleteReceivableFeeDetailByReceivableFeeId(Integer receivableFeeId); /** * 根据应收费用ID数组查询应收费用明细列表 * * @param receivableFeeIds 应收费用ID数组 service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeManagementServiceImpl.java
@@ -17,6 +17,7 @@ import com.ruoyi.cwgl.mapper.PayableFeeManagementMapper; import com.ruoyi.cwgl.domain.PayableFeeManagement; import com.ruoyi.cwgl.domain.PayableFeeDetail; import com.ruoyi.cwgl.service.IPayableFeeManagementService; import com.ruoyi.cwgl.service.IPayableFeeDetailService; import com.ruoyi.common.core.text.Convert; @@ -49,7 +50,15 @@ @Override public PayableFeeManagement selectPayableFeeManagementById(Integer id) { return payableFeeManagementMapper.selectPayableFeeManagementById(id); PayableFeeManagement payableFeeManagement = payableFeeManagementMapper.selectPayableFeeManagementById(id); if (payableFeeManagement != null) { // 查询对应的费用明细 PayableFeeDetail detail = new PayableFeeDetail(); detail.setPayableFeeId(id); List<PayableFeeDetail> detailList = payableFeeDetailService.selectPayableFeeDetailList(detail); payableFeeManagement.setPayableFeeDetailList(detailList); } return payableFeeManagement; } /** @@ -198,3 +207,5 @@ return payableFeeManagementMapper.deletePayableFeeManagementById(id); } } service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java
@@ -181,6 +181,18 @@ } /** * 根据应收费用ID删除应收费用明细 * * @param receivableFeeId 应收费用ID * @return 结果 */ @Override public int deleteReceivableFeeDetailByReceivableFeeId(Integer receivableFeeId) { return receivableFeeDetailMapper.deleteReceivableFeeDetailByReceivableFeeId(receivableFeeId); } /** * 根据应收费用ID数组查询应收费用明细列表 * * @param receivableFeeIds 应收费用ID数组 @@ -193,3 +205,4 @@ return receivableFeeDetailMapper.selectReceivableFeeDetailByReceivableFeeIds(receivableFeeIds); } } service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeManagementServiceImpl.java
@@ -78,7 +78,15 @@ @Override public ReceivableFeeManagement selectReceivableFeeManagementById(Integer id) { return receivableFeeManagementMapper.selectReceivableFeeManagementById(id); ReceivableFeeManagement receivableFeeManagement = receivableFeeManagementMapper.selectReceivableFeeManagementById(id); if (receivableFeeManagement != null) { // 查询对应的费用明细 ReceivableFeeDetail detail = new ReceivableFeeDetail(); detail.setReceivableFeeId(id); List<ReceivableFeeDetail> detailList = receivableFeeDetailService.selectReceivableFeeDetailList(detail); receivableFeeManagement.setReceivableFeeDetailList(detailList); } return receivableFeeManagement; } /** @@ -183,7 +191,29 @@ public int updateReceivableFeeManagement(ReceivableFeeManagement receivableFeeManagement) { receivableFeeManagement.setUpdateTime(DateUtils.getNowDate()); return receivableFeeManagementMapper.updateReceivableFeeManagement(receivableFeeManagement); // 1. 更新主表信息 int result = receivableFeeManagementMapper.updateReceivableFeeManagement(receivableFeeManagement); // 2. 获取主表ID Integer receivableFeeId = receivableFeeManagement.getId(); // 3. 删除该应收费用下的所有现有明细 receivableFeeDetailService.deleteReceivableFeeDetailByReceivableFeeId(receivableFeeId); // 4. 批量保存新的明细列表 if (receivableFeeManagement.getReceivableFeeDetailList() != null && !receivableFeeManagement.getReceivableFeeDetailList().isEmpty()) { // 设置每个明细的应收费用管理ID receivableFeeManagement.getReceivableFeeDetailList().forEach(detail -> { detail.setReceivableFeeId(receivableFeeId); detail.setUpdateTime(DateUtils.getNowDate()); // 设置更新时间 }); // 调用批量插入方法 receivableFeeDetailService.insertReceivableFeeDetailBatch(receivableFeeManagement.getReceivableFeeDetailList()); } return result; } /** @@ -272,8 +302,6 @@ BigDecimal exchangeRate = new BigDecimal(sysConfig.getConfigValue()); BigDecimal totalAmountHkd = totalReceivableAmount.divide(exchangeRate, 2, RoundingMode.HALF_UP); // 查询应收费用明细 List<ReceivableFeeDetail> detailList = receivableFeeDetailService.selectReceivableFeeDetailByReceivableFeeIds(ids); // 组装返回结果 ReceivableFeeStatisticsVo result = new ReceivableFeeStatisticsVo(); @@ -282,7 +310,6 @@ result.setTotalReceivableAmount(totalReceivableAmount); result.setTotalAmountRmb(totalReceivableAmount); result.setTotalAmountHkd(totalAmountHkd); result.setDetailList(detailList); result.setIds(ids); return result; @@ -304,7 +331,7 @@ ReceivableBillManagement billManagement = new ReceivableBillManagement(); billManagement.setDocumentCount(statisticsVo.getDocumentCount()); billManagement.setExchangeRate(statisticsVo.getRate()); billManagement.setStatus("DRAFT"); // 默认草稿状态 billManagement.setStatus("0"); // 默认草稿状态 billManagement.setCreateTime(DateUtils.getNowDate()); // 3. 根据账单类型设置币种和总金额 @@ -319,7 +346,8 @@ } else { throw new IllegalArgumentException("无效的账单类型:" + billType); } String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YSZD); billManagement.setSystemNo(noByKey); // 4. 保存主账单记录 int i = receivableBillManagementService.insertReceivableBillManagement(billManagement); service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml
@@ -172,6 +172,10 @@ <delete id="deleteReceivableFeeDetailById" parameterType="Integer"> delete from receivable_fee_detail where id = #{id} </delete> <!--根据应收费用ID删除明细--> <delete id="deleteReceivableFeeDetailByReceivableFeeId" parameterType="Integer"> delete from receivable_fee_detail where receivable_fee_id = #{receivableFeeId} </delete> <delete id="deleteReceivableFeeDetailByIds" parameterType="Integer"> delete from receivable_fee_detail where id in <foreach item="id" collection="array" open="(" separator="," close=")">