ReceiptService.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.dk.mdm.service.mac;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.dk.common.infrastructure.annotaiton.Pagination;
  6. import com.dk.common.infrastructure.constant.Constant;
  7. import com.dk.common.model.pojo.PageList;
  8. import com.dk.common.response.ResponseResultUtil;
  9. import com.dk.common.response.ResponseResultVO;
  10. import com.dk.mdm.infrastructure.convert.mac.ReceiptConvert;
  11. import com.dk.mdm.mapper.mac.AccountObjectMapper;
  12. import com.dk.mdm.mapper.mac.ReceivableMapper;
  13. import com.dk.mdm.model.pojo.mac.AccountObject;
  14. import com.dk.mdm.model.pojo.mac.Receipt;
  15. import com.dk.mdm.mapper.mac.ReceiptMapper;
  16. import com.dk.common.service.BaseService;
  17. import com.dk.common.mapper.BaseMapper;
  18. import com.dk.mdm.model.pojo.mac.Receivable;
  19. import com.dk.mdm.model.query.mac.ReceiptQuery;
  20. import com.dk.mdm.model.response.mac.ReceiptResponse;
  21. import com.dk.mdm.model.vo.mac.ReceiptVO;
  22. import com.dk.mdm.service.common.CommonService;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.UUID;
  29. @Service
  30. @Transactional
  31. public class ReceiptService extends BaseService<Receipt> {
  32. @Override
  33. public String getPrimaryKey() {
  34. return "receipt_id";
  35. }
  36. @Override
  37. public BaseMapper<Receipt> getRepository() {
  38. return receiptMapper;
  39. }
  40. @Autowired
  41. private ReceiptMapper receiptMapper;
  42. @Autowired
  43. private ReceivableMapper receivableMapper; // 应收账款
  44. @Autowired
  45. private AccountObjectService accountObjectService;
  46. @Autowired
  47. private AccountObjectMapper accountObjectMapper;
  48. @Autowired
  49. private CommonService commonService;
  50. @Autowired
  51. private ReceiptConvert receiptConvert;
  52. /**
  53. * @desc : 条件查询
  54. * @author : 付斌
  55. * @date : 2023/1/9 10:40
  56. */
  57. @Pagination
  58. public ResponseResultVO<PageList<ReceiptResponse>> selectByCond(ReceiptQuery receiptQuery) {
  59. return super.mergeListWithCount(receiptQuery, receiptMapper.selectByCond(receiptQuery),
  60. receiptMapper.countByCond(receiptQuery));
  61. }
  62. /**
  63. * @desc : 新建方法
  64. * @author : 付斌
  65. * @date : 2023/1/9 10:49
  66. */
  67. @Transactional(
  68. rollbackFor = {Exception.class}
  69. )
  70. public ResponseResultVO<?> insert(Map<String, Object> map) {
  71. List<ReceiptVO> receiptVOList = JSONArray.parseArray(JSON.toJSONString(map.get("itemList"))).toJavaList(ReceiptVO.class);
  72. // 明细保存
  73. if (receiptVOList != null && receiptVOList.size() > 0) {
  74. for (ReceiptVO receiptVO : receiptVOList) {
  75. // 获取单号
  76. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.CUSRECEIPT.getName(), false);
  77. receiptVO.setReceiptId(codeMap.get("outId").toString()).setReceiptNo(codeMap.get("outNote").toString())
  78. .setReceiptType(Constant.DocumentType.ORDER.getName());
  79. // 转化实体
  80. Receipt receipt = receiptConvert.convertToPo(receiptVO);
  81. // Receipt保存
  82. super.insert(receipt);
  83. // 插入应收账款
  84. Receivable receivable = new Receivable();
  85. // 获取单号
  86. codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.RECEIVABLE.getName(), false);
  87. receivable.setRecId(codeMap.get("outId").toString()).setRecNo(codeMap.get("outNote").toString())
  88. .setRecType(Constant.recType.SHOU_KUAN.getName()).setAccType(1).setRecDirection(false)
  89. .setObjectId(receiptVO.getCusId()).setOrgId(receiptVO.getOrgId()).setStaffId(receipt.getStaffId())
  90. .setAccDate(receiptVO.getReceiptDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName())
  91. .setAmtReceivable(receiptVO.getReceiptAmt().negate()).setAmtResidue(receiptVO.getReceiptAmt().negate())
  92. .setBiznisType("t_mac_receipt").setBiznisId(receiptVO.getReceiptId()).setBiznisNo(receiptVO.getReceiptNo())
  93. .setMakeStaff(receiptVO.getMakeStaff());
  94. receivableMapper.insert(receivable);
  95. // 更新收款单上的应收账款
  96. Receipt receiptUpdate = new Receipt();
  97. receiptUpdate.setReceivableId(receivable.getRecId()).setReceiptId(receiptVO.getReceiptId());
  98. super.updateByUuid(receiptUpdate);
  99. // 插入账款总表
  100. AccountObject accountObjectForUpdate = accountObjectMapper.selectByIdForUpdate(receiptVO.getCusId());
  101. // 没有账款对象,需要新建
  102. if(accountObjectForUpdate == null){
  103. accountObjectForUpdate = new AccountObject();
  104. accountObjectForUpdate.setObjectId(receiptVO.getCusId()).setObjectType("对象类型-客户");
  105. accountObjectMapper.insert(accountObjectForUpdate);
  106. }
  107. // 更新账款总表上收款的相关字段
  108. AccountObject accountObjectUpdate = new AccountObject();
  109. accountObjectUpdate.setSumPayment(accountObjectForUpdate.getSumPayment().add(receiptVO.getReceiptAmt()))// 总收付
  110. .setSumMoney(accountObjectForUpdate.getSumMoney().add(receiptVO.getReceiptAmt()))// 总资金
  111. .setAmtRefundable(accountObjectForUpdate.getAmtRefundable().add(receiptVO.getReceiptAmt())) // 可退金额
  112. .setObjectId(accountObjectForUpdate.getObjectId());
  113. accountObjectService.updateByUuid(accountObjectUpdate);
  114. }
  115. }
  116. return ResponseResultUtil.success();
  117. }
  118. /**
  119. * @desc : 编辑方法
  120. * @author : 付斌
  121. * @date : 2023/1/9 10:49
  122. */
  123. @Transactional(
  124. rollbackFor = {Exception.class}
  125. )
  126. public ResponseResultVO<?> update(ReceiptVO receiptVO) {
  127. Receipt receipt = receiptConvert.convertToPo(receiptVO);
  128. return ResponseResultUtil.success(super.update(receipt, new UpdateWrapper<Receipt>().lambda().eq(Receipt::getReceiptId,
  129. UUID.fromString(receipt.getReceiptId()))));
  130. }
  131. }