供应商初始化操作
This commit is contained in:
parent
a15ab9e97e
commit
29cc466912
|
|
@ -0,0 +1,232 @@
|
||||||
|
package shjh.jhzj7.fi.fi.plugin.operate;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONException;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.sap.db.jdbc.packet.ErrorLevel;
|
||||||
|
import kd.bos.context.RequestContext;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.entity.operate.result.OperateErrorInfo;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
import kd.bos.id.ID;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.EsbUtils;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
//供应商初始化操作
|
||||||
|
public class SupplierInitOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
private static final String entityName = "bd_supplier";//系统库 表名 T_BD_Supplier
|
||||||
|
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 Log log = LogFactory.getLog(SupplierInitOperation.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
|
super.afterExecuteOperationTransaction(e);
|
||||||
|
String eok = e.getOperationKey();
|
||||||
|
if("supplierinit".equals(eok)){
|
||||||
|
DynamicObject[] dos = e.getDataEntities();
|
||||||
|
DynamicObject pzinfo = BusinessDataServiceHelper.loadSingle(dos[0].getPkValue(), dos[0].getDataEntityType().getName());
|
||||||
|
JSONObject json_obj;
|
||||||
|
try{
|
||||||
|
//解析入参,如果格式不正确,日志记录,并反馈esb
|
||||||
|
json_obj = JSONObject.parseObject(pzinfo.getString("shjh_inputs_tag"));
|
||||||
|
}catch (JSONException e1) {
|
||||||
|
String jsonResult = String.format("供应商接口入参异常:%s", e1.getMessage());
|
||||||
|
log.error(jsonResult);
|
||||||
|
addErrorInfo(pzinfo,"接口入参异常"+jsonResult);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONArray itemsJson = new JSONArray();//返回值明细集合
|
||||||
|
JSONObject itemInfo;//返回值明细对象
|
||||||
|
JSONArray detailsJson = json_obj.getJSONArray("items");
|
||||||
|
if(detailsJson == null){
|
||||||
|
addErrorInfo(pzinfo,"未识别到items参数");
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
JSONArray banksJson = json_obj.getJSONArray("banks");//供应商银行
|
||||||
|
JSONArray companysJson = json_obj.getJSONArray("companys");//供应商所属公司
|
||||||
|
String supnumber;
|
||||||
|
String supname;
|
||||||
|
String taxno;
|
||||||
|
String type;
|
||||||
|
String bankcode;
|
||||||
|
DynamicObject currentSup;
|
||||||
|
DynamicObject suptype;
|
||||||
|
JSONObject json_body;
|
||||||
|
DynamicObjectCollection doc_bank;
|
||||||
|
DynamicObject bankinfo;
|
||||||
|
DynamicObject bebankinfo;
|
||||||
|
JSONObject json_bank;
|
||||||
|
Long currentSupId;
|
||||||
|
DynamicObject suppliergroupdetail;
|
||||||
|
Map<String, Long> cusids = new HashMap<>();//供应商编号和ID对应关系
|
||||||
|
for (int i = 0; i < detailsJson.size(); i++) {
|
||||||
|
json_body = detailsJson.getJSONObject(i);
|
||||||
|
supnumber = json_body.getString("code");
|
||||||
|
supname = json_body.getString("name");
|
||||||
|
taxno = json_body.getString("taxno");
|
||||||
|
type = json_body.getString("type");
|
||||||
|
|
||||||
|
if(EsbUtils.isEmpty(supnumber) || EsbUtils.isEmpty(supname) || EsbUtils.isEmpty(taxno) || EsbUtils.isEmpty(type)){
|
||||||
|
log.error(String.format("供应商接口入参为空异常:%s", json_body.toJSONString()));
|
||||||
|
itemInfo = new JSONObject();
|
||||||
|
itemInfo.put("code",supnumber);
|
||||||
|
itemInfo.put("error","入参值为空");
|
||||||
|
itemsJson.add(itemInfo);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
suptype = BusinessDataServiceHelper.loadSingleFromCache(supTypeName,"id,number",new QFilter[]{new QFilter("number","=",type)});
|
||||||
|
if(suptype == null){
|
||||||
|
log.error(String.format("供应商分类未匹配:%s", json_body.toJSONString()));
|
||||||
|
itemInfo = new JSONObject();
|
||||||
|
itemInfo.put("code",supnumber);
|
||||||
|
itemInfo.put("error","供应商分类未匹配");
|
||||||
|
itemsJson.add(itemInfo);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
currentSup = BusinessDataServiceHelper.loadSingle(entityName,new QFilter[]{new QFilter("number","=",supnumber)});
|
||||||
|
if(currentSup == null){
|
||||||
|
//根据编号找不到供应商,则新增
|
||||||
|
currentSup = BusinessDataServiceHelper.newDynamicObject(entityName);
|
||||||
|
currentSup.set("number",supnumber);
|
||||||
|
currentSup.set("status","C");//数据状态
|
||||||
|
currentSup.set("creator", RequestContext.get().getCurrUserId());//创建人
|
||||||
|
currentSup.set("approverid", RequestContext.get().getCurrUserId());//审核人
|
||||||
|
currentSup.set("approvedate", new Date());//审核时间
|
||||||
|
currentSup.set("enable",1);//默认可用
|
||||||
|
currentSup.set("type","1");//伙伴类型 默认法人企业
|
||||||
|
currentSup.set("bizfunction",",1,2,3,4,");//业务职能 默认全选
|
||||||
|
currentSup.set("createorg", JhzjUtils.GROUPID);//创建组织 默认为集团
|
||||||
|
currentSup.set("org", JhzjUtils.GROUPID);//管理组织 默认为集团
|
||||||
|
currentSup.set("source","SELF");//来源 默认自建
|
||||||
|
currentSup.set("ctrlstrategy","1");//控制策略 默认逐级分配
|
||||||
|
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("name",supname);//供应商名称
|
||||||
|
currentSup.set("tx_register_no",taxno);//税务登记号
|
||||||
|
currentSup.set("societycreditcode",taxno);//统一社会信用代码
|
||||||
|
currentSup.set("linkman",json_body.getString("contacts"));//联系人
|
||||||
|
currentSup.set("bizpartner_phone",json_body.getString("telnum"));//联系电话
|
||||||
|
//处理银行信息-分表
|
||||||
|
if(banksJson != null){
|
||||||
|
doc_bank = currentSup.getDynamicObjectCollection("entry_bank");
|
||||||
|
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)){
|
||||||
|
//联行号为空,不处理
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)});
|
||||||
|
if(bebankinfo == null){
|
||||||
|
//联行号在金蝶中无对应记录,不处理
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//供应商银行账户对象从现有集合中查找,查找不到,则新增
|
||||||
|
bankinfo = getBankInfo(doc_bank,json_bank.getString("banknumber"));
|
||||||
|
if(bankinfo == null && "E".equals(json_bank.getString("bankstatus"))){
|
||||||
|
//如果本次入参银行账户未在系统生成,且sap是删除的,我方不接收
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(bankinfo == null){
|
||||||
|
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"));//合作银行类型
|
||||||
|
bankinfo.set("shjh_bankstatus",json_bank.getString("bankstatus"));//账户状态
|
||||||
|
}
|
||||||
|
if(!doc_bank.isEmpty()){
|
||||||
|
//首行账户作为默认
|
||||||
|
doc_bank.get(0).set("isdefault_bank",true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//处理 sap公司信息 结算方式 统驭科目
|
||||||
|
handleSAPCompany(companysJson,currentSup.getDynamicObjectCollection("shjh_entry_sap"),supnumber);
|
||||||
|
//保存供应商
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{currentSup});
|
||||||
|
cusids.put(supnumber,currentSup.getLong("id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理供应商分配
|
||||||
|
EsbUtils.handleAssign(companysJson, cusids, entityName);
|
||||||
|
//处理供应商取消分配
|
||||||
|
EsbUtils.handleUnAssign(companysJson, cusids, entityName);
|
||||||
|
|
||||||
|
if(itemsJson.isEmpty()){
|
||||||
|
this.operationResult.addSuccessPkId(pzinfo.getPkValue());
|
||||||
|
}else{
|
||||||
|
addErrorInfo(pzinfo,"接口处理异常"+itemsJson.toJSONString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addErrorInfo(DynamicObject bill, String errorMsg) {
|
||||||
|
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
||||||
|
operateErrorInfo.setMessage(errorMsg);
|
||||||
|
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
||||||
|
operateErrorInfo.setPkValue(bill.getPkValue());
|
||||||
|
this.operationResult.addErrorInfo(operateErrorInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSAPCompany(JSONArray companysJson,DynamicObjectCollection doc_sap,String supnumber){
|
||||||
|
if(companysJson == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
doc_sap.clear();
|
||||||
|
JSONObject json_body;
|
||||||
|
DynamicObject fiveinfo;
|
||||||
|
for (int i = 0; i < companysJson.size(); i++) {
|
||||||
|
json_body = companysJson.getJSONObject(i);
|
||||||
|
if(supnumber.equals(json_body.getString("code"))){
|
||||||
|
fiveinfo = doc_sap.addNew();
|
||||||
|
fiveinfo.set("shjh_settlementmethod",json_body.getString("settlementmethod"));//结算方式编号
|
||||||
|
fiveinfo.set("shjh_accountnumber",json_body.getString("accountnumber"));//统驭科目编号
|
||||||
|
fiveinfo.set("shjh_companynum",json_body.getString("companynum"));//公司编号
|
||||||
|
fiveinfo.set("shjh_status",EsbUtils.getStatusForBoolean(json_body.getString("companystatus")));//使用状态
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DynamicObject getBankInfo(DynamicObjectCollection doc_bank, String banknumber){
|
||||||
|
//从当前供应商的银行账户集合中获取对应的账户的对象
|
||||||
|
for (DynamicObject bankinfo : doc_bank) {
|
||||||
|
if(banknumber.equals(bankinfo.getString("bankaccount"))){
|
||||||
|
return bankinfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue