lc/lc123/cloud/app/plugin/operate/sys/MaterialManualAssignOpPlugi...

238 lines
11 KiB
Java
Raw Normal View History

2025-11-26 03:43:27 +00:00
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.operate.result.OperationResult;
2025-11-26 03:43:27 +00:00
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.OperationServiceHelper;
2025-11-26 03:43:27 +00:00
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.util.StringUtils;
2025-11-26 03:43:27 +00:00
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");
String tqq9_srcnumber = dynamicObject.getString("tqq9_srcnumber");
if (StringUtils.isNotEmpty(tqq9_srcnumber)) {
return;
}
2025-11-26 03:43:27 +00:00
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")});
generateMaterialInfo(targetEntityNumber, targetBillIds, success, bjlc, gzlc, shlc);
2025-11-26 03:43:27 +00:00
targetEntityNumber = "bd_materialpurchaseinfo";//物料采购信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
ruleId = "2350906360427737088";
//传入转换规则id
pushArgs.setRuleId(ruleId);
//执行下推
result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
targetBillIds = result.getTargetBillIds();
success = result.isSuccess();
generateMaterialInfo(targetEntityNumber, targetBillIds, success, bjlc, gzlc, shlc);
2025-11-26 03:43:27 +00:00
ruleId = "2352406985778951168";
targetEntityNumber = "bd_materialsalinfo";//物料销售信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
//传入转换规则id
pushArgs.setRuleId(ruleId);
//执行下推
result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
targetBillIds = result.getTargetBillIds();
success = result.isSuccess();
generateMaterialInfo(targetEntityNumber, targetBillIds, success, bjlc, gzlc, shlc);
2025-11-26 03:43:27 +00:00
2025-11-27 06:07:30 +00:00
ruleId = "2352399204346786816";
targetEntityNumber = "bd_materialcalinfo";//物料核算信息
//目标单标识
pushArgs.setTargetEntityNumber(targetEntityNumber);
//传入转换规则id
pushArgs.setRuleId(ruleId);
//执行下推
result = ConvertServiceHelper.pushAndSave(pushArgs);
//获取下推目标单id
targetBillIds = result.getTargetBillIds();
success = result.isSuccess();
generateMaterialInfo(targetEntityNumber, targetBillIds, success, bjlc, gzlc, shlc);
2025-11-26 03:43:27 +00:00
/*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());
}*/
}
}
/**
* 生成对应的物料业务信息库存采购销售
*
* @param targetEntityNumber 目标单据标识
* @param targetBillIds 下推成功的目标单据id
* @param success 是否下推成功
* @param bjlc 北京组织
* @param gzlc 广州组织
* @param shlc 上海组织
*/
private void generateMaterialInfo(String targetEntityNumber, Set<Object> targetBillIds, boolean success, DynamicObject bjlc, DynamicObject gzlc, DynamicObject 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);
sh.set("srccreateorg", 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);
DynamicObject gz = (DynamicObject) new CloneUtils(false, true).clone(sh);
OperationResult submitResult = OperationServiceHelper.executeOperate("submit", targetEntityNumber, new DynamicObject[]{sh}, OperateOption.create());
if (submitResult.isSuccess()) {
OperationResult auditResult = OperationServiceHelper.executeOperate("audit", targetEntityNumber, new DynamicObject[]{sh}, OperateOption.create());
}
bj.set("createorg", bjlc);
bj.set("srccreateorg", bjlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
bj.set("mbdmasterid", bj.getLong("id"));
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
submitResult = OperationServiceHelper.executeOperate("submit", targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
if (submitResult.isSuccess()) {
OperationResult auditResult = OperationServiceHelper.executeOperate("audit", targetEntityNumber, new DynamicObject[]{bj}, OperateOption.create());
}
gz.set("createorg", gzlc);
gz.set("srccreateorg", gzlc);
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
gz.set("mbdmasterid", gz.getLong("id"));
SaveServiceHelper.saveOperate(targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
submitResult = OperationServiceHelper.executeOperate("submit", targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
if (submitResult.isSuccess()) {
OperationResult auditResult = OperationServiceHelper.executeOperate("audit", targetEntityNumber, new DynamicObject[]{gz}, OperateOption.create());
}
}
}
}
}
2025-11-26 03:43:27 +00:00
}