add 撤销来款

This commit is contained in:
lijiarao
2022-09-16 09:55:33 +08:00
parent 1ac4ea4cb9
commit 47c4c068e7
3 changed files with 296 additions and 133 deletions
@@ -51,70 +51,85 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
@Resource
private ITbCertificatePaymentService tbCertificatePaymentService;
/**
* 到账开票主列表
*/
@ApiOperation(value="到账开票主列表", notes="到账开票主列表")
@GetMapping(value = "/mainList")
@RequiresPermissions("incomePaymentAndInvoiving:search")
public Result<?> mainList(PayCommonProject payCommonProject,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize
,String projectType
,String paymentDate
,String paidInvoicStatus) {
Page<PayCommonProject> page = new Page<PayCommonProject>(pageNo, pageSize);
List<PayCommonProject> pageList = payPaymentRecordService.mainList(page, payCommonProject,projectType,paymentDate, paidInvoicStatus);
/**
* 到账开票主列表
*/
@ApiOperation(value = "到账开票主列表", notes = "到账开票主列表")
@GetMapping(value = "/mainList")
@RequiresPermissions("incomePaymentAndInvoiving:search")
public Result<?> mainList(PayCommonProject payCommonProject,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize
, String projectType
, String paymentDate
, String paidInvoicStatus) {
Page<PayCommonProject> page = new Page<PayCommonProject>(pageNo, pageSize);
List<PayCommonProject> pageList = payPaymentRecordService.mainList(page, payCommonProject, projectType, paymentDate, paidInvoicStatus);
page.setRecords(pageList);
return Result.OK(page);
}
/**
* 添加来款
* @return
*/
@ApiOperation(value="添加来款", notes="添加来款")
@PostMapping(value = "/addAmountReceived")
public Result<?> addAmountReceived(@RequestBody List<PayPaymentRecord> list) {
try{
payPaymentRecordService.addAmountReceived(list, ProjectCommon.PAYMENT_FLAG2,"record");
}catch (Exception e){
log.error("添加来款异常",e);
return Result.error(e.getMessage());
}
return Result.OK("操作成功");
}
/**
* 标协会员添加来款
* @return
*/
@ApiOperation(value="标协会员添加来款", notes="标协会员添加来款")
@PostMapping(value = "/standardsAddAR")
public Result<?> standardsAddAR(@RequestParam(name="amountReceived")String amountReceived,
@RequestParam(name="tbPaymentId")String tbPaymentId,
@RequestBody MemberInfo memberInfo,
@RequestParam(name="checkResult")Boolean checkResult,
@RequestParam(name="remark",required = false)String remark) {
PayPaymentRecord payPaymentRecord = new PayPaymentRecord();
payPaymentRecord.setAmountReceived(new BigDecimal(amountReceived));
payPaymentRecord.setPaymentDate(new Date());
payPaymentRecord.setRemark(remark);
return payPaymentRecordService.standardsAddAR(tbPaymentId, payPaymentRecord, memberInfo, checkResult);
}
page.setRecords(pageList);
return Result.OK(page);
}
/**
* 标协证书添加来款
* 添加来款
*
* @return
*/
@ApiOperation(value="标协证书添加来款")
@AutoLog(value = "添加来款")
@ApiOperation(value = "添加来款", notes = "添加来款")
@PostMapping(value = "/addAmountReceived")
public Result<?> addAmountReceived(@RequestBody List<PayPaymentRecord> list) {
try {
payPaymentRecordService.addAmountReceived(list, ProjectCommon.PAYMENT_FLAG2, "record");
} catch (Exception e) {
log.error("添加来款异常", e);
return Result.error(e.getMessage());
}
return Result.OK("操作成功");
}
@AutoLog(value = "撤销来款")
@ApiOperation(value = "撤销来款", notes = "撤销来款")
@PostMapping(value = "/revoke")
public Result<?> revoke(@RequestParam(name = "id") String id) {
payPaymentRecordService.revoke(id);
return Result.OK("撤销成功");
}
/**
* 标协会员添加来款
*
* @return
*/
@AutoLog(value = "标协会员添加来款")
@ApiOperation(value = "标协会员添加来款", notes = "标协会员添加来款")
@PostMapping(value = "/standardsAddAR")
public Result<?> standardsAddAR(@RequestParam(name = "amountReceived") String amountReceived,
@RequestParam(name = "tbPaymentId") String tbPaymentId,
@RequestBody MemberInfo memberInfo,
@RequestParam(name = "checkResult") Boolean checkResult,
@RequestParam(name = "remark", required = false) String remark) {
PayPaymentRecord payPaymentRecord = new PayPaymentRecord();
payPaymentRecord.setAmountReceived(new BigDecimal(amountReceived));
payPaymentRecord.setPaymentDate(new Date());
payPaymentRecord.setRemark(remark);
return payPaymentRecordService.standardsAddAR(tbPaymentId, payPaymentRecord, memberInfo, checkResult);
}
/**
* 标协证书添加来款
*
* @return
*/
@AutoLog(value = "标协证书添加来款")
@ApiOperation(value = "标协证书添加来款")
@PostMapping(value = "/standardsCertificateAddAR")
public Result<?> standardsCertificateAddAR(@RequestParam(name="amountReceived")String amountReceived,
@RequestParam(name="tbPaymentId")String tbPaymentId,
@RequestParam(name="checkResult")Boolean checkResult,
@RequestParam(name="remark",required = false)String remark) {
public Result<?> standardsCertificateAddAR(@RequestParam(name = "amountReceived") String amountReceived,
@RequestParam(name = "tbPaymentId") String tbPaymentId,
@RequestParam(name = "checkResult") Boolean checkResult,
@RequestParam(name = "remark", required = false) String remark) {
PayPaymentRecord payPaymentRecord = new PayPaymentRecord();
payPaymentRecord.setAmountReceived(new BigDecimal(amountReceived));
payPaymentRecord.setPaymentDate(new Date());
@@ -123,60 +138,62 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
}
/**
* 标协会员更新会员来款信息
* 标协会员更新会员来款信息
*
* @return
*/
@ApiOperation(value="标协会员更新会员来款信息")
@ApiOperation(value = "标协会员更新会员来款信息")
@PostMapping(value = "/updateStandards")
public void updateStandards(@RequestParam(name="tbPaymentId")String tbPaymentId,
@RequestBody MemberInfo memberInfo) {
public void updateStandards(@RequestParam(name = "tbPaymentId") String tbPaymentId,
@RequestBody MemberInfo memberInfo) {
payPaymentRecordService.updateStandards(tbPaymentId,memberInfo);
payPaymentRecordService.updateStandards(tbPaymentId, memberInfo);
}
/**
* 来款列表
* @return
*/
@ApiOperation(value="来款列表", notes="来款列表")
@PostMapping(value = "/amountReceivedList")
public Result<?> amountReceivedList(String id) {
LambdaQueryWrapper<PayPaymentRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayPaymentRecord::getProjectId, id);
wrapper.eq(PayPaymentRecord::getPaymentStatus, PaymentStatusEnum.COMPLETED.getCode());
wrapper.orderByAsc(PayPaymentRecord::getPaymentDate);
List<PayPaymentRecord> list = payPaymentRecordService.list(wrapper);
/**
* 来款列表
*
* @return
*/
@ApiOperation(value = "来款列表", notes = "来款列表")
@PostMapping(value = "/amountReceivedList")
public Result<?> amountReceivedList(String id) {
LambdaQueryWrapper<PayPaymentRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayPaymentRecord::getProjectId, id);
wrapper.eq(PayPaymentRecord::getPaymentStatus, PaymentStatusEnum.COMPLETED.getCode());
wrapper.orderByAsc(PayPaymentRecord::getPaymentDate);
List<PayPaymentRecord> list = payPaymentRecordService.list(wrapper);
//标协会员、标协证书查出缴费方式
if(list!=null && list.size()>0){
if(PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(list.get(0).getProjectType()))){
TbMemberProjectSubitem memberProject = tbMemberProjectSubitemService.getById(id);
list.get(0).setPaymentMethod(memberProject.getPaymentMethod());
}
if(PayIncomeContractCommon.PROJECT_TYPE6.equals(String.valueOf(list.get(0).getProjectType()))){
TbCertificatePayment tbCertificatePayment = tbCertificatePaymentService.getById(id);
list.get(0).setPaymentMethod(tbCertificatePayment.getPaymentMethod());
}
}
//标协会员、标协证书查出缴费方式
if (list != null && list.size() > 0) {
if (PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(list.get(0).getProjectType()))) {
TbMemberProjectSubitem memberProject = tbMemberProjectSubitemService.getById(id);
list.get(0).setPaymentMethod(memberProject.getPaymentMethod());
}
if (PayIncomeContractCommon.PROJECT_TYPE6.equals(String.valueOf(list.get(0).getProjectType()))) {
TbCertificatePayment tbCertificatePayment = tbCertificatePaymentService.getById(id);
list.get(0).setPaymentMethod(tbCertificatePayment.getPaymentMethod());
}
}
return Result.OK(list);
}
return Result.OK(list);
}
/**
* 编辑来款
*/
@ApiOperation(value="编辑来款", notes="编辑来款")
@PostMapping(value = "/editAmountReceived")
public Result<?> editAmountReceived(@RequestBody PayPaymentRecord payPaymentRecord) {
payPaymentRecordService.editAmountReceived(payPaymentRecord);
return Result.OK("编辑成功!");
}
/**
* 添加开票
* 编辑来款
*/
@ApiOperation(value="添加开票", notes="添加开票")
@ApiOperation(value = "编辑来款", notes = "编辑来款")
@PostMapping(value = "/editAmountReceived")
public Result<?> editAmountReceived(@RequestBody PayPaymentRecord payPaymentRecord) {
payPaymentRecordService.editAmountReceived(payPaymentRecord);
return Result.OK("编辑成功!");
}
/**
* 添加开票
*/
@ApiOperation(value = "添加开票", notes = "添加开票")
@PostMapping(value = "/addPayBill")
public Result<?> addPayBill(@RequestBody(required = false) PayMailBillVO payMailBill) {
@@ -184,10 +201,11 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
}
/**
* 开票列表
* 开票列表
*
* @return
*/
@ApiOperation(value="开票列表", notes="开票列表")
@ApiOperation(value = "开票列表", notes = "开票列表")
@PostMapping(value = "/payBillList")
public Result<?> payBillList(String id) {
@@ -195,9 +213,10 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
}
/**
* 编辑开票
* 编辑开票
*/
@ApiOperation(value="编辑开票", notes="编辑开票")
@AutoLog(value = "编辑开票")
@ApiOperation(value = "编辑开票", notes = "编辑开票")
@PostMapping(value = "/editPayBill")
public Result<?> editPayBill(@RequestBody PayMailBillVO payMailBillVo) {
payMailBillService.editPayBill(payMailBillVo);
@@ -205,34 +224,33 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value="pay_payment_record-通过id查询", notes="pay_payment_record-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
PayPaymentRecord payPaymentRecord = payPaymentRecordService.getById(id);
if(payPaymentRecord==null) {
return Result.error("未找到对应数据");
}
return Result.OK(payPaymentRecord);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value = "pay_payment_record-通过id查询", notes = "pay_payment_record-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
PayPaymentRecord payPaymentRecord = payPaymentRecordService.getById(id);
if (payPaymentRecord == null) {
return Result.error("未找到对应数据");
}
return Result.OK(payPaymentRecord);
}
/**
* 导出excel
*
*/
@ApiOperation(value="导出excel", notes="导出excel")
@GetMapping(value = "/exportXls")
@AutoLog(value = "到账开票-导出excel",operateType = 6)
@RequiresPermissions("incomePaymentAndInvoiving:export")
public ModelAndView exportXls(HttpServletRequest request, PayCommonProject payCommonProject,
String projectType, String paymentDate,String paidInvoicStatus) {
return payPaymentRecordService.exportXls(request, payCommonProject,projectType, paymentDate,paidInvoicStatus, PayCommonProjectOutput.class, "到账开票");
}
/**
* 导出excel
*/
@ApiOperation(value = "导出excel", notes = "导出excel")
@GetMapping(value = "/exportXls")
@AutoLog(value = "到账开票-导出excel", operateType = 6)
@RequiresPermissions("incomePaymentAndInvoiving:export")
public ModelAndView exportXls(HttpServletRequest request, PayCommonProject payCommonProject,
String projectType, String paymentDate, String paidInvoicStatus) {
return payPaymentRecordService.exportXls(request, payCommonProject, projectType, paymentDate, paidInvoicStatus, PayCommonProjectOutput.class, "到账开票");
}
}
}
@@ -134,5 +134,5 @@ public interface IPayPaymentRecordService extends IService<PayPaymentRecord> {
Integer getMonthProjectCount(String time);
void revoke(String id);
}
@@ -868,6 +868,23 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
return paidAmount.add(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 相减
* @param paidAmount 实收
* @param amountReceived 到账
* @return
*/
public BigDecimal subtract(BigDecimal paidAmount,BigDecimal amountReceived){
if(paidAmount == null){
paidAmount = BigDecimal.ZERO;
}
if (amountReceived == null){
amountReceived = BigDecimal.ZERO;
}
return paidAmount.subtract(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 得到到账状态
* @param receivableAmount 应收
@@ -1184,6 +1201,134 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
return payPaymentRecordMapper.getMonthProjectCount(time);
}
@Override
public void revoke(String id) {
PayPaymentRecord payPaymentRecord = this.getById(id);
Integer projectType = payPaymentRecord.getProjectType();
BigDecimal newPaidAmount;
Integer inAccount;
String paymentStatus;
BigDecimal tax;
BigDecimal noTaxAmount;
List<PayContactsManagementTemporary> listId = new ArrayList<>();
switch (String.valueOf(projectType)){
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payPaymentRecord.getProjectId());
PayContactsManagementTemporary payCommonProjectTemporary = payContactsManagementTemporaryService.getById(payCommonProject.getContactsTemporaryId());
if(!Objects.isNull(payCommonProjectTemporary)){
listId.add(payCommonProjectTemporary);
}
newPaidAmount =subtract(payCommonProject.getPaidAmount(),payPaymentRecord.getAmountReceived());//累加实收
inAccount = getInAccount(payCommonProject.getReceivableAmount(), newPaidAmount);//到账状态
paymentStatus = payPaymentCheckService.getPaymentStatus(payCommonProject.getReceivableAmount(), newPaidAmount, PaymentStatusEnum.COMPLETED.getCode());//缴费状态
tax = subtract(payCommonProject.getPaidTax(),payPaymentRecord.getTax());
noTaxAmount = subtract(payCommonProject.getPaidNoTaxAmount(),payPaymentRecord.getNoTaxAmount());
payCommonProject.setPaidTax(tax);
payCommonProject.setPaidNoTaxAmount(noTaxAmount);
//更新主列表
payCommonProject.setPaidAmount(newPaidAmount);
payCommonProject.setInAccount(inAccount);
payCommonProject.setPaymentStatus(paymentStatus);
payCommonProjectMapper.updateById(payCommonProject);
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem payWorking = payWorkingGroupSubItemMapper.selectById(payPaymentRecord.getProjectId());
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payWorking.getWorkingGroupId());
LambdaQueryWrapper<PayWorkingGroupSubItemContacts> queryPayWorkingGroupSubItemContacts = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItemContacts.eq(PayWorkingGroupSubItemContacts::getWorkingGroupSubId,payWorking.getId());
List<PayWorkingGroupSubItemContacts> listPayWorkingGroupSubItemContacts = payWorkingGroupSubItemContactsService.list(queryPayWorkingGroupSubItemContacts);
if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItemContacts)){
List<String> listIds = listPayWorkingGroupSubItemContacts.stream().map(PayWorkingGroupSubItemContacts::getContactsTemporaryId).collect(Collectors.toList());
List<PayContactsManagementTemporary> payWorkingTemporary = payContactsManagementTemporaryService.listByIds(listIds);
if(!CollectionUtils.isEmpty(payWorkingTemporary)){
listId.addAll(payWorkingTemporary);
}
}
newPaidAmount =subtract(payWorking.getPaidAmount(),payPaymentRecord.getAmountReceived());//累加实收
inAccount = getInAccount(payWorking.getReceivableAmount(), newPaidAmount);//到账状态
paymentStatus = payPaymentCheckService.getPaymentStatus(payWorking.getReceivableAmount(), newPaidAmount, PaymentStatusEnum.COMPLETED.getCode());//缴费状态
tax = subtract(payWorking.getPaidTax(),payPaymentRecord.getTax());
noTaxAmount = subtract(payWorking.getPaidNoTaxAmount(),payPaymentRecord.getNoTaxAmount());
payWorking.setPaidTax(tax);
payWorking.setPaidNoTaxAmount(noTaxAmount);
//更新主列表
payWorking.setPaidAmount(newPaidAmount);
payWorking.setInAccount(inAccount);
payWorking.setPaymentStatus(paymentStatus);
payWorkingGroupSubItemMapper.updateById(payWorking);
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(payPaymentRecord.getProjectId());
PayMeeting payMeeting =payMeetingService.getById(meeting.getMeetingId());
PayContactsManagement meetingPayContactsManagement = payContactsManagementService.getById(meeting.getContractId());
if(!Objects.isNull(meetingPayContactsManagement)){
String str = JSON.toJSONString(meetingPayContactsManagement);
PayContactsManagementTemporary meetingTemporary = JSONObject.parseObject(str,PayContactsManagementTemporary.class);
listId.add(meetingTemporary);
}
newPaidAmount =subtract(meeting.getPaidAmount(),payPaymentRecord.getAmountReceived());//累加实收
inAccount = getInAccount(meeting.getAmountReceivable(), newPaidAmount);//到账状态
paymentStatus = payPaymentCheckService.getPaymentStatus(meeting.getAmountReceivable(), newPaidAmount, PaymentStatusEnum.COMPLETED.getCode());//缴费状态
tax = subtract(meeting.getPaidTax(),payPaymentRecord.getTax());
noTaxAmount = subtract(meeting.getPaidNoTaxAmount(),payPaymentRecord.getNoTaxAmount());
meeting.setPaidTax(tax);
meeting.setPaidNoTaxAmount(noTaxAmount);
//更新主列表
meeting.setPaidAmount(newPaidAmount);
meeting.setInAccount(inAccount);
meeting.setPaymentStatus(paymentStatus);
payMeetingSituationMapper.updateById(meeting);
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem member = payMemberProjectSubitemMapper.selectById(payPaymentRecord.getProjectId());
PayMemberProject payMemberProject = memberProjectService.getById(member.getProjectId());
PayContactsManagementTemporary memberTemporary = payContactsManagementTemporaryService.getById(member.getCompanyContactTemporaryId());
if(!Objects.isNull(memberTemporary)){
listId.add(memberTemporary);
}
newPaidAmount =subtract(member.getPaidAmount(),payPaymentRecord.getAmountReceived());//累加实收
inAccount = getInAccount(member.getAmountReceivable(), newPaidAmount);//到账状态
paymentStatus = payPaymentCheckService.getPaymentStatus(member.getAmountReceivable(), newPaidAmount, PaymentStatusEnum.COMPLETED.getCode());//缴费状态
tax = subtract(member.getPaidTax(),payPaymentRecord.getTax());
noTaxAmount = subtract(member.getPaidNoTaxAmount(),payPaymentRecord.getNoTaxAmount());
member.setPaidTax(tax);
member.setPaidNoTaxAmount(noTaxAmount);
//更新主列表
member.setPaidAmount(newPaidAmount);
member.setInAccount(inAccount);
member.setPaymentStatus(paymentStatus);
payMemberProjectSubitemMapper.updateById(member);
break;
//标协会员
case PayIncomeContractCommon.PROJECT_TYPE5:
throw new JeroBootException("标协会员类型不可撤销!");
//标协证书
case PayIncomeContractCommon.PROJECT_TYPE6:
throw new JeroBootException("标协证书类型不可撤销!");
default:break;
}
}
/**
* 获取对象ID
*