SaloutStockOpPlugin.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package nckd.pur.scp.plugin.operate;
  2. import kd.bos.dataentity.entity.DynamicObject;
  3. import kd.bos.dataentity.entity.DynamicObjectCollection;
  4. import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
  5. import kd.bos.entity.plugin.args.AfterOperationArgs;
  6. import kd.bos.orm.query.QCP;
  7. import kd.bos.orm.query.QFilter;
  8. import kd.bos.servicehelper.BusinessDataServiceHelper;
  9. import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
  10. import kd.bos.servicehelper.operation.SaveServiceHelper;
  11. import kd.sdk.plugin.Plugin;
  12. import nckd.pur.scp.common.DateUtil;
  13. import java.util.*;
  14. import java.util.stream.Collectors;
  15. /**
  16. * 单据操作插件
  17. */
  18. public class SaloutStockOpPlugin extends AbstractOperationServicePlugIn{
  19. @Override
  20. public void afterExecuteOperationTransaction(AfterOperationArgs e) {
  21. super.afterExecuteOperationTransaction(e);
  22. DynamicObject[] entities = e.getDataEntities();
  23. String operationKey = e.getOperationKey();
  24. if("submit".equals(operationKey)){
  25. for (DynamicObject bill : entities) {
  26. String wuliu = bill.getString("nckd_textfield");
  27. String date = DateUtil.date2str(bill.getDate("delidate"),DateUtil.DATE_FORMAT_YYYY_MM_DD);
  28. String content = String.format("已发货,预计到货日期:%s,物流单号:%s",date,wuliu);
  29. //反写至 采购订单 采购申请单
  30. DynamicObjectCollection materialEntry = bill.getDynamicObjectCollection("materialentry");
  31. //采购订单编号
  32. List<String> poBillNo = materialEntry.stream().map(entry -> entry.getString("pobillno")).distinct().collect(Collectors.toList());
  33. //采购订单
  34. DynamicObject purOrder = BusinessDataServiceHelper.loadSingle("pm_purorderbill", new QFilter("billno", QCP.in, poBillNo).toArray());
  35. //采购申请单
  36. Map<String, HashSet<Long>> srcBills = BFTrackerServiceHelper.findSourceBills("pm_purorderbill", new Long[]{purOrder.getLong("id")});
  37. DynamicObject purApply = null;
  38. if(!srcBills.isEmpty()){
  39. if (srcBills.containsKey("pm_purapplybill")) {
  40. ArrayList list = new ArrayList(srcBills.get("pm_purapplybill"));
  41. purApply = BusinessDataServiceHelper.loadSingle(list.get(0),"pm_purapplybill");
  42. purApply.set("nckd_tracking",content);
  43. }
  44. }
  45. purOrder.set("·",content);
  46. if(purApply!=null) {
  47. SaveServiceHelper.save(new DynamicObject[]{purOrder});
  48. SaveServiceHelper.save(new DynamicObject[]{purApply});
  49. }else{
  50. SaveServiceHelper.save(new DynamicObject[]{purOrder});
  51. }
  52. }
  53. }
  54. }
  55. }