|
@@ -9,17 +9,21 @@ import com.dk.common.response.ResponseCodeEnum;
|
|
|
import com.dk.common.response.ResponseResultUtil;
|
|
import com.dk.common.response.ResponseResultUtil;
|
|
|
import com.dk.common.response.ResponseResultVO;
|
|
import com.dk.common.response.ResponseResultVO;
|
|
|
import com.dk.mdm.infrastructure.convert.mac.MacTransferConvert;
|
|
import com.dk.mdm.infrastructure.convert.mac.MacTransferConvert;
|
|
|
|
|
+import com.dk.mdm.infrastructure.convert.mac.MacTransferItemConvert;
|
|
|
|
|
+import com.dk.mdm.mapper.mac.MacTransferItemMapper;
|
|
|
import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
|
|
import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
|
|
|
import com.dk.mdm.mapper.mst.MoneyAccountMapper;
|
|
import com.dk.mdm.mapper.mst.MoneyAccountMapper;
|
|
|
import com.dk.mdm.model.pojo.mac.MacTransfer;
|
|
import com.dk.mdm.model.pojo.mac.MacTransfer;
|
|
|
import com.dk.mdm.mapper.mac.MacTransferMapper;
|
|
import com.dk.mdm.mapper.mac.MacTransferMapper;
|
|
|
import com.dk.common.service.BaseService;
|
|
import com.dk.common.service.BaseService;
|
|
|
import com.dk.common.mapper.BaseMapper;
|
|
import com.dk.common.mapper.BaseMapper;
|
|
|
|
|
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
|
|
|
import com.dk.mdm.model.pojo.mst.MoneyAccount;
|
|
import com.dk.mdm.model.pojo.mst.MoneyAccount;
|
|
|
import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
|
|
import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
|
|
|
import com.dk.mdm.model.query.mac.MacTransferQuery;
|
|
import com.dk.mdm.model.query.mac.MacTransferQuery;
|
|
|
import com.dk.mdm.model.response.mac.MacTransferResponse;
|
|
import com.dk.mdm.model.response.mac.MacTransferResponse;
|
|
|
import com.dk.mdm.model.vo.mac.MacTransferVO;
|
|
import com.dk.mdm.model.vo.mac.MacTransferVO;
|
|
|
|
|
+import com.dk.mdm.model.vo.mac.MacTransferItemVO;
|
|
|
import com.dk.mdm.service.common.CommonService;
|
|
import com.dk.mdm.service.common.CommonService;
|
|
|
import com.dk.mdm.service.mst.MoneyAccountService;
|
|
import com.dk.mdm.service.mst.MoneyAccountService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -48,6 +52,9 @@ public class MacTransferService extends BaseService<MacTransfer> {
|
|
|
private MacTransferMapper macTransferMapper;
|
|
private MacTransferMapper macTransferMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
|
+ private MacTransferItemMapper macTransferItemMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
private MoneyAccountService moneyAccountService;
|
|
private MoneyAccountService moneyAccountService;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -65,6 +72,9 @@ public class MacTransferService extends BaseService<MacTransfer> {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private MacTransferConvert macTransferConvert;
|
|
private MacTransferConvert macTransferConvert;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private MacTransferItemConvert macTransferItemConvert;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @desc : 条件查询
|
|
* @desc : 条件查询
|
|
|
* @author : 付斌
|
|
* @author : 付斌
|
|
@@ -104,42 +114,50 @@ public class MacTransferService extends BaseService<MacTransfer> {
|
|
|
macTransfer.setTrfId(codeMap.get("outId").toString()).setTrfNo(codeMap.get("outNote").toString());
|
|
macTransfer.setTrfId(codeMap.get("outId").toString()).setTrfNo(codeMap.get("outNote").toString());
|
|
|
macTransferMapper.insert(macTransfer);
|
|
macTransferMapper.insert(macTransfer);
|
|
|
|
|
|
|
|
- // 更新资金账户
|
|
|
|
|
- MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransfer.getTrfOutMac());
|
|
|
|
|
- // 如果账户不允许为负数
|
|
|
|
|
- if(!moneyAccountForUpdate.getFlgNegative()){
|
|
|
|
|
- // 如果账户余额比转出金额小,就不允许转出
|
|
|
|
|
- if(moneyAccountForUpdate.getBalance().compareTo(macTransfer.getAmtTrf()) == -1){
|
|
|
|
|
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
|
|
|
|
|
|
|
+ // 明细保存
|
|
|
|
|
+ if (macTransferVO.getItemList() != null && macTransferVO.getItemList().size() > 0) {
|
|
|
|
|
+ for (MacTransferItemVO macTransferItemVO : macTransferVO.getItemList()) {
|
|
|
|
|
+ MacTransferItem macTransferItem = macTransferItemConvert.convertToPo(macTransferItemVO);
|
|
|
|
|
+ macTransferItem.setTrfId(macTransfer.getTrfId()).setCpId(macTransfer.getCpId()).setMakeStaff(macTransfer.getMakeStaff());
|
|
|
|
|
+ macTransferItemMapper.insert(macTransferItem);
|
|
|
|
|
+
|
|
|
|
|
+ // 更新资金账户
|
|
|
|
|
+ MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ // 如果账户不允许为负数
|
|
|
|
|
+ if(!moneyAccountForUpdate.getFlgNegative()){
|
|
|
|
|
+ // 如果账户余额比转出金额小,就不允许转出
|
|
|
|
|
+ if(moneyAccountForUpdate.getBalance().compareTo(macTransferItem.getAmtTrf()) == -1){
|
|
|
|
|
+ throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 插入转出流水
|
|
|
|
|
+ MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
+ moneyAccountItem.setMacId(macTransferItem.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
+ .setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
+ .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
+ moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
+
|
|
|
|
|
+ MoneyAccount moneyAccountUpdate = new MoneyAccount();
|
|
|
|
|
+ moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().subtract(macTransferItem.getAmtTrf()))
|
|
|
|
|
+ .setMacId(moneyAccountForUpdate.getMacId());
|
|
|
|
|
+ moneyAccountService.updateByUuid(moneyAccountUpdate);
|
|
|
|
|
+
|
|
|
|
|
+ // 插入转入流水
|
|
|
|
|
+ moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
+ moneyAccountItem.setMacId(macTransferItem.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
+ .setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
+ .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
+ moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
+
|
|
|
|
|
+ // 更新资金账户
|
|
|
|
|
+ moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransferItem.getTrfInMac());
|
|
|
|
|
+ moneyAccountUpdate = new MoneyAccount();
|
|
|
|
|
+ moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(macTransferItem.getAmtTrf()))
|
|
|
|
|
+ .setMacId(moneyAccountForUpdate.getMacId());
|
|
|
|
|
+ moneyAccountService.updateByUuid(moneyAccountUpdate);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- // 插入转出流水
|
|
|
|
|
- MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
- moneyAccountItem.setMacId(macTransfer.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
- .setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
- .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
- moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
-
|
|
|
|
|
- MoneyAccount moneyAccountUpdate = new MoneyAccount();
|
|
|
|
|
- moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().subtract(macTransfer.getAmtTrf()))
|
|
|
|
|
- .setMacId(moneyAccountForUpdate.getMacId());
|
|
|
|
|
- moneyAccountService.updateByUuid(moneyAccountUpdate);
|
|
|
|
|
-
|
|
|
|
|
- // 插入转入流水
|
|
|
|
|
- moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
- moneyAccountItem.setMacId(macTransfer.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
- .setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
- .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
- moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
-
|
|
|
|
|
- // 更新资金账户
|
|
|
|
|
- moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransfer.getTrfInMac());
|
|
|
|
|
- moneyAccountUpdate = new MoneyAccount();
|
|
|
|
|
- moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(macTransfer.getAmtTrf()))
|
|
|
|
|
- .setMacId(moneyAccountForUpdate.getMacId());
|
|
|
|
|
- moneyAccountService.updateByUuid(moneyAccountUpdate);
|
|
|
|
|
-
|
|
|
|
|
return ResponseResultUtil.success();
|
|
return ResponseResultUtil.success();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -152,41 +170,57 @@ public class MacTransferService extends BaseService<MacTransfer> {
|
|
|
rollbackFor = {Exception.class}
|
|
rollbackFor = {Exception.class}
|
|
|
)
|
|
)
|
|
|
public ResponseResultVO<?> update(MacTransferVO macTransferVO) {
|
|
public ResponseResultVO<?> update(MacTransferVO macTransferVO) {
|
|
|
- MacTransfer macTransferForUpdate = macTransferMapper.selectByIdForUpdate(macTransferVO.getTrfId());
|
|
|
|
|
|
|
+ // 将之前的明细全部删除
|
|
|
|
|
+ List<MacTransferItem> MacTransferItemOriginalList = macTransferItemMapper.selectByZIdForUpdate(macTransferVO.getTrfId());
|
|
|
// 需要重新计算的资金账户
|
|
// 需要重新计算的资金账户
|
|
|
List<String> macList = new ArrayList<>();
|
|
List<String> macList = new ArrayList<>();
|
|
|
- macList.add(macTransferForUpdate.getTrfOutMac());
|
|
|
|
|
- macList.add(macTransferForUpdate.getTrfInMac());
|
|
|
|
|
-
|
|
|
|
|
- // 删除账户流水
|
|
|
|
|
- moneyAccountItemMapper.deleteByInvoiceId(macTransferVO.getTrfId());
|
|
|
|
|
|
|
+ for (MacTransferItem macTransferItem : MacTransferItemOriginalList) {
|
|
|
|
|
+ // 删除收付款明细
|
|
|
|
|
+ macTransferItemMapper.deleteById(macTransferItem.getItemId());
|
|
|
|
|
+ // 删除账户流水
|
|
|
|
|
+ moneyAccountItemMapper.deleteByInvoiceId(macTransferItem.getItemId());
|
|
|
|
|
+
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ // 新增明细
|
|
|
|
|
+ if (macTransferVO.getItemList() != null && macTransferVO.getItemList().size() > 0) {
|
|
|
|
|
+ for (MacTransferItemVO macTransferItemVO : macTransferVO.getItemList()) {
|
|
|
|
|
+ MacTransferItem macTransferItem = macTransferItemConvert.convertToPo(macTransferItemVO);
|
|
|
|
|
+ macTransferItem.setItemId(null);
|
|
|
|
|
+ macTransferItemMapper.insert(macTransferItem);
|
|
|
|
|
+
|
|
|
|
|
+ // 插入转出流水
|
|
|
|
|
+ MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
+ moneyAccountItem.setMacId(macTransferItem.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
+ .setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf().negate()).setAccDate(macTransferVO.getAccDate())
|
|
|
|
|
+ .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransferVO.getCpId());
|
|
|
|
|
+ moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
+
|
|
|
|
|
+ // 插入转入流水
|
|
|
|
|
+ moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
+ moneyAccountItem.setMacId(macTransferItem.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
+ .setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf()).setAccDate(macTransferVO.getAccDate())
|
|
|
|
|
+ .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransferVO.getCpId());
|
|
|
|
|
+ moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
+
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// 转化实体
|
|
// 转化实体
|
|
|
MacTransfer macTransfer = macTransferConvert.convertToPo(macTransferVO);
|
|
MacTransfer macTransfer = macTransferConvert.convertToPo(macTransferVO);
|
|
|
super.updateByUuid(macTransfer);
|
|
super.updateByUuid(macTransfer);
|
|
|
|
|
|
|
|
- // 插入转出流水
|
|
|
|
|
- MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
- moneyAccountItem.setMacId(macTransfer.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
- .setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
- .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
- moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
-
|
|
|
|
|
- if (!macList.contains(macTransfer.getTrfOutMac())) {
|
|
|
|
|
- macList.add(macTransfer.getTrfOutMac());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 插入转入流水
|
|
|
|
|
- moneyAccountItem = new MoneyAccountItem();
|
|
|
|
|
- moneyAccountItem.setMacId(macTransfer.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
|
|
|
|
|
- .setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf()).setAccDate(macTransfer.getAccDate())
|
|
|
|
|
- .setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
|
|
|
|
|
- moneyAccountItemMapper.insert(moneyAccountItem);
|
|
|
|
|
-
|
|
|
|
|
- if (!macList.contains(macTransfer.getTrfInMac())) {
|
|
|
|
|
- macList.add(macTransfer.getTrfInMac());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// 更新账户余额
|
|
// 更新账户余额
|
|
|
for (String macId : macList) {
|
|
for (String macId : macList) {
|
|
|
accountService.updateMac(macId);
|
|
accountService.updateMac(macId);
|
|
@@ -207,12 +241,28 @@ public class MacTransferService extends BaseService<MacTransfer> {
|
|
|
throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
|
|
throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 删除账户流水
|
|
|
|
|
- moneyAccountItemMapper.deleteByInvoiceId(id);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 将之前的明细全部删除
|
|
|
|
|
+ List<MacTransferItem> MacTransferItemOriginalList = macTransferItemMapper.selectByZIdForUpdate(id);
|
|
|
// 需要重新计算的资金账户
|
|
// 需要重新计算的资金账户
|
|
|
- accountService.updateMac(macTransferForUpdate.getTrfOutMac());
|
|
|
|
|
- accountService.updateMac(macTransferForUpdate.getTrfInMac());
|
|
|
|
|
|
|
+ List<String> macList = new ArrayList<>();
|
|
|
|
|
+ for (MacTransferItem macTransferItem : MacTransferItemOriginalList) {
|
|
|
|
|
+ // 删除收付款明细
|
|
|
|
|
+ macTransferItemMapper.deleteById(macTransferItem.getItemId());
|
|
|
|
|
+ // 删除账户流水
|
|
|
|
|
+ moneyAccountItemMapper.deleteByInvoiceId(macTransferItem.getItemId());
|
|
|
|
|
+
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!macList.contains(macTransferItem.getTrfOutMac())) {
|
|
|
|
|
+ macList.add(macTransferItem.getTrfOutMac());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 更新账户余额
|
|
|
|
|
+ for (String macId : macList) {
|
|
|
|
|
+ accountService.updateMac(macId);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// 作废
|
|
// 作废
|
|
|
MacTransfer macTransferUpdate = new MacTransfer();
|
|
MacTransfer macTransferUpdate = new MacTransfer();
|