客户分配调整
This commit is contained in:
parent
891d4fa74d
commit
2aab82378e
|
@ -8,12 +8,16 @@ import nc.bs.businessevent.bd.BDCommonEvent;
|
||||||
import nc.bs.dao.BaseDAO;
|
import nc.bs.dao.BaseDAO;
|
||||||
import nc.bs.framework.common.InvocationInfoProxy;
|
import nc.bs.framework.common.InvocationInfoProxy;
|
||||||
import nc.bs.uapbd.util.BaseOpenApiReq;
|
import nc.bs.uapbd.util.BaseOpenApiReq;
|
||||||
|
import nc.jdbc.framework.processor.ColumnListProcessor;
|
||||||
import nc.vo.bd.cust.CustomerVO;
|
import nc.vo.bd.cust.CustomerVO;
|
||||||
import nc.vo.org.OrgVO;
|
import nc.vo.org.OrgVO;
|
||||||
import nc.vo.pub.BusinessException;
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||||||
|
import nccloud.vo.sql.util.InSqlUtil;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建客户后,自动分配组织
|
* 创建客户后,自动分配组织
|
||||||
|
@ -34,6 +38,10 @@ public class AssignCustomerListener implements IBusinessListener {
|
||||||
|
|
||||||
public void assignOrgApi(CustomerVO customerVO) throws BusinessException {
|
public void assignOrgApi(CustomerVO customerVO) throws BusinessException {
|
||||||
String[] customerPks = {customerVO.getPk_customer()};
|
String[] customerPks = {customerVO.getPk_customer()};
|
||||||
|
String sql = "select code from bd_customer where pk_customer = '[pk_customer]'";
|
||||||
|
sql = sql.replace("[pk_customer]", customerVO.getPk_customer());
|
||||||
|
List<String> pks = (List) (new BaseDAO()).executeQuery(sql, new ColumnListProcessor());
|
||||||
|
NCCForUAPLogger.debug("pks = " + pks);
|
||||||
OrgVO[] virtulaOrg = getVirtulaOrg();
|
OrgVO[] virtulaOrg = getVirtulaOrg();
|
||||||
String[] assignOrgPks = Arrays.stream(virtulaOrg).map(OrgVO::getPk_org).toArray(String[]::new);
|
String[] assignOrgPks = Arrays.stream(virtulaOrg).map(OrgVO::getPk_org).toArray(String[]::new);
|
||||||
JSONObject param = new JSONObject();
|
JSONObject param = new JSONObject();
|
||||||
|
|
|
@ -0,0 +1,391 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.pub.action;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import nc.bs.bd.cust.baseinfo.validator.CustomerVersionValidator;
|
||||||
|
import nc.bs.bd.pub.util.BaseDocVoConvertUtil;
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
import nc.bs.framework.common.InvocationInfoProxy;
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.framework.json.core.exception.ExceptionUtils;
|
||||||
|
import nc.bs.pub.compiler.AbstractCompiler2;
|
||||||
|
import nc.bs.pub.compiler.IWorkFlowRet;
|
||||||
|
import nc.bs.pub.filesystem.IFileSystemService;
|
||||||
|
import nc.bs.uapbd.util.BaseOpenApiReq;
|
||||||
|
import nc.bs.uif2.validation.ValidationException;
|
||||||
|
import nc.bs.uif2.validation.ValidationFailure;
|
||||||
|
import nc.itf.bd.bankacc.cust.ICustBankaccQueryService;
|
||||||
|
import nc.itf.bd.bankacc.cust.ICustBankaccService;
|
||||||
|
import nc.itf.bd.bankacc.cust.ICustPfBankaccService;
|
||||||
|
import nc.itf.bd.cust.assign.ICustAssignService;
|
||||||
|
import nc.itf.bd.cust.baseinfo.ICustBaseInfoQueryService;
|
||||||
|
import nc.itf.bd.cust.baseinfo.ICustBaseInfoService;
|
||||||
|
import nc.itf.bd.cust.custaddress.ICustAddressQueryService;
|
||||||
|
import nc.itf.bd.cust.custaddress.ICustAddressService;
|
||||||
|
import nc.itf.bd.cust.pf.ICustPfAddressService;
|
||||||
|
import nc.itf.bd.cust.pf.ICustomerPfQueryService;
|
||||||
|
import nc.itf.bd.cust.pf.ICustomerPfService;
|
||||||
|
import nc.uap.utils.ResHelper;
|
||||||
|
import nc.vo.bd.bankaccount.cust.CustBankaccUnionVO;
|
||||||
|
import nc.vo.bd.cust.CustCountrytaxesVO;
|
||||||
|
import nc.vo.bd.cust.CustlinkmanVO;
|
||||||
|
import nc.vo.bd.cust.CustomerVO;
|
||||||
|
import nc.vo.bd.cust.custaddress.CustPfaddressVO;
|
||||||
|
import nc.vo.bd.cust.custaddress.CustaddressVO;
|
||||||
|
import nc.vo.bd.cust.pf.AggCustomerPfVO;
|
||||||
|
import nc.vo.bd.cust.pf.CustomerPfBaseVO;
|
||||||
|
import nc.vo.bd.cust.pf.CustomerPfVO;
|
||||||
|
import nc.vo.bd.meta.BatchOperateVO;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.org.OrgVO;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pub.BusinessRuntimeException;
|
||||||
|
import nc.vo.pub.compiler.PfParameterVO;
|
||||||
|
import nc.vo.uap.pf.PFBusinessException;
|
||||||
|
import nccloud.commons.lang.ArrayUtils;
|
||||||
|
import nccloud.pubitf.baseapp.apprbac.IDataPermPubService4NCC;
|
||||||
|
import nccloud.pubitf.platform.attachment.IAttachmentService;
|
||||||
|
import nccloud.pubitf.uapbd.forrpbill.IUapbd4RPbillSyncService;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class N_10KH_APPROVE extends AbstractCompiler2 {
|
||||||
|
public N_10KH_APPROVE() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object runComClass(PfParameterVO vo) throws BusinessException {
|
||||||
|
try {
|
||||||
|
super.m_tmpVo = vo;
|
||||||
|
String cuserid = InvocationInfoProxy.getInstance().getUserId();
|
||||||
|
String pk_group = InvocationInfoProxy.getInstance().getGroupId();
|
||||||
|
IDataPermPubService4NCC dataPerService = (IDataPermPubService4NCC) NCLocator.getInstance().lookup(IDataPermPubService4NCC.class);
|
||||||
|
boolean userHasPermission = dataPerService.isUserHasPermission(cuserid, "customerpf", "approve", pk_group, ((AggCustomerPfVO) this.getVo()).getParentVO());
|
||||||
|
if (!userHasPermission) {
|
||||||
|
ExceptionUtils.wrapBusinessException(ResHelper.getString("nccriauapbd0", "0nccriauapbd00215"));
|
||||||
|
}
|
||||||
|
|
||||||
|
IWorkFlowRet woekFlowRet = (IWorkFlowRet) this.procActionFlow(vo);
|
||||||
|
ICustomerPfService pfService = (ICustomerPfService) NCLocator.getInstance().lookup(ICustomerPfService.class);
|
||||||
|
ICustomerPfQueryService qryPfService = (ICustomerPfQueryService) NCLocator.getInstance().lookup(ICustomerPfQueryService.class);
|
||||||
|
if (woekFlowRet == null) {
|
||||||
|
CustomerPfVO pfvo = (CustomerPfVO) ((AggCustomerPfVO) this.getVo()).getParentVO();
|
||||||
|
CustomerPfBaseVO baseVO = qryPfService.queryCustomerPfBaseVOByPk(pfvo.getPk_customerpf_base());
|
||||||
|
CustomerVO customer = BaseDocVoConvertUtil.customerPfBaseVO2CustomerVO(baseVO);
|
||||||
|
customer.setPk_customerpf(pfvo.getPrimaryKey());
|
||||||
|
|
||||||
|
try {
|
||||||
|
Integer applyType = pfvo.getApply_type();
|
||||||
|
if (applyType != 2 && applyType != 5) {
|
||||||
|
customer.setIsCreateCust(-1);
|
||||||
|
CustCountrytaxesVO[] curTaxVOs = customer.getCusttaxtypes();
|
||||||
|
if (curTaxVOs != null) {
|
||||||
|
for (CustCountrytaxesVO taxVO : curTaxVOs) {
|
||||||
|
taxVO.setStatus(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustlinkmanVO[] curLinkmanVOs = customer.getCustcontacts();
|
||||||
|
if (curLinkmanVOs != null) {
|
||||||
|
for (CustlinkmanVO linkVO : curLinkmanVOs) {
|
||||||
|
linkVO.setStatus(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customer = ((ICustBaseInfoService) NCLocator.getInstance().lookup(ICustBaseInfoService.class)).insertCustomerVO(customer, true);
|
||||||
|
// 分配客户的组织
|
||||||
|
String[] customerPks = {customer.getPk_customer()};
|
||||||
|
OrgVO[] virtulaOrg = getVirtulaOrg();
|
||||||
|
String[] assignOrgPks = Arrays.stream(virtulaOrg).map(OrgVO::getPk_org).toArray(String[]::new);
|
||||||
|
NCLocator.getInstance().lookup(ICustAssignService.class).assignCustomerByPks(customerPks, assignOrgPks, null);
|
||||||
|
|
||||||
|
ICustBankaccService uptBankService = (ICustBankaccService) NCLocator.getInstance().lookup(ICustBankaccService.class);
|
||||||
|
CustBankaccUnionVO[] newUnionVOs = ((ICustPfBankaccService) NCLocator.getInstance().lookup(ICustPfBankaccService.class)).queryCustBankaccUnionVOsByCustAndPfType(customer.getPk_customer(), 1, 1);
|
||||||
|
uptBankService.insertCustBankaccs(newUnionVOs);
|
||||||
|
this.dealCustAddress(customer);
|
||||||
|
} else {
|
||||||
|
customer.setTs(baseVO.getOldts());
|
||||||
|
CustomerVersionValidator custversion = new CustomerVersionValidator(pfvo);
|
||||||
|
ValidationFailure vfail = custversion.validate(customer);
|
||||||
|
if (vfail != null) {
|
||||||
|
List<ValidationFailure> fs = new ArrayList();
|
||||||
|
fs.add(vfail);
|
||||||
|
throw new ValidationException(fs);
|
||||||
|
}
|
||||||
|
|
||||||
|
ICustBaseInfoService service = (ICustBaseInfoService) NCLocator.getInstance().lookup(ICustBaseInfoService.class);
|
||||||
|
this.dealCustomerBank(customer);
|
||||||
|
this.dealCustAddressOfEditOrVersion(customer, applyType);
|
||||||
|
customer.setStatus(1);
|
||||||
|
ICustBaseInfoQueryService qryService = (ICustBaseInfoQueryService) NCLocator.getInstance().lookup(ICustBaseInfoQueryService.class);
|
||||||
|
CustomerVO originVO = qryService.queryDataByPkSet(new String[]{customer.getPk_customer()})[0];
|
||||||
|
this.dealCountryTaxesVO(customer, originVO);
|
||||||
|
this.dealLinkManVO(customer, originVO);
|
||||||
|
if (applyType == 5) {
|
||||||
|
service.createCustomerVersion(customer);
|
||||||
|
} else {
|
||||||
|
service.updateCustomerVO(customer, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (applyType == 1 || applyType == 2) {
|
||||||
|
if (applyType == 2) {
|
||||||
|
String applyRootPath = "uapbd/e4f48eaf-5567-4383-a370-a59cb3e8a451/" + customer.getPrimaryKey();
|
||||||
|
IFileSystemService fileMngService = (IFileSystemService) NCLocator.getInstance().lookup(IFileSystemService.class);
|
||||||
|
fileMngService.deleteNCFileNode(applyRootPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
String rootPath = "uapbd/6d6d4a15-d9bb-4b0c-9da3-80760872bf87/" + pfvo.getPrimaryKey();
|
||||||
|
String destDirPath = "uapbd/e4f48eaf-5567-4383-a370-a59cb3e8a451/" + customer.getPrimaryKey();
|
||||||
|
IAttachmentService aService = (IAttachmentService) NCLocator.getInstance().lookup(IAttachmentService.class);
|
||||||
|
aService.copyTo(rootPath, destDirPath);
|
||||||
|
}
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
String msg = NCLangRes4VoTransl.getNCLangRes().getStrByID("10140custsup", "010140custsup0061", (String) null, new String[]{e.getMessage()});
|
||||||
|
throw new BusinessRuntimeException(msg, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomerPfBaseVO pfBaseVO = qryPfService.queryCustomerPfBaseVOByPk(pfvo.getPk_customerpf_base());
|
||||||
|
pfBaseVO.setCode(customer.getCode());
|
||||||
|
pfBaseVO.setPk_customer_v(customer.getPk_customer_v());
|
||||||
|
pfvo.setCustomercode(customer.getCode());
|
||||||
|
pfvo.setMemo((String) null);
|
||||||
|
pfvo = pfService.updateCustomerPfVOByActionWithBaseInfo("approve", pfvo, pfBaseVO);
|
||||||
|
// this.assignCustomerToOrg(pfvo, customer);
|
||||||
|
this.getVo().setParentVO(pfvo);
|
||||||
|
((IUapbd4RPbillSyncService) NCLocator.getInstance().lookup(IUapbd4RPbillSyncService.class)).syncData("10KH", this.getVo(), "Approve");
|
||||||
|
return this.getVo();
|
||||||
|
} else {
|
||||||
|
CustomerPfVO pfvo = (CustomerPfVO) ((AggCustomerPfVO) woekFlowRet.m_inVo).getParentVO();
|
||||||
|
pfvo = pfService.updateCustomerPfVOByAction("unapprove", pfvo);
|
||||||
|
((AggCustomerPfVO) woekFlowRet.m_inVo).setParentVO(pfvo);
|
||||||
|
return woekFlowRet;
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
if (ex instanceof BusinessException) {
|
||||||
|
throw (BusinessException) ex;
|
||||||
|
} else {
|
||||||
|
throw new PFBusinessException(ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dealCustomerBank(CustomerVO customer) throws BusinessException {
|
||||||
|
ICustBankaccQueryService bankQryService = (ICustBankaccQueryService) NCLocator.getInstance().lookup(ICustBankaccQueryService.class);
|
||||||
|
CustBankaccUnionVO[] originVOs = bankQryService.queryCustBankaccUnionVOsByCust(customer.getPk_customer(), 1, true);
|
||||||
|
CustBankaccUnionVO[] applyBankVOs = ((ICustPfBankaccService) NCLocator.getInstance().lookup(ICustPfBankaccService.class)).queryCustBankaccUnionVOsByCustAndPfType(customer.getPk_customer(), 1, 1);
|
||||||
|
Map<String, CustBankaccUnionVO> bankMap = new HashMap();
|
||||||
|
if (originVOs != null) {
|
||||||
|
for (CustBankaccUnionVO bankVO : originVOs) {
|
||||||
|
bankMap.put(bankVO.getBankaccbasVO().getPrimaryKey(), bankVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, CustBankaccUnionVO> newBankMap = new HashMap();
|
||||||
|
List<CustBankaccUnionVO> insertBankList = new ArrayList();
|
||||||
|
List<CustBankaccUnionVO> updateBankList = new ArrayList();
|
||||||
|
List<CustBankaccUnionVO> deleteBankList = new ArrayList();
|
||||||
|
if (applyBankVOs != null) {
|
||||||
|
for (CustBankaccUnionVO bankVO : applyBankVOs) {
|
||||||
|
String key = bankVO.getBankaccbasVO().getPrimaryKey();
|
||||||
|
newBankMap.put(key, bankVO);
|
||||||
|
if (bankMap.containsKey(key)) {
|
||||||
|
updateBankList.add(bankVO);
|
||||||
|
} else {
|
||||||
|
bankVO.getCustbankVO().setPk_cust(customer.getPk_customer());
|
||||||
|
insertBankList.add(bankVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (originVOs != null) {
|
||||||
|
for (CustBankaccUnionVO bankVO : originVOs) {
|
||||||
|
if (!newBankMap.containsKey(bankVO.getBankaccbasVO().getPrimaryKey())) {
|
||||||
|
deleteBankList.add(bankVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ICustBankaccService uptBankService = (ICustBankaccService) NCLocator.getInstance().lookup(ICustBankaccService.class);
|
||||||
|
if (insertBankList.size() > 0) {
|
||||||
|
uptBankService.insertCustBankaccs((CustBankaccUnionVO[]) insertBankList.toArray(new CustBankaccUnionVO[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateBankList.size() > 0) {
|
||||||
|
uptBankService.updateCustBankaccsFromPf((CustBankaccUnionVO[]) updateBankList.toArray(new CustBankaccUnionVO[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dealCustAddress(CustomerVO customer) throws BusinessException {
|
||||||
|
CustPfaddressVO[] pfAddressVOs = ((ICustPfAddressService) NCLocator.getInstance().lookup(ICustPfAddressService.class)).queryCustPfaddressVOs(customer.getPk_customer());
|
||||||
|
if (!ArrayUtils.isEmpty(pfAddressVOs)) {
|
||||||
|
List<CustaddressVO> list = new ArrayList();
|
||||||
|
|
||||||
|
for (CustPfaddressVO pfAddressVO : pfAddressVOs) {
|
||||||
|
CustaddressVO addressVO = (CustaddressVO) BaseDocVoConvertUtil.convertVO(pfAddressVO, new CustaddressVO());
|
||||||
|
list.add(addressVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
BatchOperateVO bovo = new BatchOperateVO();
|
||||||
|
bovo.setAddObjs(list.toArray(new CustaddressVO[0]));
|
||||||
|
((ICustAddressService) NCLocator.getInstance().lookup(ICustAddressService.class)).batchSaveCashAccount(bovo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dealCustAddressOfEditOrVersion(CustomerVO customer, Integer applyType) throws Exception {
|
||||||
|
String pk_group = InvocationInfoProxy.getInstance().getGroupId();
|
||||||
|
String var10000 = customer.getPk_customer();
|
||||||
|
String condition = "pk_customer = '" + var10000 + "' and pk_org = '" + pk_group + "'";
|
||||||
|
CustaddressVO[] custaddressVOs = ((ICustAddressQueryService) NCLocator.getInstance().lookup(ICustAddressQueryService.class)).queryCustAddressVOsByCondition(condition);
|
||||||
|
if (custaddressVOs != null && custaddressVOs.length > 0) {
|
||||||
|
BatchOperateVO bovo = new BatchOperateVO();
|
||||||
|
bovo.setDelObjs(custaddressVOs);
|
||||||
|
((ICustAddressService) NCLocator.getInstance().lookup(ICustAddressService.class)).batchSaveCashAccount(bovo);
|
||||||
|
}
|
||||||
|
|
||||||
|
CustPfaddressVO[] pfAddressVOs = ((ICustPfAddressService) NCLocator.getInstance().lookup(ICustPfAddressService.class)).queryCustPfaddressVOs(customer.getPk_customer());
|
||||||
|
if (!ArrayUtils.isEmpty(pfAddressVOs)) {
|
||||||
|
List<CustaddressVO> list = new ArrayList();
|
||||||
|
|
||||||
|
for (CustPfaddressVO pfAddressVO : pfAddressVOs) {
|
||||||
|
CustaddressVO addressVO = (CustaddressVO) BaseDocVoConvertUtil.convertVO(pfAddressVO, new CustaddressVO());
|
||||||
|
list.add(addressVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
BatchOperateVO bov = new BatchOperateVO();
|
||||||
|
bov.setAddObjs(list.toArray(new CustaddressVO[0]));
|
||||||
|
((ICustAddressService) NCLocator.getInstance().lookup(ICustAddressService.class)).batchSaveCashAccount(bov);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dealCountryTaxesVO(CustomerVO customer, CustomerVO originVO) {
|
||||||
|
CustCountrytaxesVO[] originTaxVOs = originVO.getCusttaxtypes();
|
||||||
|
Map<String, CustCountrytaxesVO> oldTaxMap = new HashMap();
|
||||||
|
if (originTaxVOs != null) {
|
||||||
|
for (CustCountrytaxesVO taxVO : originTaxVOs) {
|
||||||
|
oldTaxMap.put(taxVO.getPrimaryKey(), taxVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustCountrytaxesVO[] curTaxVOs = customer.getCusttaxtypes();
|
||||||
|
Map<String, CustCountrytaxesVO> taxMap = new HashMap();
|
||||||
|
List<CustCountrytaxesVO> taxList = new ArrayList();
|
||||||
|
if (curTaxVOs != null) {
|
||||||
|
for (CustCountrytaxesVO taxVO : curTaxVOs) {
|
||||||
|
if (oldTaxMap.containsKey(taxVO.getPrimaryKey())) {
|
||||||
|
taxVO.setStatus(1);
|
||||||
|
} else {
|
||||||
|
taxVO.setStatus(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
taxMap.put(taxVO.getPrimaryKey(), taxVO);
|
||||||
|
taxList.add(taxVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (originTaxVOs != null) {
|
||||||
|
for (CustCountrytaxesVO taxVO : originTaxVOs) {
|
||||||
|
if (!taxMap.containsKey(taxVO.getPrimaryKey())) {
|
||||||
|
taxVO.setStatus(3);
|
||||||
|
taxList.add(taxVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customer.setCusttaxtypes((CustCountrytaxesVO[]) taxList.toArray(new CustCountrytaxesVO[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dealLinkManVO(CustomerVO customer, CustomerVO originVO) {
|
||||||
|
CustlinkmanVO[] originLinkmanVOs = originVO.getCustcontacts();
|
||||||
|
Map<String, CustlinkmanVO> oldLinkmanMap = new HashMap();
|
||||||
|
if (originLinkmanVOs != null) {
|
||||||
|
for (CustlinkmanVO linkmanVO : originLinkmanVOs) {
|
||||||
|
oldLinkmanMap.put(linkmanVO.getPrimaryKey(), linkmanVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CustlinkmanVO[] curLinkmanVOs = customer.getCustcontacts();
|
||||||
|
Map<String, CustlinkmanVO> linkmanMap = new HashMap();
|
||||||
|
List<CustlinkmanVO> linkmanList = new ArrayList();
|
||||||
|
if (curLinkmanVOs != null) {
|
||||||
|
for (CustlinkmanVO linkmanVO : curLinkmanVOs) {
|
||||||
|
if (oldLinkmanMap.containsKey(linkmanVO.getPrimaryKey())) {
|
||||||
|
linkmanVO.setStatus(1);
|
||||||
|
} else {
|
||||||
|
linkmanVO.setStatus(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
linkmanMap.put(linkmanVO.getPrimaryKey(), linkmanVO);
|
||||||
|
linkmanList.add(linkmanVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (originLinkmanVOs != null) {
|
||||||
|
for (CustlinkmanVO linkmanVO : originLinkmanVOs) {
|
||||||
|
if (!linkmanMap.containsKey(linkmanVO.getPrimaryKey())) {
|
||||||
|
linkmanVO.setStatus(3);
|
||||||
|
linkmanList.add(linkmanVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customer.setCustcontacts((CustlinkmanVO[]) linkmanList.toArray(new CustlinkmanVO[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assignCustomerToOrg(CustomerPfVO pfvo, CustomerVO vo) throws BusinessException {
|
||||||
|
if (this.isOrgData(vo)) {
|
||||||
|
this.getAssignService().assignCustomerToSelfOrg(vo);
|
||||||
|
} else {
|
||||||
|
this.getAssignService().assignCustomerForPf(vo.getPk_customer(), pfvo.getPk_org(), (String[]) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isOrgData(CustomerVO vo) {
|
||||||
|
return !vo.getPk_group().equals(vo.getPk_org()) && !"GLOBLE00000000000000".equals(vo.getPk_org());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assignOrgApi(CustomerVO customerVO) throws BusinessException {
|
||||||
|
String[] customerPks = {customerVO.getCode()};
|
||||||
|
OrgVO[] virtulaOrg = getVirtulaOrg();
|
||||||
|
String[] assignOrgPks = Arrays.stream(virtulaOrg).map(OrgVO::getCode).toArray(String[]::new);
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
JSONObject ufinterfaceJson = new JSONObject();
|
||||||
|
JSONObject dataJson = new JSONObject();
|
||||||
|
dataJson.put("customer", customerPks);
|
||||||
|
dataJson.put("org", assignOrgPks);
|
||||||
|
|
||||||
|
ufinterfaceJson.put("sender", "default");
|
||||||
|
ufinterfaceJson.put("data", dataJson);
|
||||||
|
param.put("ufinterface", ufinterfaceJson);
|
||||||
|
BaseOpenApiReq req = new BaseOpenApiReq();
|
||||||
|
req.assignOrgApi("/nccloud/api/uapbd/customermanageext/customer/assign", param);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询组织信息
|
||||||
|
*
|
||||||
|
* @author mzr
|
||||||
|
* @date 2025/05/29
|
||||||
|
*/
|
||||||
|
public OrgVO[] getVirtulaOrg() throws BusinessException {
|
||||||
|
String groupID = InvocationInfoProxy.getInstance().getGroupId();
|
||||||
|
// NCCForUAPLogger.debug("groupID = " + groupID);
|
||||||
|
// enablestate 启用状态 isbusinessunit 是否业务单元数据
|
||||||
|
String condition = "pk_group = '" + groupID + "' and ENABLESTATE = '2' and isbusinessunit='Y'";
|
||||||
|
Collection<OrgVO> collection = (new BaseDAO()).retrieveByClause(OrgVO.class, condition, "code");
|
||||||
|
return collection.toArray(new OrgVO[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ICustAssignService getAssignService() {
|
||||||
|
return (ICustAssignService) NCLocator.getInstance().lookup(ICustAssignService.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodeRemark() {
|
||||||
|
return "\tIWorkFlowRet woekFlowRet = (IWorkFlowRet) procActionFlow(vo);\n\t\t\tICustomerPfService pfService = NCLocator.getInstance().lookup(\n\t\t\t\t\tICustomerPfService.class);\n\t\t\tif (woekFlowRet == null) {\n\t\t\t\tCustomerPfVO pfvo = (CustomerPfVO) ((AggCustomerPfVO) getVo())\n\t\t\t\t\t\t.getParentVO();\n\t\t\t\tCustomerVO customer = (CustomerVO) pfvo.getCustomerinfo();\n\t\t\t\tcustomer.setPk_customerpf(pfvo.getPrimaryKey());\n\t\t\t\ttry {\n\t\t\t\t\tcustomer = NCLocator.getInstance().lookup(\n\t\t\t\t\t\t\tICustBaseInfoService.class).insertCustomerVO(\n\t\t\t\t\t\t\tcustomer, true);\n\t\t\t\t} catch (BusinessException e) {\n\t\t\t\t\tString msg = NCLangRes4VoTransl.getNCLangRes().getStrByID(\n\t\t\t\t\t\t\t\"10140custsup\", \"010140custsup0061\", null,\n\t\t\t\t\t\t\tnew String[] { e.getMessage() })/*@res 客户基本信息校验失败,详细信息如下:\n{0}*/;\n\t\t\t\t\tpfService.writeErrMsgToMemo_RequiresNew(pfvo\n\t\t\t\t\t\t\t.getPrimaryKey(), msg);\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\tpfvo.setCustomerinfo(customer);\n\t\t\t\tpfvo.setMemo(null);\n\t\t\t\tpfvo = pfService.updateCustomerPfVO(pfvo);\n\t\t\t\tgetVo().setParentVO(pfvo);\n\t\t\t\treturn getVo();\n\t\t\t} else {\n\t\t\t\tCustomerPfVO pfvo = (CustomerPfVO) ((AggCustomerPfVO) woekFlowRet.m_inVo)\n\t\t\t\t\t\t.getParentVO();\n\t\t\t\tpfvo = pfService.updateCustomerPfVO(pfvo);\n\t\t\t\t((AggCustomerPfVO) woekFlowRet.m_inVo).setParentVO(pfvo);\n\t\t\t\treturn woekFlowRet;\n\t\t\t}\n";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue