• 接口开发知识点整理三


    41.表体编辑后,编辑物料多选,自动带出多行表体

    AceBodyAfterEditHandler类

    1. String key = e.getKey();
    2. if (key.equals("pk_material")) {
    3. nc.ui.czyplan.randomdata.handler.MaterialHandler handler = new nc.ui.czyplan.randomdata.handler.MaterialHandler();
    4. handler.afterEdit(e);
    5. }

    MaterialHandler 类

    1. /**
    2. * 物料的编辑事件处理类
    3. */
    4. public class MaterialHandler {
    5. /**
    6. * 物料的编辑后事件处理
    7. * @param e 编辑后事件
    8. */
    9. public void afterEdit(CardBodyAfterEditEvent event) {
    10. // 物料的多选处理
    11. RefMoreSelectedUtils utils = new RefMoreSelectedUtils(event.getBillCardPanel());
    12. int[] rows = utils.refMoreSelected(event.getRow(), OrderItemVO.PK_MATERIAL, true);
    13. }
    14. /**
    15. * 物料的编辑前事件处理
    16. * @param e 编辑前事件处理
    17. */
    18. public void beforeEdit(CardBodyBeforeEditEvent e) {
    19. BillCardPanel panel = e.getBillCardPanel();
    20. // 设置物料的参照允许多选
    21. UIRefPane refPane = (UIRefPane) panel.getBodyItem(e.getKey()).getComponent();
    22. refPane.setMultiSelectedEnabled(true);
    23. e.setReturnValue(Boolean.TRUE);
    24. }
    25. }

    43.显示错误信息

    1. private void showErrorMessage(String title, String content) {
    2. String newTitle = title;
    3. String newContent = content;
    4. MessageDialog.showErrorDlg(getBillUI(), newTitle, newContent);
    5. }

    44.NC57 页面底下报错信息

    1. import nc.ui.pub.beans.MessageDialog;
    2. /**
    3. *

      作用:

      执行 按钮的处理方法
    4. * @throws BusinessException
    5. */
    6. private void execute() throws BusinessException {
    7. UFDateTime beginTs = new UFDateTime(System.currentTimeMillis());
    8. UFDateTime endTs = null;
    9. StringBuffer sb = new StringBuffer();
    10. int type = 0;
    11. ITaskMaintain taskbtn = NCLocator.getInstance().lookup(ITaskMaintain.class);
    12. int[] rows = getBillCardPanelWrapper().getBillCardPanel().getBillTable().getSelectedRows();
    13. if(rows.length > 1){//选中行大于一行时,报错
    14. ExceptionUtils.wrappBusinessException("只能选中一行数据!");
    15. return;
    16. }else{
    17. TaskVO selectVo = (TaskVO)getBillCardPanelWrapper().getBillCardPanel().getBodyPanel().getTableModel().getBodyValueRowVO(rows[0],TaskVO.class.getName());
    18. StringBuffer result2 = this.checkTaskVO(selectVo);
    19. if(result2 !=null && result2.length()>0){
    20. MessageDialog.showHintDlg(null, "提示", result2.toString());
    21. return;
    22. }else{
    23. taskbtn.ExecuteTaskorNotExecuteTask(selectVo,type,_getOperator(),sb);
    24. if(sb !=null && sb.length()>0){
    25. // throw new BusinessException(sb.toString());
    26. this.showErrorMessage("执行失败",sb.toString());
    27. return;
    28. }else{
    29. endTs = new UFDateTime(System.currentTimeMillis());
    30. StringBuilder newMsg = new StringBuilder();
    31. newMsg.append("开始时间:");
    32. newMsg.append(beginTs.toString());
    33. newMsg.append("结束时间:");
    34. newMsg.append(endTs.toString());
    35. getBillUI().showHintMessage("执行成功!" + newMsg.toString());
    36. MessageDialog.showHintDlg(this.getBillUI(),"提示","【执行】操作成功!");
    37. }
    38. }
    39. }
    40. }

    45.获取程序运行了多长时间

    1. long starttime = System.currentTimeMillis();
    2. long endtime = System.currentTimeMillis();
    3. System.out.println("新增【物料消耗其他厂消耗汇总】完成,耗时:"+ (endtime - starttime) / 1000 + "秒,操作结束时间 :"+new UFDateTime() );

    46.NC57获取当前时间

    new UFDateTime(System.currentTimeMillis());

    47.查询方法

    1. IUAPQueryBS iq = NCLocator.getInstance().lookup(IUAPQueryBS.class);// 查
    2. String sql = "select user_name,cuserid from sm_user where "
    3. RefPubUtil.getInSubSql("user_name", creatorList.toArray(new String[0]));
    4. List list = (List) iq.executeQuery(sql,new ArrayListProcessor());
    5. for(Object[] s : list){
    6. creatorMap.put(ValueUtils.getInstance().getString(s[0]), ValueUtils.getInstance().getString(s[1]));
    7. }

    48.调用转换规则

    1. PurchaseInaggvo 上游aggvo 上游单据类型 45
    2. MaterialOutVO 下游aggvo 下游单据类型 4D
    3. import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil;
    4. MaterialOutVO[] MaterialOutVOaggvo = PfServiceScmUtil.executeVOChange("45", "4D",new AggregatedValueObject[]{PurchaseInaggvo});

    49.设置单据类型的SQL(不懂)

    为了配置【单据转换规则】

    UPDATE bd_billtype SET bd_billtype.forwardbilltype='4K,5X,55AC,4D,55A2,4455,55C2,55B4,422X' WHERE pk_billtypecode='55A3';

    -- 下游单据类型表

    insert into bd_fwdbilltype (DR, ISBIZFLOWBILL, ISCROSSGRP, PK_BACKBILLTYPE, PK_BILLTYPE, PK_BILLTYPEID, PK_FWDBILLTYPE, TS) values (0, 'N', 'Y', '55A3', '422X', '55A3', '1001ZA1000000001P664', '2020-03-24 19:36:13');

    --查询执行结果

    1. SELECT * FROM bd_billtype WHERE pk_billtypecode='55A3';
    2. SELECT * FROM bd_fwdbilltype WHERE pk_billtypeid='55A3' ;

    50.调动作脚本

    //流程平台动作处理 服务接口

    1. IPFBusiAction ifbaction = null;
    2. private IPFBusiAction getIPFBsiAction(){
    3. if(ifbaction == null){
    4. ifbaction = NCLocator.getInstance().lookup(IPFBusiAction.class);
    5. }
    6. return ifbaction;
    7. }
    8. SapplyBillVO[] obj= (SapplyBillVO[]) getIPFBsiAction().processAction("WRITE", "4455", null, destBill, null, null);
    9. //55A3 上游 422X 下游
    10. StoreReqAppVO[] reqAppaggvo = PfServiceScmUtil.executeVOChange("55A3", "422X",new AggregatedValueObject[]{aggvo});

    51.创建临时表

    1. public UFBoolean[] isCreateSubOrder(String[] sInvProducePKs) throws SQLException {
    2. //zhangjing 2012-10-08 注销下面内容 ,重新编写。
    3. //原因:由于数据有可能会很多,故要分批执行。
    4. //创建临时表
    5. ArrayList> pr_value = new ArrayList>();
    6. for (int i = 0; i < sInvProducePKs.length; i++) {
    7. ArrayList pr_row = new ArrayList();
    8. pr_row.add(sInvProducePKs[i]);
    9. pr_value.add(pr_row);
    10. }
    11. String[] columns = new String[] { "pk_produce" };
    12. String[] types = new String[] { "char(20)" };
    13. String sTableName = null;
    14. try {
    15. nc.bs.scm.pub.TempTableDMO tmpTable = new nc.bs.scm.pub.TempTableDMO();
    16. sTableName = tmpTable.getTempStringTable("pc_bfriend_produce", columns, types, null, pr_value);
    17. } catch (Exception e) {
    18. throw new SQLException("创建临时表失败!");
    19. }
    20. if (sTableName == null) {
    21. throw new SQLException("创建临时表失败!");
    22. }
    23. Map map = new HashMap();
    24. BaseDAO dao = new BaseDAO();
    25. String sql = "select a.pk_produce, a.virtualflag, a.iscreatesonprodorder from bd_produce a ,"+ sTableName +" b where a.pk_produce = b.pk_produce and isnull(a.dr,0)=0 ";
    26. try {
    27. ArrayList list = (ArrayList) dao.executeQuery(sql, new ArrayListProcessor());
    28. if(list !=null && list.size()>0){
    29. for(int i=0;i
    30. Object[] obj = (Object[]) list.get(i);
    31. String invpk, virtualFlag, createFlag;
    32. invpk = BFPubTool.getString_TrimAsNull(obj[0]);
    33. virtualFlag = BFPubTool.getString_TrimAsNull(obj[1]);
    34. createFlag = BFPubTool.getString_TrimAsNull(obj[2]);
    35. map.put(invpk, new UFBoolean(createFlag != null && new UFBoolean(createFlag).booleanValue()));
    36. }
    37. }
    38. } catch (DAOException e) {
    39. throw new SQLException("查询bd_produce 错误");
    40. }
    41. //zhangjing end
    42. UFBoolean[] retFlags = new UFBoolean[sInvProducePKs.length];
    43. for (int i = 0; i < sInvProducePKs.length; i++) {
    44. retFlags[i] = map.containsKey(sInvProducePKs[i]) ? (UFBoolean) map.get(sInvProducePKs[i]) : new UFBoolean(false);
    45. }
    46. return retFlags;
    47. }

    52.表体集合塞aggvo

    1. PickmItemVO[] bvos = bvoList.toArray(new PickmItemVO[bvoList.size()]);
    2. aggvo.setChildrenVO(bvos);
    3. SapplyBillVO destBill = new SapplyBillVO();
    4. SapplyBillBodyVO destBody = returnBVO(bill);
    5. SapplyBillHeadVO destHead = returnHVO(bill);
    6. destBill.setParentVO(destHead);
    7. destBill.setChildren(SapplyBillBodyVO.class, new SapplyBillBodyVO[]{destBody});

    53.NC65中的MessageDialog弹框

    1. //返回 确认=1 ,取消=2
    2. int yn=MessageDialog.showOkCancelDlg(null, "提示", "");
    3. //返回 是=4 ,否=8
    4. int yesNo=MessageDialog.showYesNoDlg(null, "提示", "");
    5. //输入框
    6. Object value=MessageDialog.showInputDlg(null, "提示", "请输入人员编码","默认值");

    54.插入有pk的数据

    new BaseDAO().insertVOWithPK(PickmItemVO);

    55.单据联查追溯的类

    nc.impl.pubapp.linkquery.MultiSrcBillFinder.getSourceBill

    56.单据界面选中数据,点击按钮,跳转到别的节点

    按钮doAction里面调这个方法

    1. TD02From55A3Bill handler = new TD02From55A3Bill();
    2. handler.process(aggvo, bvos[0]);

    这个类继承GeneralToBill

    这个是基类

    还需要改xml的监听(打开节点的监听,下游的xml)

    1. <bean id="InitDataListener" class="nc.ui.czyplan.pub.listener.FuncNodeInitDataListener">
    2. <property name="model" ref="manageAppModel" />
    3. <property name="context" ref="context">property>
    4. <property name="cardForm" ref="billFormEditor" />
    5. <property name="listView" ref="listView" />
    6. <property name="container" ref="actionsOfList">property>
    7. <property name="voClassName" value="nc.vo.czyplan.czyplan_bpickm.AggCzy_pickm" />
    8. <property name="autoShowUpComponent" ref="billFormEditor" />
    9. bean>

    Czy_pickmBillForm 继承 ShowUpableBillForm 这个类

    nc.ui.pubapp.uif2app.view.ShowUpableBillForm

    57.参照编辑后时间中设置多选后自动增行

    1. if(tableCode.equals("id")){
    2. String key = e.getKey();
    3. if("pk".equals IgnoreCase(key)){
    4. RefMoreSelectedUtils utils = new RefMoreSelectedUtils(e.getBillCardPanel());
    5. utils.refMoreSelected(e.getRow(),key,true)
    6. }
    7. }

    58.nc中限制只能输入数字

    1. if (e.getKey().equals("ifloor")){
    2. String ifloor = (String) e.getBillCardPanel().getHeadItem("ifloor").getValueObject();
    3. Pattern pattern = Pattern.compile("[0-9]*");
    4. Matcher isNum = pattern.matcher(ifloor);
    5. if(!isNum.matches()){
    6. MessageDialog.showErrorDlg(e.getBillCardPanel(), "提示", "楼层只能输入数字!");
    7. e.getBillCardPanel().setHeadItem("ifloor", null);
    8. }
    9. }

    59.NC65复制出没有权限的节点

    原节点:委外订单维护

    复制节点: 委外订单之维护

    自己注册功能注册,挂在摸个节点下面,除了功能编码 和 功能名称 不一样,其他完全一样

    60.持久化API

    JDBC级增删改查实现类:nc.bs.dao.BaseDAO

    JDBC级增删改工具接口:nc.itf.uap.IVOPersistence

    JDBC级查询工具接口:nc.itf.uap.IUAPQueryBS

    聚合VO查询实现类:nc.impl.pubapp.pattern.data.bill.BillQuery

    单据VO级增删改查实现类:nc.impl.uif.pub.UifServiceImp

    单据VO级增删改查接口:nc.itf.uif.pub.IUifService

    单据VO级增删改查接口:nc.itf.uap.pf.IPFBusiAction

    单据VO级增删改查工具类:nc.bs.trade.business.HYPubBO

    单据VO级增删改查工具类:nc.ui.trade.business.HYPubBO_Client

    附件管理接口:nc.bs.pub.filesystem.IFileSystemService

  • 相关阅读:
    大一学生《Web前端网课作业》基于HTML+CSS自我介绍网页设计与制作
    linux中对大的日志文件操作
    ++运算符重载,--运算符重载
    【编程之路】面试必刷TOP101:动态规划(入门)(62-66,Python实现)
    美妆行业如何通过自媒体提升品牌曝光
    Citrix通过Azure Active Directory实现Saml认证单点登录云桌面
    opencv滤波技术
    2304. 网格中的最小路径代价-297地平线周赛回顾
    DM8的列存储HUGE表
    mac 安转zookeeper+kafka
  • 原文地址:https://blog.csdn.net/weixin_47272508/article/details/127883573