Commit 66e431f73c24dbda86bfab81ddc3c76dedb5dcda

Authored by 房远帅
1 parent 6328a313

账期:台账明细-存款拆分

... ... @@ -235,21 +235,42 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
235 235 if (receiptLedgerInfo == null) {
236 236 throw new DefaultClientException("应收款台账明细不存在!");
237 237 }
238   - // 判断拆分后总数量是否变化
239   - List<BigDecimal> splitQuantityList = vo.getSplitQuantityList();
240   - boolean match = CommonUtil.isQuantityMatchWithScale(splitQuantityList, receiptLedgerInfo.getStartAccountReceivable(), 4);
241   - if (!match) {
242   - throw new DefaultClientException("拆分金额总和必须等于原先期初应收账款金额!");
243   - }
244   - // 封装数据
245   - List<ReceiptLedgerInfo> detailList = new ArrayList<>();
246   - for (BigDecimal quantity : splitQuantityList) {
247   - ReceiptLedgerInfo data = getReceiptLedgerInfo(quantity, receiptLedgerInfo);
248   - detailList.add(data);
249   - }
250   - getBaseMapper().batchAdd(detailList);
251   - //删除应收款台账明细(逻辑删除)
252   - logicalDelete(id);
  238 + if ("DEBT".equals(vo.getType())) {
  239 + // 判断拆分后总数量是否变化
  240 + List<BigDecimal> splitQuantityList = vo.getSplitQuantityList();
  241 + boolean match = CommonUtil.isQuantityMatchWithScale(splitQuantityList, receiptLedgerInfo.getStartAccountReceivable(), 4);
  242 + if (!match) {
  243 + throw new DefaultClientException("拆分金额总和必须等于原先期初应收账款金额!");
  244 + }
  245 + // 封装数据
  246 + List<ReceiptLedgerInfo> detailList = new ArrayList<>();
  247 + for (BigDecimal quantity : splitQuantityList) {
  248 + ReceiptLedgerInfo data = getReceiptLedgerInfo(quantity, receiptLedgerInfo, vo.getType());
  249 + detailList.add(data);
  250 + }
  251 + getBaseMapper().batchAdd(detailList);
  252 + //删除应收款台账明细(逻辑删除)
  253 + logicalDelete(id);
  254 + } else if ("DEPOSIT".equals(vo.getType())) {
  255 + // 判断拆分后总数量是否变化
  256 + List<BigDecimal> returnedAmountList = vo.getReturnedAmountList();
  257 + boolean match = CommonUtil.isQuantityMatchWithScale(returnedAmountList, receiptLedgerInfo.getReturnedAmount(), 4);
  258 + if (!match) {
  259 + throw new DefaultClientException("拆分金额总和必须等于原先回笼资金!");
  260 + }
  261 + // 封装数据
  262 + List<ReceiptLedgerInfo> detailList = new ArrayList<>();
  263 + for (BigDecimal quantity : returnedAmountList) {
  264 + ReceiptLedgerInfo data = getReceiptLedgerInfo(quantity, receiptLedgerInfo, vo.getType());
  265 + detailList.add(data);
  266 + }
  267 + getBaseMapper().batchAdd(detailList);
  268 + //删除应收款台账明细(逻辑删除)
  269 + logicalDelete(id);
  270 + } else {
  271 + throw new DefaultClientException("拆分类型有误!");
  272 + }
  273 +
253 274 }
254 275
255 276
... ... @@ -258,9 +279,10 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
258 279 *
259 280 * @param quantity 数量
260 281 * @param vo 原数据
  282 + * @param type 拆分类型:存款:DEPOSIT 欠款:DEBT
261 283 * @return ReceiptLedgerInfo
262 284 */
263   - private static ReceiptLedgerInfo getReceiptLedgerInfo(BigDecimal quantity, ReceiptLedgerInfo vo) {
  285 + private static ReceiptLedgerInfo getReceiptLedgerInfo(BigDecimal quantity, ReceiptLedgerInfo vo, String type) {
264 286 String userId = SecurityUtil.getCurrentUser().getId();
265 287 ReceiptLedgerInfo data = new ReceiptLedgerInfo();
266 288 data.setId(IdUtil.getId());
... ... @@ -275,13 +297,26 @@ public class ReceiptLedgerInfoServiceImpl extends BaseMpServiceImpl<ReceiptLedge
275 297 data.setCustomerId(vo.getCustomerId());
276 298 data.setFactoryType(vo.getFactoryType());
277 299 data.setShipmentDate(vo.getShipmentDate());
278   - data.setStartAccountReceivable(quantity);
  300 + if ("DEBT".equals(type)) {
  301 + data.setStartAccountReceivable(quantity);
  302 + } else {
  303 + data.setStartAccountReceivable(vo.getStartAccountReceivable());
  304 + }
279 305 data.setArrivalDate(vo.getArrivalDate());
280 306 data.setProcessedDate(vo.getProcessedDate());
281 307 data.setActualReturnedDate(vo.getActualReturnedDate());
282   - data.setReturnedAmount(vo.getReturnedAmount());
283   - //拆分的时候期末应收账款=期初-回笼资金(这时候为0)
284   - data.setEndAccountReceivable(quantity);
  308 + if ("DEPOSIT".equals(type)) {
  309 + data.setReturnedAmount(quantity);
  310 + } else {
  311 + data.setReturnedAmount(vo.getReturnedAmount());
  312 + }
  313 + if ("DEBT".equals(type)) {
  314 + //欠款拆分的时候期末应收账款=期初-回笼资金(这时候为0)
  315 + data.setEndAccountReceivable(quantity);
  316 + } else {
  317 + //存款拆分的时候期末应收账款=回笼资金取负数
  318 + data.setEndAccountReceivable(quantity.negate());
  319 + }
285 320 data.setApplyStatus(vo.getApplyStatus());
286 321 data.setCoordinateDate(vo.getCoordinateDate());
287 322 data.setRemark(vo.getRemark());
... ...
... ... @@ -28,7 +28,20 @@ public class ReceiptLedgerInfoSplitVo extends PageVo implements BaseVo, Serializ
28 28 * 拆分金额集合
29 29 */
30 30 @ApiModelProperty("拆分金额集合")
31   - @NotEmpty(message = "拆分金额不能为空")
32 31 @TypeMismatch(message = "拆分金额格式有误!")
33 32 private List<BigDecimal> splitQuantityList;
  33 +
  34 + /**
  35 + * 拆分金额集合
  36 + */
  37 + @ApiModelProperty("拆分回笼资金集合")
  38 + @TypeMismatch(message = "拆分回笼资金格式有误!")
  39 + private List<BigDecimal> returnedAmountList;
  40 +
  41 + /**
  42 + * 拆分类型:存款:DEPOSIT 欠款:DEBT
  43 + */
  44 + @ApiModelProperty("拆分类型")
  45 + @NotBlank(message = "拆分类型不能为空!")
  46 + private String type;
34 47 }
... ...