新增账单
This commit is contained in:
@@ -107,7 +107,10 @@
|
|||||||
<select id="selectCostSubject" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO"
|
<select id="selectCostSubject" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO"
|
||||||
resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO">
|
resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO">
|
||||||
select
|
select
|
||||||
a.*
|
a.* ,
|
||||||
|
b.tax_rate,
|
||||||
|
b.service_items_name,
|
||||||
|
b.service_items_code
|
||||||
from expense_account a left join service_items_manage b ON a.service_items_manage_id = b.service_items_manage_id
|
from expense_account a left join service_items_manage b ON a.service_items_manage_id = b.service_items_manage_id
|
||||||
where
|
where
|
||||||
a.del_flag = 1
|
a.del_flag = 1
|
||||||
@@ -118,13 +121,17 @@
|
|||||||
<select id="selectAllCostSubject"
|
<select id="selectAllCostSubject"
|
||||||
resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO">
|
resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO">
|
||||||
select
|
select
|
||||||
*
|
a.* ,
|
||||||
from expense_account
|
b.tax_rate,
|
||||||
|
b.service_items_name,
|
||||||
|
b.service_items_code
|
||||||
|
from expense_account a
|
||||||
|
left join service_items_manage b ON a.service_items_manage_id = b.service_items_manage_id
|
||||||
where
|
where
|
||||||
del_flag = 1
|
a.del_flag = 1
|
||||||
and status = 1
|
and a.status = 1
|
||||||
and first_subject_flag = 2
|
and a.first_subject_flag = 2
|
||||||
and upper_subject_code = #{subjectCode}
|
and a.upper_subject_code = #{subjectCode}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getInfoByCode" resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO">
|
<select id="getInfoByCode" resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO">
|
||||||
|
|||||||
+78
@@ -385,6 +385,84 @@ public class BillManageApplicationService {
|
|||||||
return flag && flagTwo && three;
|
return flag && flagTwo && three;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增账单
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public Boolean addBill(BillManageDTO billManageDTO) {
|
||||||
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
|
if (ObjectUtil.isNull(loginUser)) {
|
||||||
|
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||||
|
}
|
||||||
|
if (billManageDTO.getBillDetailDTOList() == null || billManageDTO.getBillDetailDTOList().size() == 0) {
|
||||||
|
throw new ServiceException("账单明细不能为空");
|
||||||
|
}
|
||||||
|
List<BillDetailDTO> billDetailDTOList = billManageDTO.getBillDetailDTOList();
|
||||||
|
//计算集合中所有账单总额、账单金额、账单优惠金额
|
||||||
|
BigDecimal billingTotalAmount = billDetailDTOList.stream().map(BillDetailDTO::getBillingTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
BigDecimal billingAmount = billDetailDTOList.stream().map(BillDetailDTO::getBillingAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
BigDecimal billingDiscountAmount = billDetailDTOList.stream().map(BillDetailDTO::getBillingDiscountAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
//比较传来的账单总额、账单金额、账单优惠金额与计算的是否一致,不一致则报错
|
||||||
|
if (billingTotalAmount.compareTo(billManageDTO.getBillTotalAmount()) != 0 || billingAmount.compareTo(billManageDTO.getBillAmount()) != 0 || billingDiscountAmount.compareTo(billManageDTO.getBillDiscountAmount()) != 0) {
|
||||||
|
throw new ServiceException("账单金额不一致,新增失败,请重试");
|
||||||
|
}
|
||||||
|
//生成账单编号
|
||||||
|
String billNumber = OrderSequence.getOrderCode("ZD");
|
||||||
|
//创建账单主记录
|
||||||
|
BillManageDO billManageDO = new BillManageDO();
|
||||||
|
BeanUtils.copyProperties(billManageDTO, billManageDO);
|
||||||
|
billManageDO.setBillNumber(billNumber);
|
||||||
|
billManageDO.setBillAmount(billingAmount);
|
||||||
|
billManageDO.setBillAmountUnsettled(billingAmount);
|
||||||
|
billManageDO.setBillAmountSettlement(BigDecimal.ZERO);
|
||||||
|
billManageDO.setBillDiscountAmount(billingDiscountAmount);
|
||||||
|
billManageDO.setBillTotalAmount(billingTotalAmount);
|
||||||
|
billManageDO.setBillState(1);
|
||||||
|
billManageDO.setBillStep(1);
|
||||||
|
billManageDO.setReconciliationStatus(1);
|
||||||
|
billManageDO.setCreateTime(new Date());
|
||||||
|
billManageDO.setCreateBy(loginUser.getUserid());
|
||||||
|
billManageDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||||
|
billManageDO.setUpdateTime(new Date());
|
||||||
|
billManageDO.setUpdateBy(loginUser.getUserid());
|
||||||
|
billManageDO.setUpdateByName(loginUser.getUserPo().getUserName());
|
||||||
|
billManageDomainService.handlData(billManageDO);
|
||||||
|
Boolean flag = billManageDomainService.insert(billManageDO);
|
||||||
|
if (!flag) {
|
||||||
|
throw new ServiceException("新增账单失败");
|
||||||
|
}
|
||||||
|
//将集合中没有计费流水id的过滤到另一个集合,将添加费用的集合保存到计费流水并返回计费流水id
|
||||||
|
List<BillDetailDTO> billDetailDTOListNoBillingStatementId = billDetailDTOList.stream().filter(item -> item.getBillingStatementId() == null).collect(Collectors.toList());
|
||||||
|
//遍历集合并保存流水
|
||||||
|
for (BillDetailDTO billDetailDTO : billDetailDTOListNoBillingStatementId) {
|
||||||
|
BillingStatementDTO billingStatementDTO = new BillingStatementDTO();
|
||||||
|
BeanUtils.copyProperties(billDetailDTO, billingStatementDTO);
|
||||||
|
billingStatementDTO.setAccountExpenseType(billDetailDTO.getBillType());
|
||||||
|
billingStatementDTO.setBillManageId(billManageDO.getBillManageId());
|
||||||
|
billingStatementDTO.setBillingState(3);
|
||||||
|
Long billingStatementId = billingStatementApplicationService.insertAndReturnId(billingStatementDTO);
|
||||||
|
//遍历billDetailDTOList集合,将计费流水号相同的,赋值计费流水id
|
||||||
|
billDetailDTOList.stream().filter(item -> item.getBillingFlow().equals(billDetailDTO.getBillingFlow())).forEach(item -> {
|
||||||
|
item.setBillingStatementId(billingStatementId);
|
||||||
|
item.setBillType(billManageDTO.getBillType());
|
||||||
|
item.setBillManageId(billManageDO.getBillManageId());
|
||||||
|
item.setBillNumber(billNumber);
|
||||||
|
item.setInvoiceItem(item.getFirstSubjectCode());
|
||||||
|
item.setInvoiceItemName(item.getFirstSubjectName());
|
||||||
|
item.setFeeType(item.getServiceItemsName());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//保存账单明细
|
||||||
|
Boolean flagTwo = billDetailDomainService.saveBatch(billDetailDTOList);
|
||||||
|
//保存操作记录
|
||||||
|
BillOperationLogDO billOperationLogDO = new BillOperationLogDO();
|
||||||
|
billOperationLogDO.setBillManageId(billManageDO.getBillManageId());
|
||||||
|
billOperationLogDO.setOperationInfo(StringUtils.format(BillLogsConstants.create_bill_text, billNumber, billingAmount));
|
||||||
|
billOperationLogDO.setOperationType(1);
|
||||||
|
boolean flagThree = billOperationLogDomainService.saveBillOperationLog(billOperationLogDO);
|
||||||
|
return flag && flagTwo && flagThree;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 复制账单
|
* 复制账单
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -229,6 +229,22 @@ public class BillManageApi extends BaseController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("新增账单")
|
||||||
|
@PostMapping("/addBill")
|
||||||
|
public AjaxResult addBill(@RequestBody BillManageDTO billManageDTO)
|
||||||
|
{
|
||||||
|
if(billManageDTO.getBillDetailDTOList() == null || billManageDTO.getBillDetailDTOList().size() == 0){
|
||||||
|
throw new ServiceException("账单明细不能为空");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
billManageApplicationService.addBill(billManageDTO);
|
||||||
|
return AjaxResult.success("操作成功");
|
||||||
|
}catch (Exception e){
|
||||||
|
return AjaxResult.error("新增账单失败:"+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation("复制账单")
|
@ApiOperation("复制账单")
|
||||||
@PostMapping("/copyBill")
|
@PostMapping("/copyBill")
|
||||||
public AjaxResult copyBill(@RequestBody BillManageDTO billManageDTO)
|
public AjaxResult copyBill(@RequestBody BillManageDTO billManageDTO)
|
||||||
|
|||||||
Reference in New Issue
Block a user