接口优化

This commit is contained in:
yuxueliang0813 2025-02-19 18:13:20 +08:00
parent 8d106789c5
commit 755512fee9
11 changed files with 262 additions and 102 deletions

View File

@ -0,0 +1,33 @@
package shjh.jhzj7.fi.fi.plugin.operate;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.sdk.plugin.Plugin;
/**
* 单据操作插件
*/
public class PayinfoChangeOperation extends AbstractOperationServicePlugIn implements Plugin {
/**
* 操作校验通过之后开启事务之前触发此事件
* 插件可以在此事件对通过校验的数据进行整理
*/
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
super.beforeExecuteOperationTransaction(e);
//增加校验源单类型是费控的不允许发起收款信息变更
String eok = e.getOperationKey();
if("recpushchg".equals(eok)){
DynamicObject[] dos = e.getDataEntities();
DynamicObject prinfo = null;
for (int i = 0; i < dos.length; i++) {
//TODO反审核操作之前系统未把info对象所有属性加载出来尤其是二开的字段需要在此处重新load一下
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
if("".equals(prinfo.getString(""))){
e.setCancelMessage(prinfo.getString("billno")+"为费控推送的单据,不能发起收款信息变更");
e.setCancel(true);
}
}
}
}
}

View File

@ -39,6 +39,9 @@ public class EsbUtils {
//处理分配
public static void handleAssign(JSONArray companysJson, Map<String, Long> cusids, String entityName) {
if(companysJson == null){
return;
}
JSONObject json_body;
String compnum;
String cusnumber = "";
@ -87,6 +90,9 @@ public class EsbUtils {
//处理取消分配
public static void handleUnAssign(JSONArray companysJson, Map<String, Long> cusids, String entityName) {
if(companysJson == null){
return;
}
JSONObject json_body;
String compnum;
String cusnumber = "";

View File

@ -234,7 +234,7 @@ public class AspAccountControler {
//处理科目分配
EsbUtils.handleAssign(companysJson, acctids, entityName);
//处理科目在每个公司生成
handleAccountCompany(accountMaps,companysJson);
Map<String, DynamicObject> companyAcctMaps = handleAccountCompany(accountMaps,companysJson);
//处理每个公司下科目的核算维度和禁用状态
JSONArray asstacttypesJson = json_obj.getJSONArray("asstacttypes");
String hsxm;//核算维度名称 基础资料
@ -256,7 +256,7 @@ public class AspAccountControler {
}
companynum = json_body.getString("companynum");
//根据科目核算维度中的科目编号和公司编号获取对应科目对象不存在的不处理
acctInfo = accountMaps.get(number+companynum);
acctInfo = companyAcctMaps.get(number+companynum);
if(acctInfo == null){
continue;
}
@ -290,7 +290,7 @@ public class AspAccountControler {
}
acctInfo.set("isassist", true);//主表的isassist是否包含核算项目为是
SaveServiceHelper.save(new DynamicObject[]{acctInfo});
accountMaps.put(number+companynum,acctInfo);
companyAcctMaps.put(number+companynum,acctInfo);
}
if(itemsJson.isEmpty()){
@ -302,7 +302,7 @@ public class AspAccountControler {
}
}
private void handleAccountCompany(Map<String, DynamicObject> accountMaps,JSONArray companysJson){
private Map<String, DynamicObject> handleAccountCompany(Map<String, DynamicObject> accountMaps,JSONArray companysJson){
Map<String, DynamicObject> baseMaps = new HashMap<>();
JSONObject json_body;
DynamicObject oldAcctInfo;
@ -333,6 +333,7 @@ public class AspAccountControler {
}
baseMaps.put(acctnum+compnum, newAcctInfo);
}
return baseMaps;
}
private DynamicObject copydo(DynamicObject olddo, DynamicObject hsorgInfo){

View File

@ -53,6 +53,9 @@ public class CostCenterControler {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
//处理入参的排序按照ccLevel正序不是树形机构不需要排序
// detailsJson.sort(Comparator.comparingInt(json -> ((JSONObject) json).getIntValue("ccLevel")));
String orgNumber;

View File

@ -9,6 +9,7 @@ import kd.bos.api.client.ApiResult;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.id.ID;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.openapi.common.custom.annotation.ApiController;
@ -57,6 +58,9 @@ public class CustomerControler {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");//客户基本信息
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
JSONArray banksJson = json_obj.getJSONArray("banks");//客户银行
JSONArray companysJson = json_obj.getJSONArray("companys");//客户所属公司
JSONArray customerfivesJson = json_obj.getJSONArray("customerfives");//客户组5
@ -69,7 +73,7 @@ public class CustomerControler {
DynamicObject custype;
JSONObject json_body;
Long currentSupId;
DynamicObject suppliergroupdetail;
DynamicObject custgroupdetail;
Map<String, Long> cusids = new HashMap<>();//客户编号和ID对应关系
for (int i = 0; i < detailsJson.size(); i++) {
@ -120,27 +124,39 @@ public class CustomerControler {
currentCus.set("societycreditcode",taxno);//统一社会信用代码
currentCus.set("linkman",json_body.getString("contacts"));//联系人
currentCus.set("bizpartner_phone",json_body.getString("telnum"));//联系电话
//处理银行-新增-员工类客户不需要处理
if(!"06".equals(type)){
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber);
}
currentSupId = ((DynamicObject) SaveServiceHelper.save(new DynamicObject[]{currentCus})[0]).getLong("id");
//处理分类
suppliergroupdetail = BusinessDataServiceHelper.newDynamicObject(gdName);
suppliergroupdetail.set("createorg",JhzjUtils.GROUPID);//创建组织
suppliergroupdetail.set("standard",EsbUtils.CUSTOMERSTAND);//客户分类标准
suppliergroupdetail.set("group",custype.getLong("id"));//具体分类
suppliergroupdetail.set("customer",currentSupId);//客户
SaveServiceHelper.save(new DynamicObject[]{suppliergroupdetail});
//保存成功后处理masterid字段不然不能进行分配动作
}else{
currentSupId = currentCus.getLong("id");
//设置id和masterid 不然不能进行分配动作
currentSupId = ID.genLongId();
currentCus.set("id", currentSupId);
currentCus.set("masterid",currentSupId);
//处理银行-新增-员工类客户不需要处理
if(!"M400".equals(type)){
handleBank(banksJson,currentCus.getDynamicObjectCollection("entry_bank"),cusnumber);
}else{
//如果是个人则伙伴类型字段为个人
currentCus.set("type","4");//伙伴类型
}
//处理 客户组5
handleFive(customerfivesJson,currentCus.getDynamicObjectCollection("shjh_entry_five"),cusnumber);
SaveServiceHelper.save(new DynamicObject[]{currentCus});
//处理分类
custgroupdetail = BusinessDataServiceHelper.newDynamicObject(gdName);
custgroupdetail.set("createorg",JhzjUtils.GROUPID);//创建组织
custgroupdetail.set("standard",EsbUtils.CUSTOMERSTAND);//客户分类标准
custgroupdetail.set("group",custype.getLong("id"));//具体分类
custgroupdetail.set("customer",currentSupId);//客户
SaveServiceHelper.save(new DynamicObject[]{custgroupdetail});
}else{
//修改客户 名称 税务登记号 联系人 联系电话 银行信息 客户组5
currentSupId = currentCus.getLong("id");
currentCus.set("name",cusname);//客户名称
currentCus.set("tx_register_no",taxno);//税务登记号
currentCus.set("societycreditcode",taxno);//统一社会信用代码
currentCus.set("linkman",json_body.getString("contacts"));//联系人
currentCus.set("bizpartner_phone",json_body.getString("telnum"));//联系电话
//处理 客户组5
handleFive(customerfivesJson,currentCus.getDynamicObjectCollection("shjh_entry_five"),cusnumber);
//TODO 银行信息
SaveServiceHelper.save(new DynamicObject[]{currentCus});
}
cusids.put(cusnumber,currentSupId);
@ -159,7 +175,27 @@ public class CustomerControler {
}
}
private void handleFive(JSONArray customerfivesJson,DynamicObjectCollection doc_five,String cusnumber){
if(customerfivesJson == null){
return;
}
doc_five.clear();
JSONObject json_body;
DynamicObject fiveinfo;
for (int i = 0; i < customerfivesJson.size(); i++) {
json_body = customerfivesJson.getJSONObject(i);
if(cusnumber.equals(json_body.getString("code"))){
fiveinfo = doc_five.addNew();
fiveinfo.set("shjh_entryfive_number",json_body.getString("customerfivecode"));//编号
fiveinfo.set("shjh_entryfive_name",json_body.getString("customerfivename"));//名称
}
}
}
private void handleBank(JSONArray banksJson,DynamicObjectCollection doc_bank,String cusnumber){
if(banksJson == null){
return;
}
JSONObject json_body;
DynamicObject bankinfo;
DynamicObject bebankinfo;

View File

@ -49,6 +49,9 @@ public class CustomerFiveControler {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
String orgNumber;
String orgName;
String bunum;

View File

@ -72,6 +72,9 @@ public class PersonControler implements Serializable {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
String number;
String name;
String phone;

View File

@ -48,6 +48,9 @@ public class ProfitCenterControler {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
String orgNumber;
String orgName;
DynamicObject currentOrg;

View File

@ -9,6 +9,7 @@ import kd.bos.api.client.ApiResult;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.id.ID;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.openapi.common.custom.annotation.ApiController;
@ -32,7 +33,7 @@ public class SupplierControler {
private static final String supTypeName = "bd_suppliergroup";//系统库 表名 t_bd_suppliergroup
private static final String bebankName = "bd_bebank";//系统库 行名行号 表名 t_bd_bebank
private static final String gdName = "bd_suppliergroupdetail";//系统库 供应商分组 表名 t_bd_suppliergroupdetail
private static final String parterName = "bd_bizpartner";//系统库 商务伙伴 表名 T_BD_BizPartner
// private static final String parterName = "bd_bizpartner";//系统库 商务伙伴 表名 T_BD_BizPartner
private static final Log log = LogFactory.getLog(SupplierControler.class);
private static final String apimenthod = "/supplier_sync";
@ -57,6 +58,9 @@ public class SupplierControler {
JSONArray itemsJson = new JSONArray();//返回值明细集合
JSONObject itemInfo;//返回值明细对象
JSONArray detailsJson = json_obj.getJSONArray("items");
if(detailsJson == null){
return CustomApiResult.fail("400","未识别到items参数");
}
JSONArray banksJson = json_obj.getJSONArray("banks");//供应商银行
JSONArray companysJson = json_obj.getJSONArray("companys");//供应商所属公司
String supnumber;
@ -119,8 +123,18 @@ public class SupplierControler {
currentSup.set("group",suptype.getLong("id"));//供应商分组
currentSup.set("bitindex",6);//位图
currentSup.set("supplier_status",EsbUtils.SUPPLIERSTATUS);//供应商状态 默认合格
//设置id和masterid 不然不能进行分配动作
currentSupId = ID.genLongId();
currentSup.set("id", currentSupId);
currentSup.set("masterid",currentSupId);
//处理分类
suppliergroupdetail = BusinessDataServiceHelper.newDynamicObject(gdName);
suppliergroupdetail.set("createorg",JhzjUtils.GROUPID);//创建组织
suppliergroupdetail.set("standard",EsbUtils.SUPPLIERSTAND);//供应商分类标准
suppliergroupdetail.set("group",suptype.getLong("id"));//具体分类
suppliergroupdetail.set("supplier",currentSupId);//供应商
SaveServiceHelper.save(new DynamicObject[]{suppliergroupdetail});
}
// currentSup.set("srccreateorg", JhzjUtils.GROUPID);//原创建组织 默认为集团
currentSup.set("name",supname);//供应商名称
currentSup.set("tx_register_no",taxno);//税务登记号
currentSup.set("societycreditcode",taxno);//统一社会信用代码
@ -132,52 +146,48 @@ public class SupplierControler {
// currentSup.set("invoicesupplierid",2132710265374922752l);//结算供应商
// currentSup.set("receivingsupplierid",2132710265374922752l);//收款供应商
//处理银行信息-分表
doc_bank = currentSup.getDynamicObjectCollection("entry_bank");
doc_bank.clear();
for (int j = 0; j < banksJson.size(); j++) {
json_bank = banksJson.getJSONObject(j);
if(!supnumber.equals(json_bank.getString("code"))){
continue;
}
bankcode = json_bank.getString("bankcode");
if(EsbUtils.isEmpty(bankcode)){
log.error(String.format("供应商行名行号为空异常:%s", json_bank.toJSONString()));
itemInfo = new JSONObject();
itemInfo.put("code",supnumber);
itemInfo.put("error","行名行号入参值为空");
itemsJson.add(itemInfo);
continue;
}
bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)});
if(bebankinfo == null){
log.error(String.format("供应商行名行号未匹配:%s", json_bank.toJSONString()));
itemInfo = new JSONObject();
itemInfo.put("code",supnumber);
itemInfo.put("error","供应商行名行号未匹配");
itemsJson.add(itemInfo);
continue;
}
bankinfo = doc_bank.addNew();
bankinfo.set("bankaccount",json_bank.getString("banknumber"));//银行账号
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
bankinfo.set("bank",bebankinfo.getLong("id"));//开户银行-行名行号 根据入参查找
bankinfo.set("currency",JhzjUtils.CNY);//币别 默认人民币
bankinfo.set("shjh_banktype",json_bank.getString("banktype"));//合作银行类型
//首行账户作为默认
if(j == 0){
bankinfo.set("isdefault_bank",1);
if(banksJson != null){
doc_bank = currentSup.getDynamicObjectCollection("entry_bank");
doc_bank.clear();
for (int j = 0; j < banksJson.size(); j++) {
json_bank = banksJson.getJSONObject(j);
if(!supnumber.equals(json_bank.getString("code"))){
continue;
}
bankcode = json_bank.getString("bankcode");
if(EsbUtils.isEmpty(bankcode)){
log.error(String.format("供应商行名行号为空异常:%s", json_bank.toJSONString()));
itemInfo = new JSONObject();
itemInfo.put("code",supnumber);
itemInfo.put("error","行名行号入参值为空");
itemsJson.add(itemInfo);
continue;
}
bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)});
if(bebankinfo == null){
log.error(String.format("供应商行名行号未匹配:%s", json_bank.toJSONString()));
itemInfo = new JSONObject();
itemInfo.put("code",supnumber);
itemInfo.put("error","供应商行名行号未匹配");
itemsJson.add(itemInfo);
continue;
}
bankinfo = doc_bank.addNew();
bankinfo.set("bankaccount",json_bank.getString("banknumber"));//银行账号
bankinfo.set("accountname",json_bank.getString("acctname"));//账户名称
bankinfo.set("bank",bebankinfo.getLong("id"));//开户银行-行名行号 根据入参查找
bankinfo.set("currency",JhzjUtils.CNY);//币别 默认人民币
bankinfo.set("shjh_banktype",json_bank.getString("banktype"));//合作银行类型
//首行账户作为默认
if(j == 0){
bankinfo.set("isdefault_bank",1);
}
}
}
//保存供应商
currentSupId = ((DynamicObject)SaveServiceHelper.save(new DynamicObject[]{currentSup})[0]).getLong("id");
//处理分类
DeleteServiceHelper.delete(gdName,new QFilter[]{new QFilter("supplier","=",currentSupId)});
suppliergroupdetail = BusinessDataServiceHelper.newDynamicObject(gdName);
suppliergroupdetail.set("createorg",JhzjUtils.GROUPID);//创建组织
suppliergroupdetail.set("standard",EsbUtils.SUPPLIERSTAND);//供应商分类标准
suppliergroupdetail.set("group",suptype.getLong("id"));//具体分类
suppliergroupdetail.set("supplier",currentSupId);//供应商
SaveServiceHelper.save(new DynamicObject[]{suppliergroupdetail});
SaveServiceHelper.save(new DynamicObject[]{currentSup});
currentSupId = currentSup.getLong("id");
cusids.put(supnumber,currentSupId);
//处理商务伙伴先判断是否已经生成了伙伴没有则新增一个伙伴
// parterInfo = BusinessDataServiceHelper.loadSingle(parterName,new QFilter[]{new QFilter("number","=",supnumber)});

View File

@ -8,12 +8,24 @@ import java.util.List;
@ApiModel
public class CustomerModel implements Serializable {
@ApiParam(value="批次id",required=true,position=1)
@ApiParam(value="批次id",required=false,position=1)
private String batchId;
@ApiParam(value="明细集合",required=true,position=2)
@ApiParam(value="明细集合",required=false,position=2)
private List<EntryBean> items;
@ApiParam(value="公司信息集合",required=true,position=3)
@ApiParam(value="银行信息集合",required=false,position=3)
private List<BankBean> banks;
@ApiParam(value="公司信息集合",required=false,position=4)
private List<CompanyBean> companys;
@ApiParam(value="客户组5集合",required=false,position=5)
private List<CustomerFiveBean> customerfives;
public List<BankBean> getBanks() {
return banks;
}
public void setBanks(List<BankBean> banks) {
this.banks = banks;
}
public void setCompanys(List<CompanyBean> companys) {
this.companys = companys;
@ -22,6 +34,14 @@ public class CustomerModel implements Serializable {
return companys;
}
public List<CustomerFiveBean> getCustomerfives() {
return customerfives;
}
public void setCustomerfives(List<CustomerFiveBean> customerfives) {
this.customerfives = customerfives;
}
public void setBatchId(String batchId) {
this.batchId = batchId;
}
@ -53,17 +73,6 @@ public class CustomerModel implements Serializable {
@ApiParam(value="使用状态",position=7)
private String status;
@ApiParam(value="银行信息集合",position=8)
private List<BankBean> banks;
public List<BankBean> getBanks() {
return banks;
}
public void setBanks(List<BankBean> banks) {
this.banks = banks;
}
public String getCode() {
return code;
}
@ -123,13 +132,23 @@ public class CustomerModel implements Serializable {
@ApiModel
public static class BankBean implements Serializable {
@ApiParam(value="账户名称",position=1)
@ApiParam(value="客户编码",position=1)
private String code;
@ApiParam(value="账户名称",position=2)
private String acctname;
@ApiParam(value="开户银行",position=2)
@ApiParam(value="开户银行",position=3)
private String bankname;
@ApiParam(value="银行账号",position=3)
@ApiParam(value="银行账号",position=4)
private String banknumber;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getAcctname() {
return acctname;
}
@ -156,9 +175,43 @@ public class CustomerModel implements Serializable {
}
@ApiModel
public static class CustomerFiveBean implements Serializable {
@ApiParam(value="客户编码",position=1)
private String code;
@ApiParam(value="客户组5编号",position=2)
private String customerfivecode;
@ApiParam(value="客户组5名称",position=3)
private String customerfivename;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getCustomerfivecode() {
return customerfivecode;
}
public void setCustomerfivecode(String customerfivecode) {
this.customerfivecode = customerfivecode;
}
public String getCustomerfivename() {
return customerfivename;
}
public void setCustomerfivename(String customerfivename) {
this.customerfivename = customerfivename;
}
}
@ApiModel
public static class CompanyBean implements Serializable {
@ApiParam(value="供应商编码",position=1)
@ApiParam(value="客户编码",position=1)
private String code;
@ApiParam(value="公司编号",position=2)
private String companynum;

View File

@ -8,13 +8,23 @@ import java.util.List;
@ApiModel
public class SupplierModel implements Serializable {
@ApiParam(value="批次id",required=true,position=1)
@ApiParam(value="批次id",required=false,position=1)
private String batchId;
@ApiParam(value="基本信息集合",required=true,position=2)
@ApiParam(value="基本信息集合",required=false,position=2)
private List<EntryBean> items;
@ApiParam(value="公司信息集合",required=true,position=3)
@ApiParam(value="银行信息集合",required=false,position=3)
private List<BankBean> banks;
@ApiParam(value="公司信息集合",required=false,position=4)
private List<CompanyBean> companys;
public List<BankBean> getBanks() {
return banks;
}
public void setBanks(List<BankBean> banks) {
this.banks = banks;
}
public void setBatchId(String batchId) {
this.batchId = batchId;
}
@ -53,17 +63,6 @@ public class SupplierModel implements Serializable {
@ApiParam(value="使用状态",position=7)
private String status;
@ApiParam(value="银行信息集合",position=8)
private List<BankBean> banks;
public List<BankBean> getBanks() {
return banks;
}
public void setBanks(List<BankBean> banks) {
this.banks = banks;
}
public String getCode() {
return code;
}
@ -123,17 +122,27 @@ public class SupplierModel implements Serializable {
@ApiModel
public static class BankBean implements Serializable {
@ApiParam(value="账户名称",position=1)
@ApiParam(value="供应商编号",position=1)
private String code;
@ApiParam(value="账户名称",position=2)
private String acctname;
@ApiParam(value="联行号",position=2)
@ApiParam(value="联行号",position=3)
private String bankcode;
@ApiParam(value="开户银行",position=3)
@ApiParam(value="开户银行",position=4)
private String bankname;
@ApiParam(value="银行账号",position=4)
@ApiParam(value="银行账号",position=5)
private String banknumber;
@ApiParam(value="合作银行类型",position=5)
@ApiParam(value="合作银行类型",position=6)
private String banktype;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getAcctname() {
return acctname;
}