Commit 82c584be by huangshunlin

即期售汇

parent 230cc0d3
package com.brilliance.isc.funds.common.controller;
import com.brilliance.isc.common.bop.controller.AbstractJshController;
import com.brilliance.isc.common.jshmod.vo.JshmodRequest;
import com.brilliance.isc.common.jshmod.vo.JshmodResponse;
import com.brilliance.isc.vo.ResponseSet;
import com.brilliance.isc.vo.funds.FxdBizInfoVo;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @program: isc-funds
* @ClassName: FxdJshController
* @description: 结售汇申报组件
* @author: huangshunlin
* @create: 2024-10-12 13:48
*/
@RestController
@RequestMapping("/fxd")
public class FxdJshController extends AbstractJshController<FxdBizInfoVo> {
@RequestMapping("/calcJshmod")
@Override
public ResponseSet<JshmodResponse> calcJshmod(@RequestBody JshmodRequest<FxdBizInfoVo> jshmodRequest) {
return super.calcJshmod(jshmodRequest);
}
}
......@@ -26,10 +26,6 @@ public class FxtssbSettleRegister implements ISettleRegister {
@Autowired
private SetglgService setglgService;
@Autowired
private DftcreSettleRegister dftcreSettleRegister;
@Autowired
private TrtcreSettleRegister trtcreSettleRegister;
@Autowired
private DefaultSettleRegister defaultSettleRegister;
......@@ -37,8 +33,6 @@ public class FxtssbSettleRegister implements ISettleRegister {
public void registerSettlement(SetmodVo setmodVo) {
transRegister(setmodVo);
defaultSettleRegister.registerSettlement(setmodVo);
dftcreSettleRegister.registerSettlement(setmodVo);
trtcreSettleRegister.registerSettlement(setmodVo);
}
/**
......
......@@ -105,6 +105,7 @@ public class FxtssbTransactionServiceImpl extends AbstractTransactionService<Fxt
serviceRegisterMaps.put(CommonContants.TRNDOC_SERVICE, "N");
serviceRegisterMaps.put(CommonContants.GLEMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.TRNMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.BOPSET_JSH_SERVICE, "Y");
}
......@@ -115,7 +116,6 @@ public class FxtssbTransactionServiceImpl extends AbstractTransactionService<Fxt
public void ruleMtabutSavN500(FxtssbStoreBo bo) {
TrnmodVo trnmodVo = transactionHelpService.getTransactionStoreSet().getTrnmodVo();
Fxdgrp fxdgrp = bo.getFxdgrp();
fxToolComponent.getref(fxdgrp);
// 1. Create (rsp. update) Contract (incl. Texts)
......@@ -183,6 +183,7 @@ public class FxtssbTransactionServiceImpl extends AbstractTransactionService<Fxt
bo.getFxdgrp().getRec().setFxtyp("SB");
String extkey = SettleContext.getUserSession().getUsr().getExtkey();
bo.getFxdgrp().getRec().setUsr(extkey);
bo.getFxdgrp().getRec().setOwnusr(extkey);
//钞汇 默认 1:现汇
bo.getFxtp().setCshflg("1");
//这笔结售汇业务的成交日期,系统默认为当前日期,可以根据业务实际情况修改。
......
package com.brilliance.isc.funds.fxtsss.check;
import com.brilliance.isc.common.transaction.newcheck.AbstractModuleValidator;
import com.brilliance.isc.common.transaction.newcheck.ValidResult;
import com.brilliance.isc.common.transaction.newcheck.Validate;
import com.brilliance.isc.funds.bo.funds.FxtsssStoreBo;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import com.brilliance.mda.runtime.mda.util.Strings;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
......@@ -32,5 +36,81 @@ public class FxtsssValidator extends AbstractModuleValidator<FxtsssStoreBo> {
return maps;
}
/**
* source:fxtsss.0017.script
*/
@Validate(path = "fxdgrp.rec.trnman")
public ValidResult checkFxdgrpRecTrnmanN1000(FxtsssStoreBo bo) {
if (MdaUtils.isEmpty(bo.getFxdgrp().getRec().getTrnman())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0018.script
*/
@Validate(path = "fxdgrp.rec.trdint")
public ValidResult checkFxdgrpRecTrdintN1000(FxtsssStoreBo bo) {
if (MdaUtils.compareTo(Strings.mid(bo.getFxdgrp().getRec().getFxtyp(), 2, 1), "B") == 0 && MdaUtils.isEmpty(bo.getFxdgrp().getRec().getTrdint())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0019.script
*/
@Validate(path = "fxdgrp.rec.trdout")
public ValidResult checkFxdgrpRecTrdoutN1000(FxtsssStoreBo bo) {
if (MdaUtils.compareTo(Strings.mid(bo.getFxdgrp().getRec().getFxtyp(), 2, 1), "S") == 0 && MdaUtils.isEmpty(bo.getFxdgrp().getRec().getTrdout())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0020.script
*/
@Validate(path = "fxdgrp.rec.acc")
public ValidResult checkFxdgrpRecAccN1000(FxtsssStoreBo bo) {
if (MdaUtils.isEmpty(bo.getFxdgrp().getRec().getAcc())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0021.script
*/
@Validate(path = "fxdgrp.rec.acc2")
public ValidResult checkFxdgrpRecAcc2N1000(FxtsssStoreBo bo) {
if (MdaUtils.isEmpty(bo.getFxdgrp().getRec().getAcc2())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0027.script
*/
@Validate(path = "fxdgrp.rec.dsp")
public ValidResult checkFxdgrpRecDspN1000(FxtsssStoreBo bo) {
if (MdaUtils.isEmpty(bo.getFxdgrp().getRec().getDsp())) {
return errorMandatory();
}
return null;
}
/**
* source:fxtsss.0028.script
*/
@Validate(path = "fxdgrp.rec.dsp2")
public ValidResult checkFxdgrpRecDsp2N1000(FxtsssStoreBo bo) {
if (MdaUtils.isEmpty(bo.getFxdgrp().getRec().getDsp2())) {
return errorMandatory();
}
return null;
}
}
package com.brilliance.isc.funds.fxtsss.register.diasav;
import com.brilliance.isc.common.register.diasav.IDiasavRegister;
import com.brilliance.isc.common.register.diasav.common.DftcreDiasavRegister;
import com.brilliance.isc.common.register.diasav.common.LiaallDiasavRegister;
import com.brilliance.isc.common.register.diasav.common.LiaallDiasavZZZRegister;
import com.brilliance.isc.common.register.diasav.common.TrtcreDiasavRegister;
import com.brilliance.isc.common.trndia.service.TrndiaService;
import com.brilliance.isc.common.trndia.vo.TrndiaVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @program: isc-funds
* @ClassName: FxtsssDiasavRegister
* @description: 即期售汇 Fxtsss 备忘录注册
* @author: huangshunlin
* @create: 2024-10-08 15:39
*/
@Component("fxtsss.diasavRegister")
public class FxtsssDiasavRegister implements IDiasavRegister {
@Autowired
private TrndiaService trndiaService;
@Autowired
private LiaallDiasavRegister liaallDiasavRegister;
@Autowired
private LiaallDiasavZZZRegister liaallDiasavZZZRegister;
@Autowired
private TrtcreDiasavRegister trtcreDiasavRegister;
@Autowired
private DftcreDiasavRegister dftcreDiasavRegister;
@Override
public void diasav(TrndiaVo trndia) {
trnDiasav(trndia);
liaallDiasavRegister.diasav(trndia);
liaallDiasavZZZRegister.diasav(trndia);
trtcreDiasavRegister.diasav(trndia);
dftcreDiasavRegister.diasav(trndia);
}
private void trnDiasav(TrndiaVo trndiaVo) {
}
}
package com.brilliance.isc.funds.fxtsss.register.fee;
import com.brilliance.isc.common.register.fee.AbstractFeeRegister;
import com.brilliance.isc.common.register.fee.common.SetmodFeeRegister;
import com.brilliance.isc.common.setmod.vo.SetmodVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("fxtsss.feeRegister")
public class FxtsssFeeRegister extends AbstractFeeRegister {
@Autowired
private SetmodFeeRegister setmodFeeRegister;
@Override
public void registerSettlement(SetmodVo setmodVo) {
transRegister(setmodVo);
setmodFeeRegister.registerSettlement(setmodVo);
}
private void transRegister(SetmodVo setmodVo) {
}
}
package com.brilliance.isc.funds.fxtsss.register.settle;
import com.brilliance.isc.common.register.settle.DefaultSettleRegister;
import com.brilliance.isc.common.register.settle.ISettleRegister;
import com.brilliance.isc.common.register.settle.common.DftcreSettleRegister;
import com.brilliance.isc.common.register.settle.common.TrtcreSettleRegister;
import com.brilliance.isc.common.setglg.service.SetglgService;
import com.brilliance.isc.common.setglg.vo.SetglgVo;
import com.brilliance.isc.common.setmod.service.SetmodService;
import com.brilliance.isc.common.setmod.vo.SetmodVo;
import com.brilliance.isc.vo.funds.FxdBizInfoVo;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import com.brilliance.mda.runtime.mda.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import static com.brilliance.mda.runtime.mda.Constants.NULLSTR;
@Component("fxtsss.settleRegister")
public class FxtsssSettleRegister implements ISettleRegister {
@Autowired
private SetglgService setglgService;
@Autowired
private DefaultSettleRegister defaultSettleRegister;
@Override
public void registerSettlement(SetmodVo setmodVo) {
transRegister(setmodVo);
defaultSettleRegister.registerSettlement(setmodVo);
}
/**
* source:fxtsss.0010.script
*/
private void transRegister(SetmodVo setmodVo) {
FxdBizInfoVo rec = (FxdBizInfoVo) setmodVo.getRec();
BigDecimal maxAmt = BigDecimal.ZERO;
BigDecimal nom1Amt = BigDecimal.ZERO;
if (setmodVo.getCbsMap().get("MAX") != null) {
maxAmt = setmodVo.getCbsMap().get("MAX").getAmt();
}
String nom1Cur = NULLSTR;
if (setmodVo.getCbsMap().get("NOM1") != null) {
nom1Amt = setmodVo.getCbsMap().get("NOM1").getAmt();
nom1Cur = setmodVo.getCbsMap().get("NOM1").getCur();
}
setmodVo.setDocamt(maxAmt);
setmodVo.setOpnamt(maxAmt);
SetglgVo setglg = setmodVo.getSetglg();
setglgService.setglgClrAmount(setglg, "TRN");
setglgService.setglgClrAmount(setglg, "SET");
String dsp = NULLSTR;
String dbtKey = NULLSTR;
String cdtKey = NULLSTR;
if (!MdaUtils.isEmpty(nom1Amt) && !MdaUtils.isEmpty(rec.getFxtyp())) {
if (MdaUtils.compareTo(Strings.mid(rec.getFxtyp(), 2, 1), "B") == 0) {
if (MdaUtils.compareTo(rec.getDsp(), "CA") == 0) {
dsp = "LOD";
} else {
dsp = rec.getDsp() + "D";
}
dbtKey = setglgService.setglgAddAmount(setglg, "TRN", "APL", setmodVo.getDoccur(), setmodVo.getSetamt(), "", dsp, "A", rec.getAcc(), "");
cdtKey = setglgService.setglgAddAmount(setglg, "SET", "APL", setmodVo.getDoccur(), setmodVo.getSetamt().negate(), "SET", rec.getDsp2() + "C", "F", rec.getAcc2(), "SET");
setglgService.setglgAddAmtFldAccCur(setglg, "SET", cdtKey, nom1Cur);
setglgService.setglgAddAmtFldExtRat(setglg, "SET", cdtKey, BigDecimal.ONE, rec.getRat());
setglgService.setSettlementDetails(setglg, "B", "APL", rec.getTrnman(), rec.getTrdint());
} else {
if (MdaUtils.compareTo(rec.getDsp(), "CA") == 0) {
dsp = "LOC";
} else {
dsp = rec.getDsp() + "C";
}
cdtKey = setglgService.setglgAddAmount(setglg, "TRN", "APL", setmodVo.getDoccur(), setmodVo.getSetamt().negate(), "", dsp, "A", rec.getAcc(), "");
dbtKey = setglgService.setglgAddAmount(setglg, "SET", "APL", setmodVo.getDoccur(), setmodVo.getSetamt(), "SET", rec.getDsp2() + "D", "F", rec.getAcc2(), "SET");
setglgService.setglgAddAmtFldAccCur(setglg, "SET", dbtKey, nom1Cur);
setglgService.setglgAddAmtFldExtRat(setglg, "SET", dbtKey, BigDecimal.ONE, rec.getRat());
setglgService.setSettlementDetails(setglg, "S", "APL", rec.getTrnman(), rec.getTrdout());
}
}
}
}
package com.brilliance.isc.funds.fxtsss.resource;
import com.brilliance.isc.common.context.SettleContext;
import com.brilliance.isc.common.transaction.controller.AbstractTransactionController;
import com.brilliance.isc.funds.fxtsss.service.FxtsssTransactionServiceImpl;
import com.brilliance.isc.funds.transfer.transaction.FxtsssStructMapper;
import com.brilliance.isc.funds.vo.funds.FxtsssStoreVo;
import com.brilliance.isc.transfer.IStructMapper;
import com.brilliance.isc.vo.ResponseSet;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @program: isc-funds
......@@ -29,5 +37,65 @@ public class FxtsssResource extends AbstractTransactionController<FxtsssStoreVo>
return fxtsssStructMapper;
}
@Resource(name = "fxtsss.transaction")
FxtsssTransactionServiceImpl fxtsssTransactionService;
@Autowired
private SettleContext settleContext;
/**
* 根据结售汇类型 等获取业务参号
*
* @param fxtsssStoreVo
* @return
*/
@PostMapping("/getRef")
public ResponseSet<String> getRef(@RequestBody FxtsssStoreVo fxtsssStoreVo) {
String ref = fxtsssTransactionService.getRef(fxtsssStoreVo);
return ResponseSet.simpleSuccess(ref);
}
@PostMapping("/defaultAccountsN1000")
public ResponseSet defaultAccountsN1000(@RequestBody FxtsssStoreVo fxtsssStoreVo) {
try {
settleContext.loadSettleSession("FXTSSS", "", "");
Map<String, List<String>> codeSet = fxtsssTransactionService.defaultAccountsN1000(fxtsssStoreVo);
ResponseSet success = ResponseSet.simpleSuccess(fxtsssStoreVo);
success.setCodeSet(codeSet);
return success;
} catch (Exception e) {
throw e;
} finally {
SettleContext.removeUserSession();
}
}
@PostMapping("/defaultRateN1000")
public ResponseSet defaultRateN1000(@RequestBody FxtsssStoreVo fxtsssStoreVo) {
try {
settleContext.loadSettleSession("FXTSSS", "", "");
fxtsssTransactionService.defaultRateN1000(fxtsssStoreVo);
return ResponseSet.simpleSuccess(fxtsssStoreVo);
} catch (Exception e) {
throw e;
} finally {
SettleContext.removeUserSession();
}
}
@PostMapping("/defaultCalculateN1100")
public ResponseSet defaultCalculateN1100(@RequestBody FxtsssStoreVo fxtsssStoreVo) {
try {
settleContext.loadSettleSession("FXTSSS", "", "");
fxtsssTransactionService.defaultCalculateN1100(fxtsssStoreVo);
return ResponseSet.simpleSuccess(fxtsssStoreVo);
} catch (Exception e) {
throw e;
} finally {
SettleContext.removeUserSession();
}
}
}
package com.brilliance.isc.funds.fxtsss.service;
import com.brilliance.isc.bo.*;
import com.brilliance.isc.bo.model.Fxacbs;
import com.brilliance.isc.bo.model.Fxdgrp;
import com.brilliance.isc.common.api.bch.service.BchService;
import com.brilliance.isc.common.cache.pta.PtaCacheService;
import com.brilliance.isc.common.cbsmod.service.CbsmodService;
import com.brilliance.isc.common.cbsmod.service.XrtmodService;
import com.brilliance.isc.common.contants.CommonContants;
import com.brilliance.isc.common.context.SettleContext;
import com.brilliance.isc.common.glemod.service.GlemodService;
import com.brilliance.isc.common.setmod.service.SetmodService;
import com.brilliance.isc.common.setmod.vo.SetmodVo;
import com.brilliance.isc.common.sysmod.SysmodService;
import com.brilliance.isc.common.transaction.AbstractTransactionService;
import com.brilliance.isc.common.transaction.help.TransactionHelpService;
import com.brilliance.isc.common.transaction.help.TransactionServiceSet;
import com.brilliance.isc.common.trnmod.service.TrnmodService;
import com.brilliance.isc.common.trnmod.vo.TrnmodVo;
import com.brilliance.isc.common.util.I18nUtil;
import com.brilliance.isc.common.util.StringUtils;
import com.brilliance.isc.common.vo.BizAmdInfoVo;
import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.brilliance.isc.funds.bo.funds.FxtsssStoreBo;
import com.brilliance.isc.funds.common.component.FxToolComponent;
import com.brilliance.isc.funds.fxtlop.service.FxtpService;
import com.brilliance.isc.funds.fxtsss.check.FxtsssValidator;
import com.brilliance.isc.funds.vo.funds.FxtsssStoreVo;
import com.brilliance.isc.mda.dao.PtyratMapper;
import com.brilliance.isc.vo.funds.FxdBizInfoVo;
import com.brilliance.mda.runtime.mda.IStream;
import com.brilliance.mda.runtime.mda.impl.Argument;
import com.brilliance.mda.runtime.mda.impl.StreamImpl;
import com.brilliance.mda.runtime.mda.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Map;
import java.math.BigDecimal;
import java.util.*;
import static com.brilliance.mda.runtime.mda.Constants.NULLSTR;
/**
* @program: isc-funds
......@@ -25,20 +57,54 @@ public class FxtsssTransactionServiceImpl extends AbstractTransactionService<Fxt
@Resource
private FxtsssValidator fxtsssValidator;
@Resource
private XrtmodService xrtmodService;
@Resource
private SysmodService sysmodService;
@Resource
private FxToolComponent fxToolComponent;
@Resource
private TransactionHelpService transactionHelpService;
@Resource
private SettleContext settleContext;
@Resource
private CbsmodService cbsmodService;
@Resource
private TrnmodService trnmodService;
@Resource
private GlemodService glemodService;
@Autowired
private PtaCacheService ptaCacheService;
@Resource
private BchService bchService;
@Resource
private PtyratMapper ptyratMapper;
@Resource
private SetmodService setmodService;
@Resource
private FxtpService fxtpService;
@PostConstruct
public void regisertService() {
serviceRegisterMaps.put(CommonContants.SETMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.TRNDOC_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.TRNDOC_SERVICE, "N");
serviceRegisterMaps.put(CommonContants.GLEMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.TRNDIA_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.TRNMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.UMDMOD_SERVICE, "N");
serviceRegisterMaps.put(CommonContants.LIMMOD_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.BOPSET_RMB_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.BOPSET_SZSB_BOPREM_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.BOPSET_CFABOP_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.FANXIQIAN_SERVICE, "Y");
serviceRegisterMaps.put(CommonContants.BOPSET_JSH_SERVICE, "Y");
}
......@@ -48,6 +114,33 @@ public class FxtsssTransactionServiceImpl extends AbstractTransactionService<Fxt
}
public void ruleMtabutSavN500(FxtsssStoreBo bo) {
TrnmodVo trnmodVo = transactionHelpService.getTransactionStoreSet().getTrnmodVo();
Fxdgrp fxdgrp = bo.getFxdgrp();
fxToolComponent.getref(fxdgrp);
// 1. Create (rsp. update) Contract (incl. Texts)
Argument<String> pathBox = new Argument<String>("", fxdgrp.getRec().getAccmng());
Argument<String> pathBox1 = new Argument<String>("", fxdgrp.getRec().getHdbch());
sysmodService.getPtyAccMng(fxdgrp.getApl().getPta().getPtyinr(), "", "", "", pathBox, pathBox1);
fxdgrp.getRec().setAccmng(pathBox.value);
fxdgrp.getRec().setHdbch(pathBox1.value);
fxToolComponent.sav(fxdgrp, BigDecimal.ZERO);
// 2. Build Transaction from FTDGRP
trnmodService.trnSetFromContract(trnmodVo);
cbsSav(bo, trnmodVo);
// save documents
}
private void cbsSav(FxtsssStoreBo bo, TrnmodVo trnmodVo) {
cbsmodService.cbsTrnSetNew("TRN", trnmodVo.getTrn().getInr());
Fxacbs cbs = bo.getFxdgrp().getCbs();
String trninr = transactionHelpService.getTrninr();
trnmodService.cbsTrnStore("MAXAMT", "AMT1", Dates.today(), cbs.getMax().getCur(), cbs.getMax().getAmt(), I18nUtil.getMessage("funds_fxtsss_000000"), bo.getFxdgrp().getRec(), trninr);
if (!MdaUtils.isEmpty(cbs.getNom1().getAmt())) {
trnmodService.cbsTrnStore("NOMAMT", "AMT1", Dates.today(), cbs.getNom1().getCur(), cbs.getNom1().getAmt(), I18nUtil.getMessage("funds_fxtsss_000000"), bo.getFxdgrp().getRec(), trninr);
trnmodService.cbsTrnStore("UTLAMT", "AMT1", Dates.today(), cbs.getMax().getCur(), cbs.getMax().getAmt(), I18nUtil.getMessage("funds_fxtsss_000000"), bo.getFxdgrp().getRec(), trninr);
}
}
@Override
......@@ -57,8 +150,21 @@ public class FxtsssTransactionServiceImpl extends AbstractTransactionService<Fxt
@Override
protected BizInfoVo buildBizInfo(FxtsssStoreBo transactionVo) {
return null;
FxdBizInfoVo bizInfoVo = new FxdBizInfoVo();
bizInfoVo.setObjtyp("FXD");
Fxd rec = transactionVo.getFxdgrp().getRec();
bizInfoVo.setObjinr(rec.getInr());
bizInfoVo.setOwnref(rec.getOwnref());
bizInfoVo.setFxtyp(rec.getFxtyp());
bizInfoVo.setAcc(rec.getAcc());
bizInfoVo.setAcc2(rec.getAcc2());
bizInfoVo.setDsp(rec.getDsp());
bizInfoVo.setDsp2(rec.getDsp2());
bizInfoVo.setTrdint(rec.getTrdint());
bizInfoVo.setTrdout(rec.getTrdout());
bizInfoVo.setTrnman(rec.getTrnman());
bizInfoVo.setRat(rec.getRat());
return bizInfoVo;
}
@Override
......@@ -69,19 +175,263 @@ public class FxtsssTransactionServiceImpl extends AbstractTransactionService<Fxt
@Override
public FxtsssStoreBo init(FxtsssStoreBo fxtsssStoreBo) {
fxtsssStoreBo.reset();
init1000(fxtsssStoreBo);
return fxtsssStoreBo;
}
/**
* source:fxtsss.0001.script
*/
public void init1000(FxtsssStoreBo bo) {
bo.getFxdgrp().getCbs().getNom1().setCur(xrtmodService.sysiso());
// MAXAMT = 200000.00
// Systems.setValues(fxtsssStoreVo.getFxdgrp().getRec(), "fxtyp", "SB");
//结售汇类型 SS:即期售汇
bo.getFxdgrp().getRec().setFxtyp("SS");
String extkey = SettleContext.getUserSession().getUsr().getExtkey();
bo.getFxdgrp().getRec().setUsr(extkey);
bo.getFxdgrp().getRec().setOwnusr(extkey);
//钞汇 默认 1:现汇
bo.getFxtp().setCshflg("1");
//这笔结售汇业务的成交日期,系统默认为当前日期,可以根据业务实际情况修改。
bo.getFxdgrp().getRec().setOpndat(Dates.today());
//这笔结售汇业务的起息日,系统默认为成交日,可以根据业务实际情况修改。
bo.getFxdgrp().getRec().setValdat(bo.getFxdgrp().getRec().getOpndat());
//换算外币 FXTSSB FXTSSS FXTSUB FXTSUS
bo.getFxtp().setFrgchk("X");
}
private void init950(FxtsssStoreBo fxtsssStoreBo) {
}
@Override
public void beforeSave(FxtsssStoreBo transactionVo) {
transactionVo.reset();
transactionVo.reset();
Fxdgrp fxdgrp = transactionVo.getFxdgrp();
TransactionServiceSet transactionServiceSet = transactionHelpService.getTransactionStoreSet();
transactionServiceSet.setRec(fxdgrp.getRec());
transactionServiceSet.setBlk(fxdgrp.getBlk());
transactionServiceSet.setTransactionVo(transactionVo);
fxToolComponent.collectCbsMap(transactionServiceSet, "", fxdgrp.getCbs(), "max", "nom1", "opn1", "opn2");
fxToolComponent.collectPtsList(transactionServiceSet, fxdgrp, null);
settleContext.loadSettleSession(transactionVo.getTransName(), transactionVo.getUserId(), buildBizInfo(transactionVo), transactionServiceSet.getPtsList());
}
@Override
protected void updateBizInfoVo(BizInfoVo bizInfoVo, FxtsssStoreBo transactionVo) {
bizInfoVo.setObjinr(transactionVo.getFxdgrp().getRec().getInr());
}
/**
* source:fxtsss.0022.script
*/
public Map<String, List<String>> defaultAccountsN1000(FxtsssStoreVo fxtsssStoreVo) {
fxtsssStoreVo.reset();
String trnTyp = NULLSTR;
String accLst = NULLSTR;
IStream accStm = new StreamImpl();
String acc2Lst = NULLSTR;
IStream acc2Stm = new StreamImpl();
Map<String, List<String>> map = new HashMap();
if (!MdaUtils.isEmpty(fxtsssStoreVo.getFxdgrp().getCbs().getMax().getCur()) && !MdaUtils.isEmpty(fxtsssStoreVo.getFxdgrp().getApl().getPts().getPtyinr())) {
if (!MdaUtils.isEmpty(fxtsssStoreVo.getFxdgrp().getRec().getDsp())) {
trnTyp = fxtsssStoreVo.getFxdgrp().getRec().getDsp();
if (MdaUtils.compareTo(trnTyp, "CA") == 0) {
trnTyp = "LO-TT2";
}
if (MdaUtils.compareTo(trnTyp, "SP") == 0 || MdaUtils.compareTo(trnTyp, "HA") == 0) {
accLst = glemodService.getAvailAcc(trnTyp, fxtsssStoreVo.getFxdgrp().getCbs().getMax().getCur(), "", fxtsssStoreVo.getFxdgrp().getCbs().getMax().getAmt());
} else {
accLst = glemodService.getAvailAcc(trnTyp, fxtsssStoreVo.getFxdgrp().getCbs().getMax().getCur(), fxtsssStoreVo.getFxdgrp().getApl().getPts().getPtyinr(), fxtsssStoreVo.getFxdgrp().getCbs().getMax().getAmt());
}
// Systems.setValues(fxtsssStoreVo.getFxdgrp().getRec(), "acc", accLst);
if (StringUtils.isNotEmpty(accLst)) {
String[] split = accLst.split("[\\n]|\\r\\n");
map.put("accLst", new ArrayList<>(Arrays.asList(split)));
}
if (!fxtsssStoreVo.getFxdgrp().getRec().isModified("acc")) {
if (!MdaUtils.isEmpty(accLst)) {
Streams.streamClear(accStm);
Streams.streamSet(accStm, accLst);
fxtsssStoreVo.getFxdgrp().getRec().setAcc(Strings.getLine(accStm, 1));
}
}
// Systems.setEnabled(fxtsssStoreVo.getFxdgrp().getRec(), "acc");
} else {
// Dynamic.disableAndClearField(MdaDriver.getDatafield(fxtsssStoreVo.getFxdgrp().getRec(), "acc"));
fxtsssStoreVo.getFxdgrp().getRec().setAcc(NULLSTR);
}
if (!MdaUtils.isEmpty(fxtsssStoreVo.getFxdgrp().getRec().getDsp2())) {
if (MdaUtils.compareTo(fxtsssStoreVo.getFxdgrp().getRec().getDsp2(), "SP") == 0) {
acc2Lst = glemodService.getAvailAcc(fxtsssStoreVo.getFxdgrp().getRec().getDsp2(), "CNY", "", BigDecimal.ONE);
} else {
acc2Lst = glemodService.getAvailAcc(fxtsssStoreVo.getFxdgrp().getRec().getDsp2(), "CNY", fxtsssStoreVo.getFxdgrp().getApl().getPts().getPtyinr(), BigDecimal.ONE);
}
// Systems.setValues(fxtsssStoreVo.getFxdgrp().getRec(), "acc2", acc2Lst);
if (StringUtils.isNotEmpty(acc2Lst)) {
String[] split = acc2Lst.split("[\\n]|\\r\\n");
map.put("acc2Lst", new ArrayList<>(Arrays.asList(split)));
}
if (!fxtsssStoreVo.getFxdgrp().getRec().isModified("acc2")) {
if (!MdaUtils.isEmpty(acc2Lst)) {
Streams.streamClear(acc2Stm);
Streams.streamSet(acc2Stm, acc2Lst);
fxtsssStoreVo.getFxdgrp().getRec().setAcc2(Strings.getLine(acc2Stm, 1));
}
}
// Systems.setEnabled(fxtsssStoreVo.getFxdgrp().getRec(), "acc2");
} else {
// Dynamic.disableAndClearField(MdaDriver.getDatafield(fxtsssStoreVo.getFxdgrp().getRec(), "acc2"));
fxtsssStoreVo.getFxdgrp().getRec().setAcc2(NULLSTR);
}
}
return map;
}
public String getRef(FxtsssStoreVo fxtsssStoreVo) {
fxtsssStoreVo.reset();
PtsptaVo ptsptaVo = fxtsssStoreVo.getFxdgrp().getApl();
if (ptsptaVo == null || StringUtils.isEmpty(ptsptaVo.getPtainr())) {
return NULLSTR;
}
Pta pta = ptaCacheService.getPtaByInr(ptsptaVo.getPtainr());
Bch wrkbch = new Bch();
wrkbch.setInr(pta.getBranchinr());
wrkbch = bchService.selectByPrimaryKey(wrkbch);
if (Objects.isNull(wrkbch)) {
return NULLSTR;
}
SettleContext.getUserSession().setWrkbch(wrkbch);
Fxdgrp fxdgrp = fxtsssStoreVo.getFxdgrp();
fxToolComponent.getref(fxdgrp);
return fxdgrp.getRec().getOwnref();
}
/**
* source:fxtsss.0005.script
* fxdgrp.cbs.max.cur 外币币种
* fxdgrp.apl.pts.ptyinr 申请人
* fxdgrp.rec.fxtyp 结售汇类型 SB:即期结售汇
* fxtp.cshflg 钞汇标志 1:现汇 2:现钞
* fxtp.quoflg Quote Flag
*/
public void defaultRateN1000(FxtsssStoreVo vo) {
vo.reset();
String rmbRat = NULLSTR;
BigDecimal buyRat = null;
BigDecimal selRat = null;
BigDecimal midRat = null;
BigDecimal buy1Rat = null;
String selTyp = NULLSTR;
BigDecimal selPreRat = null;
String buyTyp = NULLSTR;
BigDecimal buyPreRat = null;
String setCur = NULLSTR;
BigDecimal setAmt = BigDecimal.ZERO;
BigDecimal favRat = BigDecimal.ZERO;
Cbb max = vo.getFxdgrp().getCbs().getMax();
Fxd rec = vo.getFxdgrp().getRec();
Pts pts = vo.getFxdgrp().getApl().getPts();
if (MdaUtils.isEmpty(vo.getFxtp().getQuoflg())
&& !MdaUtils.isEmpty(rec.getFxtyp()) && !MdaUtils.isEmpty(pts.getPtyinr())) {
// Systems.setEnabled(vo.getFxdgrp().getRec(), "rat");
Argument<String> rmbRatBox = new Argument<String>();
Argument<BigDecimal> buyRatBox = new Argument<BigDecimal>();
Argument<BigDecimal> selRatBox = new Argument<BigDecimal>();
Argument<BigDecimal> midRatBox = new Argument<BigDecimal>();
Argument<BigDecimal> buy1RatBox = new Argument<BigDecimal>();
xrtmodService.getratCebTim(max.getCur(), xrtmodService.sysiso(), Dates.today(), rmbRatBox, buyRatBox, selRatBox, midRatBox, buy1RatBox);
rmbRat = rmbRatBox.value;
buyRat = buyRatBox.value;
selRat = selRatBox.value;
midRat = midRatBox.value;
buy1Rat = buy1RatBox.value;
Ptyrat ptyrat = ptyratMapper.getPtyratByPtyinrAndCur(pts.getPtyinr(), max.getCur());
if (Objects.nonNull(ptyrat)) {
selTyp = ptyrat.getSeltyp();
selPreRat = ptyrat.getBuyrat();
buyTyp = ptyrat.getBuytyp();
buyPreRat = ptyrat.getBuyrat();
}
// 如果没有优惠,则根据配置文件来进行优惠
setCur = max.getCur();
SetmodVo setmodVo = buildSetmodVo(vo);
setAmt = setmodService.getSettlementAmount(setmodVo, setCur);
// 默认都是按照点数优惠
if (MdaUtils.compareTo(setAmt, 0) > 0) {
buyTyp = "1";
selTyp = "1";
/* TODO setusd.ini 未提供 暂时注释
favRat = vo.getFxtp().getFavorRatePoint(setCur, setAmt);
if (MdaUtils.compareTo(favRat, buyPreRat) > 0) {
buyPreRat = favRat;
}
if (MdaUtils.compareTo(favRat, selPreRat) > 0) {
selPreRat = favRat;
}*/
}
if (!rec.isModified("rat")) {
if (MdaUtils.compareTo(Strings.mid(rec.getFxtyp(), 2, 1), "B") == 0) {
if (MdaUtils.compareTo(vo.getFxtp().getCshflg(), "2") == 0) {
rec.setRat(buy1Rat);
} else {
switch (buyTyp) {
case "1":
rec.setRat(Decimals.add(buyRat, Decimals.div(buyPreRat, 10000)));
break;
case "2":
rec.setRat(Decimals.add(buyRat, Decimals.div(Decimals.mul(buyRat, buyPreRat), 100)));
break;
default:
rec.setRat(buyRat);
}
}
} else {
switch (Strings.trim(selTyp)) {
case "1":
rec.setRat(Decimals.sub(selRat, Decimals.div(selPreRat, 10000)));
break;
case "2":
rec.setRat(Decimals.sub(selRat, Decimals.div(Decimals.mul(selRat, selPreRat), 100)));
break;
default:
rec.setRat(selRat);
}
}
}
rec.setRat(Numerics.round(rec.getRat(), 4));
rec.setMidrat(Numerics.round(midRat, 4));
} else {
// Systems.resetEnabled(rec, "rat");
rec.setRat(BigDecimal.ZERO);
rec.setMidrat(BigDecimal.ZERO);
}
}
private SetmodVo buildSetmodVo(FxtsssStoreVo vo) {
SetmodVo setmodVo = new SetmodVo();
Map cbsMap = new HashMap();
Cbb max = vo.getFxdgrp().getCbs().getMax();
cbsMap.put("MAX", max);
setmodVo.setCbsMap(cbsMap);
List<PtsptaVo> ptsList = new ArrayList();
PtsptaVo apl = vo.getFxdgrp().getApl();
ptsList.add(apl);
setmodVo.setPtsList(ptsList);
FxdBizInfoVo bizInfoVo = new FxdBizInfoVo();
bizInfoVo.setObjtyp("FXD");
setmodVo.setRec(bizInfoVo);
return setmodVo;
}
public void defaultCalculateN1100(FxtsssStoreVo fxtsssStoreVo) {
fxtsssStoreVo.reset();
fxtpService.defaultCalculateN1100(fxtsssStoreVo.getFxdgrp(), fxtsssStoreVo.getFxtp());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment