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

238 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
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;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.util.StringUtils;
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;
}
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);
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);
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);
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);
/*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());
}
}
}
}
}
}