diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/TestSupplierListPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/TestSupplierListPlugin.java index fbe4755..58428f9 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/TestSupplierListPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/TestSupplierListPlugin.java @@ -2,6 +2,7 @@ package shjh.jhzj7.fi.fi.plugin.form; import kd.bos.entity.filter.ControlFilters; import kd.bos.form.events.SetFilterEvent; +import kd.bos.list.IListView; import kd.bos.list.plugin.AbstractListPlugin; import kd.bos.orm.query.QFilter; @@ -16,16 +17,20 @@ public class TestSupplierListPlugin extends AbstractListPlugin { @Override public void setFilter(SetFilterEvent e) { super.setFilter(e); - List lqs = e.getQFilters(); - for (int i = 0; i < lqs.size(); i++) { - QFilter qf = lqs.get(i); - if("ctrlstrategy".equals(qf.getProperty())){ - lqs.remove(qf); - break; - } - } - lqs.add(new QFilter("createorg.id","=",2116762463713107968l)); - lqs.size(); +// List lqs = e.getQFilters(); +// for (int i = 0; i < lqs.size(); i++) { +// QFilter qf = lqs.get(i); +// if("ctrlstrategy".equals(qf.getProperty())){ +// lqs.remove(qf); +// break; +// } +// } +// ControlFilters cfilters = ((IListView)this.getView()).getControlFilters(); +//// cfilters. +// lqs.add(new QFilter("createorg.id","=",2116762463713107968l)); +// lqs.size(); +// ControlFilters cfilters = ((IListView)this.getView()).getControlFilters(); +// e.getQFilters().clear(); } @Override @@ -33,6 +38,7 @@ public class TestSupplierListPlugin extends AbstractListPlugin { return super.getControlFilters(); } + @Override public void afterBindData(EventObject e) { super.afterBindData(e); diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/AdminOrgControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/AdminOrgControler.java index 57cacdc..a8d1e65 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/AdminOrgControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/AdminOrgControler.java @@ -20,6 +20,7 @@ import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.org.OrgUnitServiceHelper; import kd.bos.servicehelper.org.OrgViewType; import shjh.jhzj7.fi.fi.utils.EsbUtils; +import shjh.jhzj7.fi.fi.utils.JhzjUtils; import shjh.jhzj7.fi.fi.webapi.model.AdminOrgModel; import javax.validation.Valid; @@ -41,7 +42,6 @@ public class AdminOrgControler { */ @ApiPostMapping(value = apimenthod, desc = "行政组织接口") public CustomApiResult adminorg_sync (@NotNull @Valid @ApiRequestBody(value="入参json格式") AdminOrgModel bizParam) { - JSONObject json_obj; try{ //解析入参,如果格式不正确,日志记录,并反馈esb @@ -58,8 +58,8 @@ public class AdminOrgControler { JSONArray itemsJson = new JSONArray();//返回值明细集合 JSONObject itemInfo;//返回值明细对象 JSONArray detailsJson = json_obj.getJSONArray("items"); - //处理入参的排序,按照deptLevel正序 - detailsJson.sort(Comparator.comparingInt(json -> ((JSONObject) json).getIntValue("deptLevel"))); +// //处理入参的排序,按照deptLevel正序 +// detailsJson.sort(Comparator.comparing(json -> ((JSONObject) json).getString("deptLevel"))); String orgNumber; String orgName; String fycc; @@ -76,83 +76,103 @@ public class AdminOrgControler { OrgDutyView dutyView; String handleResult; JSONObject json_body; - for (int i = 0; i < detailsJson.size(); i++) { - json_body = detailsJson.getJSONObject(i); - orgNumber = json_body.getString("code"); - orgName = json_body.getString("categoryName"); - fycc = json_body.getString("fee_cost_center");//费用成本中心 - parentCode = json_body.getString("parentCode");//上级组织编号 - person_charge = json_body.getString("deptManager");//部门负责人编号 - orgLevel = json_body.getString("deptLevel");//组织层级 - company = json_body.getString("company");//所属公司编号 - if(EsbUtils.isEmpty(orgNumber) || EsbUtils.isEmpty(orgName) || EsbUtils.isEmpty(orgLevel) || - (Integer.parseInt(orgLevel)>1 && EsbUtils.isEmpty(parentCode))){ - log.error(String.format("行政组织入参为空异常:%s", json_body.toJSONString())); - itemInfo = new JSONObject(); - itemInfo.put("code",orgNumber); - itemInfo.put("error","入参值为空"); - itemsJson.add(itemInfo); - continue; - } - param = new OrgParam(); - param.setName(orgName); - param.setNumber(orgNumber); - param.setOrgPatternId(4);//组织形态ID,默认ID为4L(部门)1为公司;当前组织是公司还是部门需要有字段可以体现 - param.setDuty(OrgViewType.Admin);//组织属性-行政组织 - param.setSource("esb");//数据来源 - param.setSimpleName(json_body.getString("deptshortname"));//组织简称 - //处理上级组织 - parentOrg = QueryServiceHelper.queryOne(entityName,"id,number",new QFilter[]{new QFilter("number","=",parentCode)}); - if(parentOrg == null && Integer.parseInt(orgLevel)>1){ - log.error(String.format("根据父级行政组织编号未在金蝶中找到对应组织:%s", parentCode)); - itemInfo = new JSONObject(); - itemInfo.put("code",orgNumber); - itemInfo.put("error","根据父级行政组织编号未在金蝶中找到对应组织"); - itemsJson.add(itemInfo); - continue; - } - propertyMap.clear(); - //处理费用成本中心 - costCenter = QueryServiceHelper.queryOne(ccName,"id,number",new QFilter[]{new QFilter("number","=",fycc)}); - if(costCenter != null){ - propertyMap.put("shjh_fycc", costCenter.getLong("id"));//设置成本中心ID - } - propertyMap.put("shjh_ssgs", company);//设置所属公司编号 - propertyMap.put("shjh_deptmanager", person_charge);//设置部门负责人编号 - //处理禁用组织 - if("0".equals(json_body.getString("status"))){ - propertyMap.put("enable", "0"); - } - param.setPropertyMap(propertyMap); - //根据组织编号查找系统现有数据是否存在 - currentOrg = QueryServiceHelper.queryOne(entityName,"id,number",new QFilter[]{new QFilter("number","=",orgNumber)}); - if(currentOrg == null){ - //新增组织 - param.setParentId(parentOrg.getLong("id"));//上级组织的金蝶ID - OrgUnitServiceHelper.add(param); - }else{ - //更新组织 - param.setId(currentOrg.getLong("id")); - //设置多视图参数 - multiViewMap.clear(); - dutyView = new OrgDutyView(); - //组织移动时,设置新的上级ID - dutyView.setParentId(parentOrg.getLong("id")); - //行政组织 - multiViewMap.put(OrgViewType.Admin, dutyView); - param.setMultiViewMap(multiViewMap); - OrgUnitServiceHelper.update(param); - } - if (!param.isSuccess()) { - handleResult = String.format("行政组织保存异常:%s", param.getMsg()); - log.error(handleResult); - itemInfo = new JSONObject(); - itemInfo.put("code",orgNumber); - itemInfo.put("error",handleResult); - itemsJson.add(itemInfo); + //MDM目前设置了A-H级 + String[] levelStr = new String[]{"A","B","C","D","E","F","G","H"}; + for (int j = 0; j < levelStr.length; j++) { + for (int i = 0; i < detailsJson.size(); i++) { + json_body = detailsJson.getJSONObject(i); + orgLevel = json_body.getString("deptLevel");//组织层级 + if(!levelStr[j].equals(orgLevel)){ + continue; + } + orgNumber = json_body.getString("code"); + orgName = json_body.getString("categoryName"); + fycc = json_body.getString("fee_cost_center");//费用成本中心 + parentCode = json_body.getString("parentCode");//上级组织编号 + person_charge = json_body.getString("deptManager");//部门负责人编号 + company = json_body.getString("company");//所属公司编号 + if(EsbUtils.isEmpty(orgNumber) || EsbUtils.isEmpty(orgName) || (j>=1 && EsbUtils.isEmpty(parentCode))){ + log.error(String.format("行政组织入参为空异常:%s", json_body.toJSONString())); + itemInfo = new JSONObject(); + itemInfo.put("code",orgNumber); + itemInfo.put("error","入参值为空"); + itemsJson.add(itemInfo); + continue; + } + param = new OrgParam(); + param.setName(orgName); + param.setNumber(orgNumber); + param.setOrgPatternId(4);//组织形态ID,默认ID为4L(部门)1为公司;当前组织是公司还是部门需要有字段可以体现 + param.setDuty(OrgViewType.Admin);//组织属性-行政组织 + param.setSource("esb");//数据来源 + param.setSimpleName(json_body.getString("deptshortname"));//组织简称 + //处理上级组织 + parentOrg = QueryServiceHelper.queryOne(entityName,"id,number",new QFilter[]{new QFilter("number","=",parentCode)}); + if(parentOrg == null && j>=1){ + log.error(String.format("根据父级行政组织编号未在金蝶中找到对应组织:%s", parentCode)); + itemInfo = new JSONObject(); + itemInfo.put("code",orgNumber); + itemInfo.put("error","根据父级行政组织编号未在金蝶中找到对应组织"); + itemsJson.add(itemInfo); + continue; + } + propertyMap.clear(); + //处理费用成本中心 + if(!EsbUtils.isEmpty(fycc)){ + costCenter = QueryServiceHelper.queryOne(ccName,"id,number",new QFilter[]{new QFilter("number","=",fycc)}); + if(costCenter != null){ + propertyMap.put("shjh_fycc", costCenter.getLong("id"));//设置成本中心ID + } + } + + propertyMap.put("shjh_ssgs", company);//设置所属公司编号 + propertyMap.put("shjh_deptmanager", person_charge);//设置部门负责人编号 + //处理禁用组织 + if("0".equals(json_body.getString("status"))){ + propertyMap.put("enable", "0"); + } + param.setPropertyMap(propertyMap); + //根据组织编号查找系统现有数据是否存在 + currentOrg = QueryServiceHelper.queryOne(entityName,"id,number",new QFilter[]{new QFilter("number","=",orgNumber)}); + if(currentOrg == null){ + //新增组织 + if("A".equals(orgLevel)){ + //如果是A 第一级 则上级为组织的根节点 + param.setParentId(JhzjUtils.GROUPID); + }else{ + param.setParentId(parentOrg.getLong("id"));//上级组织的金蝶ID + } + OrgUnitServiceHelper.add(param); + }else{ + //更新组织 + param.setId(currentOrg.getLong("id")); + //设置多视图参数 + multiViewMap.clear(); + dutyView = new OrgDutyView(); + //组织移动时,设置新的上级ID + if("A".equals(orgLevel)){ + //如果是A 第一级 则上级为组织的根节点 + dutyView.setParentId(JhzjUtils.GROUPID); + }else{ + dutyView.setParentId(parentOrg.getLong("id")); + } + //行政组织 + multiViewMap.put(OrgViewType.Admin, dutyView); + param.setMultiViewMap(multiViewMap); + OrgUnitServiceHelper.update(param); + } + if (!param.isSuccess()) { + handleResult = String.format("行政组织保存异常:%s", param.getMsg()); + log.error(handleResult); + itemInfo = new JSONObject(); + itemInfo.put("code",orgNumber); + itemInfo.put("error",handleResult); + itemsJson.add(itemInfo); + } } } + //返回最终处理结果,如果上述有单个组织处理失败,则总体状态overallStatus是何值? // json_result.put("overallStatus","1"); // json_result.put("items",itemsJson); diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java index 2097b3d..d52f3b5 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/AspAccountControler.java @@ -11,6 +11,8 @@ 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.db.DB; +import kd.bos.db.DBRoute; import kd.bos.id.ID; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; @@ -20,6 +22,7 @@ import kd.bos.openapi.common.custom.annotation.ApiRequestBody; import kd.bos.openapi.common.result.CustomApiResult; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.basedata.BaseDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import shjh.jhzj7.fi.fi.utils.EsbUtils; import shjh.jhzj7.fi.fi.utils.JhzjUtils; @@ -85,8 +88,12 @@ public class AspAccountControler { DynamicObjectCollection docbb; DynamicObject bbInfo; String bbiso; + String insertSql = "insert into T_BD_Account_U(fdataid,fuseorgid) values (?,?);"; + Map acctids = new HashMap<>();//科目编号和ID对应关系 Map accountMaps = new HashMap<>();//将科目编号与对象关联 - + //先根据基础信息在集团层面生成科目,不考虑核算维度,使用逐级分配 + //再根据公司信息进行科目分配 + //最后处理每个公司下科目的核算维度和禁用状态 for (int i = 0; i < companysJson.size(); i++) { company_body = companysJson.getJSONObject(i); number = company_body.getString("code"); @@ -124,8 +131,6 @@ public class AspAccountControler { if("0".equals(company_body.getString("companystatus")) || "0".equals(json_body.getString("status"))){ acctInfo.set("enable", 0);//科目禁用处理 } -// acctInfo.set("ctrlstrategy", "7"); -// acctInfo.set("pltype", getSY(acctType)); acctInfo.set("name", name); acctInfo.set("fullname", name); acctInfo.set("acctcurrency", bbhs); @@ -196,7 +201,7 @@ public class AspAccountControler { } } } - acctInfo.set("ctrlstrategy", "7");//控制策略 5全局共享 7私有 + acctInfo.set("ctrlstrategy", "1");//控制策略 5全局共享 7私有 1逐级分配 acctInfo.set("control", "nocontrol");//受控系统 nocontrol 无 应付 应收 资产 //损益类型 acctInfo.set("pltype", getSY(acctType)); @@ -222,10 +227,15 @@ public class AspAccountControler { acctInfo.set("masterid", kmId);//主数据内码,系统不会根据id自动生成,需要手动设置 //保存数据:直接保存入库,不走操作校验 SaveServiceHelper.save(new DynamicObject[]{acctInfo}); + //处理科目使用范围 + DB.update(DBRoute.of("sys"), insertSql, new Object[]{kmId,JhzjUtils.GROUPID}); } accountMaps.put(number+companynum,acctInfo); } + //处理科目分配 + EsbUtils.handleAssign(companysJson, acctids, entityName); + //处理核算维度 JSONArray asstacttypesJson = json_obj.getJSONArray("asstacttypes"); String hsxm;//核算维度名称 基础资料 diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/model/AdminOrgModel.java b/main/java/shjh/jhzj7/fi/fi/webapi/model/AdminOrgModel.java index f7cd04b..40cf63d 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/model/AdminOrgModel.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/model/AdminOrgModel.java @@ -9,9 +9,9 @@ import java.util.List; @ApiModel public class AdminOrgModel 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 items; public void setBatchId(String batchId) { this.batchId = batchId; diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/model/CostCenterModel.java b/main/java/shjh/jhzj7/fi/fi/webapi/model/CostCenterModel.java index e6e3203..015d741 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/model/CostCenterModel.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/model/CostCenterModel.java @@ -9,9 +9,9 @@ import java.util.List; @ApiModel public class CostCenterModel 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 items; public void setBatchId(String batchId) { this.batchId = batchId; diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/model/PersonModel.java b/main/java/shjh/jhzj7/fi/fi/webapi/model/PersonModel.java index 112c014..9b7a910 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/model/PersonModel.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/model/PersonModel.java @@ -9,11 +9,11 @@ import java.util.List; @ApiModel public class PersonModel 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 String staffType; - @ApiParam(value="明细集合",required=true,position=3) + @ApiParam(value="明细集合",required=false,position=3) private List items; public void setBatchId(String batchId) { this.batchId = batchId;