生成物料业务信息

This commit is contained in:
sez 2025-11-26 11:43:27 +08:00
parent c2d592e676
commit 7f5689249f
1 changed files with 238 additions and 0 deletions

View File

@ -0,0 +1,238 @@
package tqq9.lc123.cloud.app.plugin.operate.sys;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.botp.runtime.ConvertOperationResult;
import kd.bos.entity.botp.runtime.PushArgs;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
import kd.bos.servicehelper.botp.ConvertServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
*
*/
public class MaterialManualAssignOpPlugin extends AbstractOperationServicePlugIn {
private static final Log logger = LogFactory.getLog(MaterialManualAssignOpPlugin.class);
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.addValidator(new AbstractValidator() {
@Override
public void validate() {
/*ExtendedDataEntity[] dataEntities1 =this.getDataEntities();
for (ExtendedDataEntity extendedDataEntity : dataEntities1) {
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
dataEntity=BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(),"bd_material");
String ctrlStrategy = dataEntity.getString("ctrlstrategy");
if ("5".equals(ctrlStrategy) || "6".equals(ctrlStrategy) || "7".equals(ctrlStrategy)) {
this.addErrorMessage(extendedDataEntity,"控制策略为“自由分配”或“逐级分配”的基础数据才能分配");
}
}*/
//Item-00000008自由分配的基础数据只能由创建组织分配组织上海励齿不是基础资料的创建组织
}
});
}
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities1 = e.getDataEntities();
for (DynamicObject dynamicObject : dataEntities1) {
dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), "bd_material");
PushArgs pushArgs = new PushArgs();
//源单标识
pushArgs.setSourceEntityNumber("bd_material");
String targetEntityNumber = "bd_materialinventoryinfo";//物料库存信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
//生成转换结果报告
pushArgs.setBuildConvReport(true);
//不检查目标单新增权限
pushArgs.setHasRight(true);
String tqq9_sfqyxqgl1 = dynamicObject.getString("tqq9_sfqyxqgl1");//是否启用有效期管理
String ruleId = "2352399500154269696";
if (!"true".equals(tqq9_sfqyxqgl1)) {
ruleId = "2352962432307067904";
}
//传入转换规则id
pushArgs.setRuleId(ruleId);
//
//下推自动保存
pushArgs.setAutoSave(true);
//设置源单选中的数据包
List<ListSelectedRow> selectedRowList = new ArrayList<>();
ListSelectedRow row = new ListSelectedRow();
row.setPrimaryKeyValue(dynamicObject.getPkValue());
selectedRowList.add(row);
pushArgs.setSelectedRows(selectedRowList);
//执行下推
ConvertOperationResult result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
Set<Object> targetBillIds = result.getTargetBillIds();
boolean success = result.isSuccess();
DynamicObject bjlc = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{new QFilter("number", QCP.equals, "BJLC")});
DynamicObject gzlc = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{new QFilter("number", QCP.equals, "GZLC")});
DynamicObject shlc = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{new QFilter("number", QCP.equals, "SHLC")});
if (success) {
if (targetBillIds.size() > 0) {
for (Object targetBillId : targetBillIds) {
OperateOption option = OperateOption.create();
option.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");
option.setVariableValue(OperateOptionConst.ORM_SAVEOP_REMOVECACHE, "true");
DynamicObject sh = BusinessDataServiceHelper.loadSingle(targetBillId, targetEntityNumber);
sh.set("createorg", shlc);
List<Long> ids = new ArrayList<>();
ids.add((Long) targetBillId);
BaseDataServiceHelper.managePermChange(targetEntityNumber, ids, shlc.getLong("id"));
DynamicObject bj = (DynamicObject) new CloneUtils(false, true).clone(sh);
bj.set("createorg", bjlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
DynamicObject gz = (DynamicObject) new CloneUtils(false, true).clone(sh);
gz.set("createorg", gzlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
}
}
}
targetEntityNumber = "bd_materialpurchaseinfo";//物料采购信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
ruleId = "2350906360427737088";
//传入转换规则id
pushArgs.setRuleId(ruleId);
//执行下推
result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
targetBillIds = result.getTargetBillIds();
success = result.isSuccess();
if (success) {
if (targetBillIds.size() > 0) {
for (Object targetBillId : targetBillIds) {
OperateOption option = OperateOption.create();
option.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");
option.setVariableValue(OperateOptionConst.ORM_SAVEOP_REMOVECACHE, "true");
DynamicObject sh = BusinessDataServiceHelper.loadSingle(targetBillId, targetEntityNumber);
sh.set("createorg", shlc);
List<Long> ids = new ArrayList<>();
ids.add((Long) targetBillId);
BaseDataServiceHelper.managePermChange(targetEntityNumber, ids, shlc.getLong("id"));
DynamicObject bj = (DynamicObject) new CloneUtils(false, true).clone(sh);
bj.set("createorg", bjlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
DynamicObject gz = (DynamicObject) new CloneUtils(false, true).clone(sh);
gz.set("createorg", gzlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
}
}
}
ruleId = "2352406985778951168";
targetEntityNumber = "bd_materialsalinfo";//物料销售信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
//传入转换规则id
pushArgs.setRuleId(ruleId);
//执行下推
result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
targetBillIds = result.getTargetBillIds();
success = result.isSuccess();
if (success) {
if (targetBillIds.size() > 0) {
for (Object targetBillId : targetBillIds) {
OperateOption option = OperateOption.create();
option.setVariableValue(OperateOptionConst.ISHASRIGHT, "true");
option.setVariableValue(OperateOptionConst.ORM_SAVEOP_REMOVECACHE, "true");
DynamicObject sh = BusinessDataServiceHelper.loadSingle(targetBillId, targetEntityNumber);
sh.set("createorg", shlc);
List<Long> ids = new ArrayList<>();
ids.add((Long) targetBillId);
BaseDataServiceHelper.managePermChange(targetEntityNumber, ids, shlc.getLong("id"));
DynamicObject bj = (DynamicObject) new CloneUtils(false, true).clone(sh);
bj.set("createorg", bjlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
DynamicObject gz = (DynamicObject) new CloneUtils(false, true).clone(sh);
gz.set("createorg", gzlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
}
}
}
/*Set<Long> dataIds = new HashSet();
long id = dynamicObject.getLong("id");
dataIds.add(id);
String useOrgId = "100000";
// String bd_ctrl_strategy = "2";
String entityNumber = "bd_material";
String appId = "basedata";
// String assign_data = "id";
Set<Long> orgIds = new HashSet(3);
//北上广的组织id
DynamicObject[] orgs = BusinessDataServiceHelper.load("bos_adminorg", "id",
new QFilter[]{new QFilter("number", QCP.in, new String[]{"SHLC", "BJLC", "GZLC"})});
for (DynamicObject org : orgs) {
orgIds.add(org.getLong("id"));
}
BaseDataResponse response = (new AssignService(entityNumber)).assign(Long.valueOf(useOrgId), appId, dataIds, orgIds, true);
if (!response.isSuccess()) {
LCLogServiceImpl lcLogService = new LCLogServiceImpl();
lcLogService.savelog("物料手动分配失败", "", true, false, "", response.getResult().toString());
}*/
}
}
}