123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package fi.fa.opplugin;
- import com.alibaba.druid.util.StringUtils;
- import fi.fa.opplugin.utils.ChangeDataUtils;
- import kd.bos.dataentity.OperateOption;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.entity.DynamicObjectCollection;
- import kd.bos.entity.operate.result.OperationResult;
- import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
- import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
- import kd.bos.exception.KDBizException;
- import kd.bos.orm.query.QCP;
- import kd.bos.orm.query.QFilter;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import kd.bos.servicehelper.operation.OperationServiceHelper;
- import kd.bos.servicehelper.operation.SaveServiceHelper;
- import java.util.List;
- //资产调出单中间表下推资产调出单
- public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
- @Override
- public void beginOperationTransaction(BeginOperationTransactionArgs e) {
- super.beginOperationTransaction(e);
- DynamicObject[] dynamicObjects = e.getDataEntities();
- for (int i = 0; i < dynamicObjects.length; i++) {
- if (StringUtils.equals(e.getOperationKey(), "push")) {
- DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
- String nckd_flag = info.getString("nckd_flag");
- if ("1".equals(nckd_flag)) {
- throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
- }else {
- String dispatchType = info.getString("nckd_dispatch_type");
- String direction = info.getString("nckd_direction");
- String error = ChangeDataUtils.check(info);
- if (!StringUtils.isEmpty(error)) {
- this.operationResult.setShowMessage(true);
- this.operationResult.setSuccess(false);
- this.operationResult.setMessage(error);
- }else {
- List<String> codeList = ChangeDataUtils.getCardNumber(info);
- if ("0".equals(dispatchType)) {
- QFilter filter = new QFilter("number", QCP.in,codeList);
- filter.and("isbak", QCP.equals, "0");
- DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
- DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
- //单据头
- dispatch.set("dispatchdate", info.getDate("nckd_date_out"));//调出日期
- dispatch.set("assetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出组织
- dispatch.set("inassetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入组织
- dispatch.set("org", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出核算组织
- dispatch.set("inorg", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入核算组织
- dispatch.set("reason", info.getString("nckd_reason"));//调出原因
- dispatch.set("dispatchtype", "A");//调拨类型 A="平价调拨",B="非平价调拨"
- dispatch.set("changemode", 14);//减少方式默认"调出"
- dispatch.set("currency", 1);//币种
- dispatch.set("currencyrate", 1);//结算汇率
- //制单信息
- dispatch.set("billstatus", "A");//暂存
- //调出方向
- if("0".equals(direction)){
- dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调出申请人
- dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调入负责人
- dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
- dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//修改人
- dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//审核人
- dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
- }//调入方向
- else if ("1".equals(direction)) {
- dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调出申请人
- dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调入负责人
- dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
- dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//修改人
- dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//审核人
- dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
- }
- for (int c = 0; c < card.length; c++) {
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
- //创建调出单分录
- DynamicObjectCollection entryEntity = dispatch.getDynamicObjectCollection("dispatchentry");
- DynamicObject entry1 = entryEntity.addNew();
- entry1.set("realcard", cardInfo);//资产编码
- entry1.set("measurement", cardInfo.getDynamicObject("unit").getLong("id"));//计量单位
- entry1.set("dispatchqty", cardInfo.getInt("assetamount"));//数量
- entry1.set("inusedept", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
- }
- //执行保存-提交-审核
- OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
- if (saveResult.isSuccess()){
- info.set("nckd_flag", "1");
- SaveServiceHelper.save(new DynamicObject[]{info});
- this.operationResult.setSuccess(true);
- this.operationResult.setMessage("下推资产调出单成功");
- this.operationResult.setShowMessage(true);
- OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_dispatch",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
- OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_dispatch",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
- }else {
- this.operationResult.setShowMessage(true);
- this.operationResult.setSuccess(false);
- this.operationResult.setMessage("下推资产调出单单失败");
- }
- }
- }
- }
- }
- }
- }
- }
|