AssetMidBillOpPlugin.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package fi.fa.opplugin;
  2. import com.alibaba.druid.util.StringUtils;
  3. import fi.fa.opplugin.utils.ChangeDataUtils;
  4. import kd.bos.dataentity.OperateOption;
  5. import kd.bos.dataentity.entity.DynamicObject;
  6. import kd.bos.dataentity.entity.DynamicObjectCollection;
  7. import kd.bos.entity.operate.result.OperationResult;
  8. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  9. import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
  10. import kd.bos.exception.KDBizException;
  11. import kd.bos.orm.query.QCP;
  12. import kd.bos.orm.query.QFilter;
  13. import kd.bos.servicehelper.BusinessDataServiceHelper;
  14. import kd.bos.servicehelper.operation.OperationServiceHelper;
  15. import kd.bos.servicehelper.operation.SaveServiceHelper;
  16. import java.util.List;
  17. //资产调出单中间表下推资产调出单
  18. public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
  19. @Override
  20. public void beginOperationTransaction(BeginOperationTransactionArgs e) {
  21. super.beginOperationTransaction(e);
  22. DynamicObject[] dynamicObjects = e.getDataEntities();
  23. for (int i = 0; i < dynamicObjects.length; i++) {
  24. if (StringUtils.equals(e.getOperationKey(), "push")) {
  25. DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
  26. String nckd_flag = info.getString("nckd_flag");
  27. if ("1".equals(nckd_flag)) {
  28. throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
  29. }else {
  30. String dispatchType = info.getString("nckd_dispatch_type");
  31. String direction = info.getString("nckd_direction");
  32. String error = ChangeDataUtils.check(info);
  33. if (!StringUtils.isEmpty(error)) {
  34. this.operationResult.setShowMessage(true);
  35. this.operationResult.setSuccess(false);
  36. this.operationResult.setMessage(error);
  37. }else {
  38. List<String> codeList = ChangeDataUtils.getCardNumber(info);
  39. if ("0".equals(dispatchType)) {
  40. QFilter filter = new QFilter("number", QCP.in,codeList);
  41. filter.and("isbak", QCP.equals, "0");
  42. DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
  43. DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
  44. //单据头
  45. dispatch.set("dispatchdate", info.getDate("nckd_date_out"));//调出日期
  46. dispatch.set("assetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出组织
  47. dispatch.set("inassetunit", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入组织
  48. dispatch.set("org", ChangeDataUtils.getOrg(info.getString("nckd_org_out")));//调出核算组织
  49. dispatch.set("inorg", ChangeDataUtils.getOrg(info.getString("nckd_org_in")));//调入核算组织
  50. dispatch.set("reason", info.getString("nckd_reason"));//调出原因
  51. dispatch.set("dispatchtype", "A");//调拨类型 A="平价调拨",B="非平价调拨"
  52. dispatch.set("changemode", 14);//减少方式默认"调出"
  53. dispatch.set("currency", 1);//币种
  54. dispatch.set("currencyrate", 1);//结算汇率
  55. //制单信息
  56. dispatch.set("billstatus", "A");//暂存
  57. //调出方向
  58. if("0".equals(direction)){
  59. dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调出申请人
  60. dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调入负责人
  61. dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
  62. dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//修改人
  63. dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//审核人
  64. dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
  65. }//调入方向
  66. else if ("1".equals(direction)) {
  67. dispatch.set("outuser", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调出申请人
  68. dispatch.set("inuser", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调入负责人
  69. dispatch.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
  70. dispatch.set("modifier", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//修改人
  71. dispatch.set("auditor", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//审核人
  72. dispatch.set("appliant", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
  73. }
  74. for (int c = 0; c < card.length; c++) {
  75. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
  76. //创建调出单分录
  77. DynamicObjectCollection entryEntity = dispatch.getDynamicObjectCollection("dispatchentry");
  78. DynamicObject entry1 = entryEntity.addNew();
  79. entry1.set("realcard", cardInfo);//资产编码
  80. entry1.set("measurement", cardInfo.getDynamicObject("unit").getLong("id"));//计量单位
  81. entry1.set("dispatchqty", cardInfo.getInt("assetamount"));//数量
  82. entry1.set("inusedept", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
  83. }
  84. //执行保存-提交-审核
  85. OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
  86. if (saveResult.isSuccess()){
  87. info.set("nckd_flag", "1");
  88. SaveServiceHelper.save(new DynamicObject[]{info});
  89. this.operationResult.setSuccess(true);
  90. this.operationResult.setMessage("下推资产调出单成功");
  91. this.operationResult.setShowMessage(true);
  92. OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_dispatch",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
  93. OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_dispatch",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
  94. }else {
  95. this.operationResult.setShowMessage(true);
  96. this.operationResult.setSuccess(false);
  97. this.operationResult.setMessage("下推资产调出单单失败");
  98. }
  99. }
  100. }
  101. }
  102. }
  103. }
  104. }
  105. }