背景: v6医药行业 消耗汇总  参照 销售出库单  弹出的查询对话框里的 产品批号  条件原本是参照格式,根据vfree6 自有辅助属性6 linked 得到的 。

客户不满意该处,需要找物料才能进行查询,要求只需要输入一个模糊的 批号的值, 就可以查询该批号的出库单。

修改后代码如下:liljb编辑。

package nc.ui.ic.m50.action;import java.util.ArrayList;
import java.util.List;import nc.bs.framework.common.NCLocator;
import nc.itf.ic.vmirule.IVmiRuleService;
import nc.itf.uap.IUAPQueryBS;
import nc.pubitf.rbac.IFunctionPermissionPubService;
import nc.ui.ic.m50.model.VmiSumModelService;
import nc.ui.ic.m50.query.VmiSumQueryCondProcessor;
import nc.ui.ic.m50.view.ICVmiSumDialog;
import nc.ui.pubapp.uif2app.query2.QueryConditionDLGDelegator;
import nc.ui.pubapp.uif2app.query2.action.DefaultQueryAction;
import nc.ui.pubapp.uif2app.query2.model.ModelDataManager;
import nc.ui.querytemplate.querytree.FromWhereSQL;
import nc.ui.querytemplate.querytree.FromWhereSQLImpl;
import nc.ui.querytemplate.querytree.IQueryScheme;
import nc.ui.scmpub.action.SCMActionInitializer;
import nc.vo.ic.m50.entity.VmiSumGenerateParam;
import nc.vo.ic.m50.entity.VmiSumQueryParam;
import nc.vo.ic.pub.define.ICPubMetaNameConst;
import nc.vo.ic.pub.util.CollectionUtils;
import nc.vo.ic.pub.util.ValueCheckUtil;
import nc.vo.ic.vmirule.entity.VmiRuleHeadVO;
import nc.vo.ic.vmirule.entity.VmiRuleVO;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.AppContext;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.PubAppTool;
import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.pubapp.query2.sql.process.QuerySchemeProcessor;
import nc.vo.scmpub.res.SCMActionCode;/*** 消耗汇总查询Action;此动作查询出库单进行消耗汇总*/
public class VmiSumOutBillAction extends DefaultQueryAction {private static final long serialVersionUID = 2010090423320001L;/*** 显示生成消耗汇总单查询结果的对话框,即显示出库单VO和销售发票VO的对话框*/private ICVmiSumDialog icVmiSumDialog;private VmiSumQueryCondProcessor vmiSumQueryCondProcessor = null;public VmiSumOutBillAction() {SCMActionInitializer.initializeAction(this, SCMActionCode.IC_VMISUMOUTBILL);}public ICVmiSumDialog getIcVmiSumDialog() {if (this.icVmiSumDialog == null) {this.icVmiSumDialog =new ICVmiSumDialog(this.getModel().getContext().getEntranceUI());this.icVmiSumDialog.initQueryDialog(this, this.icVmiSumDialog);}return this.icVmiSumDialog;}public VmiSumGenerateParam getVmiSumGenerateParam() {return this.getCondProcessor().getVmiSumGenerateParam();}public VmiSumQueryParam getVmiSumQueryParam() {return this.getCondProcessor().getVmiSumQueryParam();}public void setIcVmiSumDialog(ICVmiSumDialog dialog) {this.icVmiSumDialog = dialog;}private void constructParams(QueryConditionDLGDelegator delegator) {// 获取Sql串时,不需要生成真正的Sql串,而是生成一个查询条件对象vmiSumQueryParamFromWhereSQL querySQL =delegator.getQueryConditionDLG().getTableJoinFromWhereSQL();String fromPart = querySQL.getFrom();String wherePart = querySQL.getWhere();if (!PubAppTool.isNull(fromPart)) {fromPart = fromPart.replace(" ic_flow", " flow");}if (!PubAppTool.isNull(wherePart)) {wherePart = wherePart.replace("ic_flow.", "flow.");}this.getCondProcessor().fillVmiSumQueryParam(delegator, fromPart, wherePart);this.getCondProcessor().fillVmiSumGenerateParam(delegator);}private VmiSumQueryCondProcessor getCondProcessor() {if (this.vmiSumQueryCondProcessor == null) {this.vmiSumQueryCondProcessor = new VmiSumQueryCondProcessor();}return this.vmiSumQueryCondProcessor;}private String[] getFuncPermissionOrg(OrgVO[] orgVOs) {if (orgVOs == null) {return null;}String[] pk_orgs = new String[orgVOs.length];for (int i = 0; i < pk_orgs.length; i++) {pk_orgs[i] = orgVOs[i].getPk_org();}return pk_orgs;}/*** 权限校验* * @param cvmiruleid*/private void validatePower(String cvmiruleid) {VmiRuleVO[] ruleVO = null;try {SqlBuilder sqlpart = new SqlBuilder();sqlpart.append(VmiRuleHeadVO.TABLE_NAME + "." + VmiRuleHeadVO.CVMIRULEHID,cvmiruleid);ruleVO =NCLocator.getInstance().lookup(IVmiRuleService.class).query(sqlpart.toString());}catch (BusinessException e) {ExceptionUtils.wrappException(e);return;}final String funcode = "40082802";String cuserid = AppContext.getInstance().getPkUser();String pkGroup = AppContext.getInstance().getPkGroup();List<String> orgList = new ArrayList<String>();try {OrgVO[] orgVOs =NCLocator.getInstance().lookup(IFunctionPermissionPubService.class).getUserPermissionOrg(cuserid, funcode, pkGroup);String[] orgs = this.getFuncPermissionOrg(orgVOs);CollectionUtils.addArrayToList(orgList, orgs);}catch (BusinessException e) {ExceptionUtils.wrappException(e);}if (ValueCheckUtil.isNullORZeroLength(ruleVO)) {ExceptionUtils.wrappBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008015_0", "04008015-0011")/*@res "请检查消耗汇总规则是否已经被删除"*/);return;}for (VmiRuleVO rule : ruleVO) {if (!orgList.contains(rule.getParentVO().getAttributeValue(VmiRuleHeadVO.PK_ORG))) {ExceptionUtils.wrappBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008015_0", "04008015-0012")/*@res "当前用户没有汇总规则定义中财务组织的数据权限"*/);return;}}}@Overrideprotected void executeQuery(IQueryScheme queryScheme) {QueryConditionDLGDelegator delegator = this.getQryDLGDelegator();this.constructParams(delegator);// 注:通过参数传过来的sqlWhere没有用,生成消耗汇总单不需要这个参数// 因为// 1. 查询参数已经包装成vmiSumQueryParam,需要传到后台进行复杂的sql逻辑处理// 2. 生成消耗汇总单的参数已经包装成vmiSumGenerateParam,需要传到后台进行消耗汇总VmiSumQueryParam vmiSumQueryParam = this.getVmiSumQueryParam();
//    String sqlold=queryScheme.getTableJoinFromWhereSQL();String old=queryScheme.getTableJoinFromWhereSQL().getWhere().toString(); //liljb addString new1="";//liljb addFromWhereSQLImpl newFrom= (FromWhereSQLImpl) queryScheme.getTableJoinFromWhereSQL();//liljb add//增加下面的if 判断 如果有vfree7 的sql  进行替换处理 liljb if(old.contains("AND ic_flow.vfree7 = '")){old.length();int indexofnext = old.indexOf("AND ic_flow.vfree7 = '");String old2=old.substring(indexofnext+22, old.length());int indexofnext2=old2.indexOf("'");int len=indexofnext+22+indexofnext2;String old3=old.substring(indexofnext, len+1);new1= old.substring(indexofnext+22, indexofnext+22+indexofnext2);System.out.println(new1);String sqlmid="AND ic_flow.vfree6 IN (  SELECT mlot.pk_lotno FROM med_lotno_148  mlot where mlot.vlotno like '%"+new1+"%'  AND nvl(mlot.dr,0)=0 ) ";String old4=  old.replace(old3, sqlmid);newFrom.setWhere(old4);}//return FromWhereSQL 接口queryScheme.getTableJoinFromWhereSQL();
//    vmiSumQueryParam.setFromWhereSQL(queryScheme.getTableJoinFromWhereSQL()); OLD liljb 消耗汇总出库单查询替换vfree6为7vmiSumQueryParam.setFromWhereSQL(newFrom);//liljb  替换上行代码 QuerySchemeProcessor proc = new QuerySchemeProcessor(queryScheme);String[] dbilldate =proc.getQueryCondition(ICPubMetaNameConst.DBILLDATE).getValues();vmiSumQueryParam.setDbilldate(dbilldate);this.validatePower(vmiSumQueryParam.getCvmirulehid());ModelDataManager dataManager = (ModelDataManager) super.getDataManager();VmiSumModelService service =(VmiSumModelService) dataManager.getQryService();try {this.getIcVmiSumDialog().setViewData(service.generateVmiSumQuery(vmiSumQueryParam));this.getIcVmiSumDialog().setVmiSumGenerateParam(this.getVmiSumGenerateParam());this.getIcVmiSumDialog().showModal();}catch (Exception e) {ExceptionUtils.wrappException(e);}}/*** 生成消耗汇总单汇总条件提示信息*/@Overrideprotected void showQueryInfo() {//}}

用友NC63 医药行业 消耗汇总 出库单批次模糊查询相关推荐

  1. 旺店通·企业奇门与用友BIP旺店通销售出库单对接销售订单

    通过集成平台可视化的配置系统集成对接 源系统平台:旺店通·企业奇门 源系统接口: 查询销售出库单wdt.stockout.order.query.trade 目标系统平台: 用友BIP 目标系统接口: ...

  2. 旺店通·企业奇门对接打通用友BIP查询销售出库单接口与销售订单单个保存接口

    旺店通·企业奇门对接打通用友BIP查询销售出库单接口与销售订单单个保存接口 源系统:旺店通·企业奇门 慧策(原旺店通)是一家技术驱动型智能零售服务商,基于云计算PaaS.SaaS模式,以一体化智能零售 ...

  3. 用友T+销售出库单审核之后成本金额会变化

    T+12标准版,已经用入库调整单调整过成本,为什么在销售出库单上的成本没审核前是调整过的,审核后就变成调整前的金额. 是现进先出法,调整的是现库存,出库单日期是在调整之后的,也就是说调整单只能调整到结 ...

  4. 金蝶云星空对接打通旺店通·企业奇门调拨单查询接口与创建其他出库单接口

    数据源平台:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理 ...

  5. 金蝶云星空与奇门WMS-AWMS-委外领料单对接出库单

    源系统平台:金蝶云星空 源系统接口: 委外领料查询executeBillQuery 目标系统平台: 奇门WMS-A 目标系统接口: 出库单创建taobao.qimen.stockout.create ...

  6. 旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通[旺店通][销售出库单标准新增]-v1(旺店通->金蝶销售出库单--零售销售(手工运维))

    对接源平台:旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化智能化管理升级.为零售电商企业的订单 ...

  7. 销售出库单单价为零的故障解决

    用友U8普及版(U852)仓库先进先出计价方式,而销售出库单记账单价为零的故障解决方案. 一.存货核算中,销售出库单正常单据记账时,其单价和金额为零. 1.造成的原因是:库存管理-初始设置-选项-专项 ...

  8. 金蝶云星空对接打通管易云其他出库查询接口与其他出库单新增完结接口v2接口

    金蝶云星空对接打通管易云其他出库查询接口与其他出库单新增完结接口v2接口 接通系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会 ...

  9. 金蝶云星空对接打通旺店通·企业奇门组装拆卸单查询接口与创建其他出库单接口

    源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理:K ...

  10. 旺店通·企业奇门对接打通金蝶云星空查询销售出库单接口与销售出库新增接口

    接入系统:旺店通·企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点--订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取.会员管理.仓库管理等其他重要经营模块.慧策的产品线从旺店通E ...

最新文章

  1. C/C++中extern关键字详解与应用
  2. YUM更换源--yum找不到安装包(转)
  3. CMFCToolBar插入组合框
  4. 前端学习(2269)vue造轮子之添加icon
  5. 软件工程导论课程主页 :12-13-2
  6. Spark 性能相关参数配置详解-Storage篇
  7. 字符串模式匹配(bf+KMP)
  8. 佳能g2810打印机扫描怎么用_佳能Canon PIXMA G2810 驱动
  9. SQL SERVER 数据库通过连接服务器 调用ORACLE 数据库中的存储过程
  10. 史上最全最简洁的网络传输协议介绍
  11. Auto CAD:CAD软件之顶层菜单栏(文件、编辑、视图、插入、格式、绘图、标注、修改、参数、窗口、数据视图)简介之详细攻略
  12. 云服务器无限多开一个软件吗,只需要一个神器就能无限多开微信!
  13. 关于ttime的序列化存储及读取的方法
  14. phyton方面相关书籍
  15. 安装dplyr报错之rlang’ 0.4.5,但需要的是>= 0.4.10
  16. 神武3服务器神武币交易中心,《神武3》电脑版:神武币使用方向攻略,神武币如何花在刀刃上...
  17. Pytorch损失函数解析
  18. Unity发布抖音小游戏:构建与发布
  19. 如何把视频里的音乐提取出来
  20. C#_e.Handled用法

热门文章

  1. 解决被卡巴斯基提示说KEY被列为黑名单
  2. AJAX培训第二讲:使用AJAX框架(下)
  3. 通达信版弘历软件指标_弘历软件指标公式源码
  4. 计算机控制面板程序可以设置鼠标,外设门诊:游戏中如何使用鼠标宏提升操作...
  5. eclipse怎么恢复默认界面
  6. linux 0891端口,凯立德导航专用版本号及分辨率、端口、波特率
  7. Java基础知识面试题(2020最新版)
  8. hypermesh中怎么设置支反力(反作用力)
  9. thinkphp 通过Redis实现增删改查操作
  10. c语言中的memset函数与bzero函数