From 677fb310df36bd4865d56507c6d9266e64fb62a9 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 19 Jan 2026 10:40:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E4=B8=81=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/rebuild/PickmSubItemReBuilid.java | 665 +++++----- .../transfer/PickmSubItemTransferFromBom.java | 41 +- .../bom0202/paramvo/BomItemParamForPickm.java | 1072 +++++++++++++++++ 3 files changed, 1480 insertions(+), 298 deletions(-) create mode 100644 mmpac/src/public/nc/vo/bd/bom/bom0202/paramvo/BomItemParamForPickm.java diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/rule/rebuild/PickmSubItemReBuilid.java b/mmpac/src/private/nc/bs/mmpac/pickm/rule/rebuild/PickmSubItemReBuilid.java index 7c0bc3ba..fa2e67d8 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/rule/rebuild/PickmSubItemReBuilid.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/rule/rebuild/PickmSubItemReBuilid.java @@ -1,13 +1,7 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - package nc.bs.mmpac.pickm.rule.rebuild; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -18,6 +12,7 @@ import nc.bs.mmpac.pickm.rule.subitems.PickmSubItemBuilderControler; import nc.itf.mmpac.pickm.IPickmQueryService; import nc.jdbc.framework.generator.SequenceGenerator; import nc.mmpac.pacpub.utils.PACMDKeyUtil; +import nc.pubitf.para.SysInitQuery; import nc.util.mmf.framework.base.MMArrayUtil; import nc.util.mmf.framework.base.MMMapUtil; import nc.util.mmf.framework.base.MMNumberUtil; @@ -27,467 +22,597 @@ import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.mmpac.pickm.enumeration.FreplaceinfoEnum; import nc.vo.pub.BusinessException; +import nc.vo.pub.VOStatus; import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.pub.MapList; import nc.vo.pubapp.util.VORowNoUtils; +/** + * 备料重算算法 + * + * @since 6.31 + * @version 2013-7-17 下午01:38:36 + * @author baijl + */ public class PickmSubItemReBuilid { - private static final String[] updateAttributes = new String[]{"fitemtype", "fitemsource", "cbunitid", "cbastunitid", "vbchangerate", "drequiredate", "bcontroll", "nquotnum", "nquotastnum", "vpmoprocessno", "vdmoprocessno", "vprocesscode", "cwkid", "cfeedid", "cdeliverorgid", "cdeliverorgvid", "coutstockid", "csupplyorgid", "csupplyorgvid", "cinstockid", "pk_batchcode", "vbatchcode", "cstockmanid", "nplanoutnum", "nplanoutastnum", "bcandeliver", "bcanreplace", "pk_realsubs", "freplacetype", "nreplaceorder", "vreplacequotiety", "creplacesrcid", "creplacescheme", "vgroupratio", "bgroupkey", "vreplacegroup", "cgroupkeyrowid", "freplaceinfo", "fbackflushtype", "fbackflushtime", "fsupplytype", "vbmatchcode", "bmainmaterial", "bkitmaterial", "bcustomermaterial", "bprojectmaterial", "bupwardround", "nunitnum", "nunitastnum", "bautobuilt", "cbombid", "crtopacid", "vbbomversion", "vbbomversionnumber", "vbpbomversion", "vbpbomversionnumber", "nunituseastnum", "nunitusenum", "clocationid", "ctplcustomerid", "cvmivenderid", "ndissipationum", "nwithdissipationum", "nwithdissipatioastnum", "nnormaloutnum", "vbackflushtype", "boverissue", "bunibatch", "nfixshrinknum", "nfixshrinkastnum", "bchkitemforwr"}; + // 需要同步的字段 + private static final String[] updateAttributes = new String[] { + // 子项类型,备料来源,主单位,单位 + PickmItemVO.FITEMTYPE, PickmItemVO.FITEMSOURCE, PickmItemVO.CBUNITID, PickmItemVO.CBASTUNITID, + // 换算率,需用日期,控制,主定额用量 + PickmItemVO.VBCHANGERATE, PickmItemVO.DREQUIREDATE, PickmItemVO.BCONTROLL, PickmItemVO.NQUOTNUM, + // 定额用量,流程需用工序,离散需用工序,工序类型编码,工作中心 + PickmItemVO.NQUOTASTNUM, PickmItemVO.VPMOPROCESSNO, PickmItemVO.VDMOPROCESSNO, PickmItemVO.VPROCESSCODE, + PickmItemVO.CWKID, + // 投料点,发料组织VID,发料组织oid,发料仓库 + PickmItemVO.CFEEDID, PickmItemVO.CDELIVERORGID, PickmItemVO.CDELIVERORGVID, PickmItemVO.COUTSTOCKID, + // 供应组织oid,供应组织vid,供应仓库 + PickmItemVO.CSUPPLYORGID, PickmItemVO.CSUPPLYORGVID, PickmItemVO.CINSTOCKID, + // 库存批次id,库存批次号,库管员 + PickmItemVO.PK_BATCHCODE, PickmItemVO.VBATCHCODE, PickmItemVO.CSTOCKMANID, + // 计划出库主数量,计划出库数量,发料,可替代 + PickmItemVO.NPLANOUTNUM, PickmItemVO.NPLANOUTASTNUM, PickmItemVO.BCANDELIVER, PickmItemVO.BCANREPLACE, + // 实际替代关系,替代类型,替代顺序,替代系数 + PickmItemVO.PK_REALSUBS, PickmItemVO.FREPLACETYPE, PickmItemVO.NREPLACEORDER, PickmItemVO.VREPLACEQUOTIETY, + PickmItemVO.CREPLACESRCID, + // 组合替代相关信息:替代方案,替代系数,替代组号,关键料,关键料行 + PickmItemVO.CREPLACESCHEME, PickmItemVO.VGROUPRATIO, PickmItemVO.BGROUPKEY, PickmItemVO.VREPLACEGROUP, + PickmItemVO.CGROUPKEYROWID, + // 替代信息,倒冲方式,倒冲实际,供应方式 + PickmItemVO.FREPLACEINFO, PickmItemVO.FBACKFLUSHTYPE, PickmItemVO.FBACKFLUSHTIME, PickmItemVO.FSUPPLYTYPE, + // 配套组号,主要材料,齐料,客户专用料 + PickmItemVO.VBMATCHCODE, PickmItemVO.BMAINMATERIAL, PickmItemVO.BKITMATERIAL, PickmItemVO.BCUSTOMERMATERIAL, + // 项目专用料,向上取整,主单位定额,单位定额 + PickmItemVO.BPROJECTMATERIAL, PickmItemVO.BUPWARDROUND, PickmItemVO.NUNITNUM, PickmItemVO.NUNITASTNUM, + // 系统生成,BOM明细,工艺路线,生成BOM版本 + PickmItemVO.BAUTOBUILT, PickmItemVO.CBOMBID, PickmItemVO.CRTOPACID, PickmItemVO.VBBOMVERSION, + // 生成BOM版本号,包装BOM版本,包装BOM版本号 + PickmItemVO.VBBOMVERSIONNUMBER, PickmItemVO.VBPBOMVERSION, PickmItemVO.VBPBOMVERSIONNUMBER, + // 单位用量,单位主用量,货位,货主客户 + PickmItemVO.NUNITUSEASTNUM, PickmItemVO.NUNITUSENUM, PickmItemVO.CLOCATIONID, PickmItemVO.CTPLCUSTOMERID, + // 寄存供应商,损耗系数,含损耗主数量 + PickmItemVO.CVMIVENDERID, PickmItemVO.NDISSIPATIONUM, PickmItemVO.NWITHDISSIPATIONUM, + // 含损耗数量,限额标记数量,倒冲类型 + PickmItemVO.NWITHDISSIPATIOASTNUM, PickmItemVO.NNORMALOUTNUM, PickmItemVO.VBACKFLUSHTYPE, + // 超额领料,不允许混批,固定损耗主数量,固定损耗数量 + PickmItemVO.BOVERISSUE, PickmItemVO.BUNIBATCH, PickmItemVO.NFIXSHRINKNUM, PickmItemVO.NFIXSHRINKASTNUM, + // 完工齐套检查 + PickmItemVO.BCHKITEMFORWR, "vbdef1", "vbdef2", "vbdef3", "vbdef4", "vbdef5", "vbdef6", "vbdef7", "vbdef8", + "vbdef9", "vbdef10", "vbdef11", "vbdef12", "vbdef13", "vbdef14", "vbdef15", "vbdef16", "vbdef17", "vbdef18", + "vbdef19", "vbdef20", "vbnote", "vbdef45","vbdef46","vbdef47","vbdef48","vbdef49","vbdef50","vbdef51","vbdef52" };// 2025年12月23日15点40分--添加图号+版本号 vbdef45 + + // 是否生产订单触发 private boolean isFromMO; - private Map preAggVOMap = new HashMap(); + + /** + * 存放旧备料计划聚合VO,key为备料计划主键 + */ + private Map preAggVOMap = new HashMap(); public PickmSubItemReBuilid(boolean isMo) { this.isFromMO = isMo; } public void reBuilder(AggPickmVO[] vos) throws BusinessException { - if (!MMValueCheck.isEmpty(vos)) { - Map realSubNumMap = new HashMap(); - if (this.isFromMO) { - for(AggPickmVO vo : vos) { - PickmItemVO[] itemVOs = (PickmItemVO[])vo.getChildren(PickmItemVO.class); - if (!MMArrayUtil.isEmpty(itemVOs)) { - for(PickmItemVO itemVO : itemVOs) { - if (!MMValueCheck.isEmpty(itemVO.getPk_realsubs())) { - if (!MMValueCheck.isEmpty(realSubNumMap) && realSubNumMap.containsKey(itemVO.getPk_realsubs())) { - realSubNumMap.put(itemVO.getPk_realsubs(), MMNumberUtil.add(new UFDouble[]{(UFDouble)realSubNumMap.get(itemVO.getPk_realsubs()), itemVO.getNplanoutnum()})); - } else { - realSubNumMap.put(itemVO.getPk_realsubs(), itemVO.getNplanoutnum()); - } + if (MMValueCheck.isEmpty(vos)) { + return; + } + // 删除实际替代关系 + // PickmRewritePLORealSub.DeletePLORealSub(vos); + Map realSubNumMap = new HashMap(); + // 后端或生产订单按钮触发 + if (this.isFromMO) { + for (AggPickmVO vo : vos) { + PickmItemVO[] itemVOs = (PickmItemVO[]) vo.getChildren(PickmItemVO.class); + if (MMArrayUtil.isEmpty(itemVOs)) { + continue; + } + for (PickmItemVO itemVO : itemVOs) { + if (!MMValueCheck.isEmpty(itemVO.getPk_realsubs())) { + if (MMValueCheck.isEmpty(realSubNumMap) + || !realSubNumMap.containsKey(itemVO.getPk_realsubs())) { + realSubNumMap.put(itemVO.getPk_realsubs(), itemVO.getNplanoutnum()); + } else { + realSubNumMap.put(itemVO.getPk_realsubs(), MMNumberUtil + .add(realSubNumMap.get(itemVO.getPk_realsubs()), itemVO.getNplanoutnum())); + } + } + } + } + } + // 前端触发 + else { + List hids = new ArrayList(); + for (AggPickmVO vo : vos) { + if (MMValueCheck.isNotEmpty(vo.getParentVO().getCpickmid())) { + hids.add(vo.getParentVO().getCpickmid()); + } + } + if (MMValueCheck.isNotEmpty(hids)) { + PickmQueryItemsByPKsBP query = new PickmQueryItemsByPKsBP(); + PickmItemVO[] itemVOs = query.queryItemsByHeadPks(hids.toArray(new String[0])); + if (MMValueCheck.isNotEmpty(itemVOs)) { + for (PickmItemVO itemVO : itemVOs) { + if (!MMValueCheck.isEmpty(itemVO.getPk_realsubs())) { + if (MMValueCheck.isEmpty(realSubNumMap) + || !realSubNumMap.containsKey(itemVO.getPk_realsubs())) { + realSubNumMap.put(itemVO.getPk_realsubs(), itemVO.getNplanoutnum()); + } else { + realSubNumMap.put(itemVO.getPk_realsubs(), MMNumberUtil + .add(realSubNumMap.get(itemVO.getPk_realsubs()), itemVO.getNplanoutnum())); } } } } + } + } + IPickmQueryService service= ((IPickmQueryService) NCLocator.getInstance() + .lookup(IPickmQueryService.class)); + // 缓存备料计划旧VO + this.createPreAggMap(vos); + // 调用生成子项算法,生成新的备料计划表体(生产和全程委外) + List newBuildVOs = new ArrayList(); + // 生成的,全新备料计划表体(工序委外) + List newPSCVOs = new ArrayList(); + for (AggPickmVO aggvo : vos) { + if ("55E3".equals(aggvo.getParentVO().getVsourcebilltype())) { + AggPickmVO newAggVO = new AggPickmVO(); + newAggVO.setParentVO(aggvo.getParentVO()); + newPSCVOs.add(newAggVO); } else { - List hids = new ArrayList(); - - for(AggPickmVO vo : vos) { - if (MMValueCheck.isNotEmpty(vo.getParentVO().getCpickmid())) { - hids.add(vo.getParentVO().getCpickmid()); - } - } - - if (MMValueCheck.isNotEmpty(hids)) { - PickmQueryItemsByPKsBP query = new PickmQueryItemsByPKsBP(); - PickmItemVO[] itemVOs = query.queryItemsByHeadPks((String[])hids.toArray(new String[0])); - if (MMValueCheck.isNotEmpty(itemVOs)) { - for(PickmItemVO itemVO : itemVOs) { - if (!MMValueCheck.isEmpty(itemVO.getPk_realsubs())) { - if (!MMValueCheck.isEmpty(realSubNumMap) && realSubNumMap.containsKey(itemVO.getPk_realsubs())) { - realSubNumMap.put(itemVO.getPk_realsubs(), MMNumberUtil.add(new UFDouble[]{(UFDouble)realSubNumMap.get(itemVO.getPk_realsubs()), itemVO.getNplanoutnum()})); - } else { - realSubNumMap.put(itemVO.getPk_realsubs(), itemVO.getNplanoutnum()); - } - } - } + newBuildVOs.add((AggPickmVO) aggvo.clone()); + } + AggPickmVO aggPickmVO = service.querySingleBillByPk(aggvo.getParentVO().getCpickmid()); + PickmItemVO[] pickmItemVOs = (PickmItemVO[])aggPickmVO.getChildrenVO(); + for (PickmItemVO pickmItemVO : pickmItemVOs) { + for (PickmItemVO aggPickmVO1 :(PickmItemVO[]) aggvo.getChildrenVO()) { + if(aggPickmVO1.getCpickm_bid().equals(pickmItemVO.getCpickm_bid())) { + aggPickmVO1.setVbdef16(pickmItemVO.getVbdef16()); } } } - - IPickmQueryService service= ((IPickmQueryService) NCLocator.getInstance() - .lookup(IPickmQueryService.class)); - - - this.createPreAggMap(vos); - List newBuildVOs = new ArrayList(); - List newPSCVOs = new ArrayList(); - - for(AggPickmVO aggvo : vos) { - if ("55E3".equals(aggvo.getParentVO().getVsourcebilltype())) { - AggPickmVO newAggVO = new AggPickmVO(); - newAggVO.setParentVO(aggvo.getParentVO()); - newPSCVOs.add(newAggVO); - } else { - newBuildVOs.add((AggPickmVO)aggvo.clone()); - } - AggPickmVO aggPickmVO = service.querySingleBillByPk(aggvo.getParentVO().getCpickmid()); - PickmItemVO[] pickmItemVOs = (PickmItemVO[])aggPickmVO.getChildrenVO(); - for (PickmItemVO pickmItemVO : pickmItemVOs) { - for (PickmItemVO aggPickmVO1 :(PickmItemVO[]) aggvo.getChildrenVO()) { - if(aggPickmVO1.getCpickm_bid().equals(pickmItemVO.getCpickm_bid())) { - aggPickmVO1.setVbdef16(pickmItemVO.getVbdef16()); - } - } - } + } + if (!MMValueCheck.isEmpty(newPSCVOs)) { + // 工序委外 + PSCPickmSubItemBuilderControler subPSItemBuilder = new PSCPickmSubItemBuilderControler(); + AggPickmVO[] aggvos = subPSItemBuilder.process(newPSCVOs.toArray(new AggPickmVO[0]), UFBoolean.TRUE); + // 进行匹配重算算法 + for (AggPickmVO aggvo : aggvos) { + AggPickmVO preaggvo = this.preAggVOMap.get(aggvo.getPrimaryKey()); + this.matchItem(preaggvo, aggvo); } - if (!MMValueCheck.isEmpty(newPSCVOs)) { - PSCPickmSubItemBuilderControler subPSItemBuilder = new PSCPickmSubItemBuilderControler(); - AggPickmVO[] aggvos = subPSItemBuilder.process((AggPickmVO[])newPSCVOs.toArray(new AggPickmVO[0]), UFBoolean.TRUE); - - for(AggPickmVO aggvo : aggvos) { - AggPickmVO preaggvo = (AggPickmVO)this.preAggVOMap.get(aggvo.getPrimaryKey()); + } + if (!MMValueCheck.isEmpty(newBuildVOs)) { + // 生产和全程委外 + PickmSubItemBuilderControler subItemBuilder = new PickmSubItemBuilderControler(); + if (MMValueCheck.isNotEmpty(realSubNumMap)) { + subItemBuilder.setRealSubNum(realSubNumMap); + } + AggPickmVO[] aggvos = subItemBuilder.process(newBuildVOs.toArray(new AggPickmVO[0]), this.isFromMO); + // 进行匹配重算算法 + if (MMValueCheck.isNotEmpty(aggvos)) { + for (AggPickmVO aggvo : aggvos) { + AggPickmVO preaggvo = this.preAggVOMap.get(aggvo.getPrimaryKey()); this.matchItem(preaggvo, aggvo); } } - - if (!MMValueCheck.isEmpty(newBuildVOs)) { - PickmSubItemBuilderControler subItemBuilder = new PickmSubItemBuilderControler(); - if (MMValueCheck.isNotEmpty(realSubNumMap)) { - subItemBuilder.setRealSubNum(realSubNumMap); - } - - AggPickmVO[] aggvos = subItemBuilder.process((AggPickmVO[])newBuildVOs.toArray(new AggPickmVO[0]), this.isFromMO); - if (MMValueCheck.isNotEmpty(aggvos)) { - for(AggPickmVO aggvo : aggvos) { - AggPickmVO preaggvo = (AggPickmVO)this.preAggVOMap.get(aggvo.getPrimaryKey()); - this.matchItem(preaggvo, aggvo); - String k ="10"; - } - } - } - } + } + + /** + * 备料计划匹配算法 + * + * @param preaggvo 旧备料计划聚合VO + * @param newaggvo 新备料计划聚合VO + */ private void matchItem(AggPickmVO preaggvo, AggPickmVO newaggvo) { Map preItemMap = this.getItemMap(preaggvo); MapList newItemMap = this.getMD5ItemMap(newaggvo); List userBuiltItemIDs = this.getUserBuiltItemIDs(preaggvo); + // 如果旧表体为空, 则新生成的所有子项都是新增 if (MMValueCheck.isEmpty(preaggvo.getChildren(PickmItemVO.class))) { - if (!MMValueCheck.isEmpty(newaggvo.getChildren(PickmItemVO.class))) { - preaggvo.setChildrenVO(this.getNewItems(preaggvo.getParentVO().getCpickmid(), (PickmItemVO[])newaggvo.getChildrenVO())); + if (MMValueCheck.isEmpty(newaggvo.getChildren(PickmItemVO.class))) { + return; } - } else { - PickmItemVO[] preItems = (PickmItemVO[])preaggvo.getChildren(PickmItemVO.class); - Map idMap = new HashMap(); - Map noIdMap = new HashMap(); + preaggvo.setChildrenVO( + this.getNewItems(preaggvo.getParentVO().getCpickmid(), (PickmItemVO[]) newaggvo.getChildrenVO())); + return; + } + PickmItemVO[] preItems = (PickmItemVO[]) preaggvo.getChildren(PickmItemVO.class); + Map idMap = new HashMap(); + Map noIdMap = new HashMap(); + for (PickmItemVO item : preItems) { + // 自制表体,维持原状,不考虑 + if (!MMValueCheck.isTrue(item.getBautobuilt())) { + // 非替代料 + if (MMValueCheck.isEmpty(item.getCreplacesrcid())) { + continue; + } + // 自制表体的替代行 + if (MMValueCheck.isNotEmpty(userBuiltItemIDs) && userBuiltItemIDs.contains(item.getCreplacesrcid())) { + continue; + } + // 非自制表体的替代行 + this.setDeleteItemValue(item); + continue; - for(PickmItemVO item : preItems) { - if (!MMValueCheck.isTrue(item.getBautobuilt())) { - if (!MMValueCheck.isEmpty(item.getCreplacesrcid()) && (!MMValueCheck.isNotEmpty(userBuiltItemIDs) || !userBuiltItemIDs.contains(item.getCreplacesrcid()))) { - this.setDeleteItemValue(item); - } - } else { - String key = this.getMatchKey(item); - if (!MMMapUtil.isEmpty(newItemMap) && newItemMap.containsKey(key)) { - if (newItemMap.containsKey(key)) { - List newItems = newItemMap.get(key); - Iterator var15 = newItems.iterator(); - if (var15.hasNext()) { - PickmItemVO newItem = (PickmItemVO)var15.next(); - if (MMValueCheck.isNotEmpty(newItem.getCpickm_bid())) { - if (MMValueCheck.isNotEmpty(item.getCpickm_bid())) { - idMap.put(newItem.getCpickm_bid(), item.getCpickm_bid()); - } else { - item.setCpickm_bid(newItem.getCpickm_bid()); - } - } - - if (FreplaceinfoEnum.REPLACED.equalsValue(newItem.getFreplaceinfo()) && MMValueCheck.isEmpty(newItem.getCgroupkeyrowid())) { - if (MMValueCheck.isEmpty(item.getCpickm_bid())) { - item.setCpickm_bid(newItem.getCpickm_bid()); - } - - noIdMap.put(newItem.getVrowno(), item.getCpickm_bid()); - } - - if (MMValueCheck.isNotEmpty(newItem.getCreplacesrcid()) && MMValueCheck.isTrue(newItem.getBgroupkey())) { - if (MMValueCheck.isEmpty(item.getCpickm_bid())) { - item.setCpickm_bid(newItem.getCpickm_bid()); - } - - noIdMap.put(newItem.getCreplacesrcid() + newItem.getVreplacegroup(), item.getCpickm_bid()); - } - - this.updatePreItem(item, newItem); - newItemMap.get(key).remove(newItem); - } - - if (MMValueCheck.isEmpty(newItemMap.get(key))) { - newItemMap.remove(key); - } + } + String key = this.getMatchKey(item); + // 只在旧行存在,新行不存在 + if (MMMapUtil.isEmpty(newItemMap) || !newItemMap.containsKey(key)) { + this.setDeleteItemValue(item); + // 只在旧表体存在的替代料行 + this.setReplItemValue(item, preItemMap); + continue; + } + // 新旧行都存在 + if (newItemMap.containsKey(key)) { + List newItems = newItemMap.get(key); + for (PickmItemVO newItem : newItems) { + if (MMValueCheck.isNotEmpty(newItem.getCpickm_bid())) { + if (MMValueCheck.isNotEmpty(item.getCpickm_bid())) { + idMap.put(newItem.getCpickm_bid(), item.getCpickm_bid()); + } else { + item.setCpickm_bid(newItem.getCpickm_bid()); } + } + if (FreplaceinfoEnum.REPLACED.equalsValue(newItem.getFreplaceinfo()) + && MMValueCheck.isEmpty(newItem.getCgroupkeyrowid())) { + if (MMValueCheck.isEmpty(item.getCpickm_bid())) { + item.setCpickm_bid(newItem.getCpickm_bid()); + } + noIdMap.put(newItem.getVrowno(), item.getCpickm_bid()); + } + if (MMValueCheck.isNotEmpty(newItem.getCreplacesrcid()) + && MMValueCheck.isTrue(newItem.getBgroupkey())) { + if (MMValueCheck.isEmpty(item.getCpickm_bid())) { + item.setCpickm_bid(newItem.getCpickm_bid()); + } + noIdMap.put(newItem.getCreplacesrcid() + newItem.getVreplacegroup(), item.getCpickm_bid()); + } + + this.updatePreItem(item, newItem); + newItemMap.get(key).remove(newItem); + break; + } + if (MMValueCheck.isEmpty(newItemMap.get(key))) { + newItemMap.remove(key); + } + } + } + // 对新行有,旧行没有的数据,要添加到旧行中,并添加序号 + if (MMValueCheck.isNotEmpty(newItemMap)) { + PickmItemVO[] items = preItems; + for (String key : newItemMap.keySet()) { + items = this.addNewItem(items, newItemMap.get(key).toArray(new PickmItemVO[0]), noIdMap); + } + preaggvo.setChildrenVO(items); + } + if (MMValueCheck.isEmpty(preaggvo.getChildrenVO())) { + return; + } + Map idNoMap = new HashMap(); + for (PickmItemVO item : (PickmItemVO[]) preaggvo.getChildrenVO()) { + if (MMValueCheck.isNotEmpty(item.getCpickm_bid())) { + idNoMap.put(item.getCpickm_bid(), item.getVrowno()); + } + } + for (PickmItemVO item : (PickmItemVO[]) preaggvo.getChildrenVO()) { + if (MMValueCheck.isNotEmpty(item.getCgroupkeyrowid())) { + if (MMValueCheck.isNotEmpty(idMap) && idMap.containsKey(item.getCgroupkeyrowid())) { + item.setCgroupkeyrowid(idMap.get(item.getCgroupkeyrowid())); + } else if (MMValueCheck.isNotEmpty(noIdMap) && noIdMap.containsKey(item.getCgroupkeyrowid())) { + item.setCgroupkeyrowid(noIdMap.get(item.getCgroupkeyrowid())); + } + } + if (MMValueCheck.isNotEmpty(item.getCreplacesrcid())) { + if (MMValueCheck.isNotEmpty(idMap) && idMap.containsKey(item.getCreplacesrcid())) { + item.setCreplacesrcid(idMap.get(item.getCreplacesrcid())); + } else if (MMValueCheck.isNotEmpty(noIdMap) && noIdMap.containsKey(item.getCreplacesrcid())) { + item.setCreplacesrcid(noIdMap.get(item.getCreplacesrcid())); + } + if (idNoMap.containsKey(item.getCreplacesrcid())) { + if (MMValueCheck.isEmpty(item.getVreplacegroup())) { + item.setVbnote(PickmLangConsts + .getReplace_ISEQNUMBER(new String[] { idNoMap.get(item.getCreplacesrcid()) })); } else { - this.setDeleteItemValue(item); - this.setReplItemValue(item, preItemMap); + item.setVbnote(PickmLangConsts.getRepBodyNote_Group_Msg(idNoMap.get(item.getCreplacesrcid()))); } } } - if (MMValueCheck.isNotEmpty(newItemMap)) { - PickmItemVO[] items = preItems; - - for(String key : newItemMap.keySet()) { - items = this.addNewItem(items, (PickmItemVO[])newItemMap.get(key).toArray(new PickmItemVO[0]), noIdMap); - } - - preaggvo.setChildrenVO(items); - } - - if (!MMValueCheck.isEmpty(preaggvo.getChildrenVO())) { - Map idNoMap = new HashMap(); - - for(PickmItemVO item : (PickmItemVO[])preaggvo.getChildrenVO()) { - if (MMValueCheck.isNotEmpty(item.getCpickm_bid())) { - idNoMap.put(item.getCpickm_bid(), item.getVrowno()); - } - } - - for(PickmItemVO item : (PickmItemVO[])preaggvo.getChildrenVO()) { - if (MMValueCheck.isNotEmpty(item.getCgroupkeyrowid())) { - if (MMValueCheck.isNotEmpty(idMap) && idMap.containsKey(item.getCgroupkeyrowid())) { - item.setCgroupkeyrowid((String)idMap.get(item.getCgroupkeyrowid())); - } else if (MMValueCheck.isNotEmpty(noIdMap) && noIdMap.containsKey(item.getCgroupkeyrowid())) { - item.setCgroupkeyrowid((String)noIdMap.get(item.getCgroupkeyrowid())); - } - } - - if (MMValueCheck.isNotEmpty(item.getCreplacesrcid())) { - if (MMValueCheck.isNotEmpty(idMap) && idMap.containsKey(item.getCreplacesrcid())) { - item.setCreplacesrcid((String)idMap.get(item.getCreplacesrcid())); - } else if (MMValueCheck.isNotEmpty(noIdMap) && noIdMap.containsKey(item.getCreplacesrcid())) { - item.setCreplacesrcid((String)noIdMap.get(item.getCreplacesrcid())); - } - - if (idNoMap.containsKey(item.getCreplacesrcid())) { - if (MMValueCheck.isEmpty(item.getVreplacegroup())) { - item.setVbnote(PickmLangConsts.getReplace_ISEQNUMBER(new String[]{(String)idNoMap.get(item.getCreplacesrcid())})); - } else { - item.setVbnote(PickmLangConsts.getRepBodyNote_Group_Msg((String)idNoMap.get(item.getCreplacesrcid()))); - } - } - } - } - - } } } private PickmItemVO[] getNewItems(String cpickmid, PickmItemVO[] items) { - for(PickmItemVO item : items) { + for (PickmItemVO item : items) { item.setCpickmid(cpickmid); } - return items; } + /** + * 得到用户自制的非替代表体行ID + * + * @param preaggvo + * @return + */ private List getUserBuiltItemIDs(AggPickmVO preaggvo) { if (MMValueCheck.isEmpty(preaggvo.getChildren(PickmItemVO.class))) { return null; - } else { - List ids = new ArrayList(); - PickmItemVO[] preItems = (PickmItemVO[])preaggvo.getChildren(PickmItemVO.class); - - for(PickmItemVO item : preItems) { - if (!MMValueCheck.isTrue(item.getBautobuilt()) && MMValueCheck.isEmpty(item.getCreplacesrcid())) { + } + List ids = new ArrayList(); + PickmItemVO[] preItems = (PickmItemVO[]) preaggvo.getChildren(PickmItemVO.class); + for (PickmItemVO item : preItems) { + // 自制表体 + if (!MMValueCheck.isTrue(item.getBautobuilt())) { + // 非替代行 + if (MMValueCheck.isEmpty(item.getCreplacesrcid())) { ids.add(item.getCpickm_bid()); } } - - return ids; } + return ids; } private void updatePreItem(PickmItemVO preItemVO, PickmItemVO newItemVO) { - if (preItemVO.getStatus() != 2) { - preItemVO.setStatus(1); + if (preItemVO.getStatus() != VOStatus.NEW) { + preItemVO.setStatus(VOStatus.UPDATED); } - - for(String attr : updateAttributes) { + // 同步字段 + for (String attr : PickmSubItemReBuilid.updateAttributes) { if(attr.equals("vbdef16")){ continue; } preItemVO.setAttributeValue(attr, newItemVO.getAttributeValue(attr)); } - } private PickmItemVO[] addNewItem(PickmItemVO[] preItems, PickmItemVO[] newItems, Map noIdMap) { - List returnItems = new ArrayList(); + List returnItems = new ArrayList(); UFDouble vrowno = UFDouble.ZERO_DBL; - - for(PickmItemVO preItem : preItems) { + for (PickmItemVO preItem : preItems) { + // 补全行号 vrowno = MMNumberUtil.max(vrowno, VORowNoUtils.getUFDouble(preItem.getVrowno())); returnItems.add(preItem); } - String newRowno = vrowno.toString(); - - for(PickmItemVO newItem : newItems) { + for (PickmItemVO newItem : newItems) { String oldNo = newItem.getVrowno(); - if (FreplaceinfoEnum.REPLACED.equalsValue(newItem.getFreplaceinfo()) && MMValueCheck.isEmpty(newItem.getCgroupkeyrowid())) { + if (FreplaceinfoEnum.REPLACED.equalsValue(newItem.getFreplaceinfo()) + && MMValueCheck.isEmpty(newItem.getCgroupkeyrowid())) { if (MMValueCheck.isEmpty(newItem.getCpickm_bid())) { - newItem.setCpickm_bid((new SequenceGenerator()).generate()); + newItem.setCpickm_bid(new SequenceGenerator().generate()); } - noIdMap.put(oldNo, newItem.getCpickm_bid()); } - if (MMValueCheck.isNotEmpty(newItem.getCreplacesrcid()) && MMValueCheck.isTrue(newItem.getBgroupkey())) { if (MMValueCheck.isEmpty(newItem.getCpickm_bid())) { - newItem.setCpickm_bid((new SequenceGenerator()).generate()); + newItem.setCpickm_bid(new SequenceGenerator().generate()); } - noIdMap.put(newItem.getCreplacesrcid() + newItem.getVreplacegroup(), newItem.getCpickm_bid()); } - newRowno = VORowNoUtils.getRowNoAfterByRule(newRowno.toString(), 10); + // 新行号 + newRowno = VORowNoUtils.getRowNoAfterByRule(newRowno.toString(), VORowNoUtils.STEP_VALUE); newItem.setCpickmid(preItems[0].getCpickmid()); - newItem.setStatus(2); + newItem.setStatus(VOStatus.NEW); newItem.setVrowno(newRowno); returnItems.add(newItem); } + return returnItems.toArray(new PickmItemVO[0]); - return (PickmItemVO[])returnItems.toArray(new PickmItemVO[0]); } + /** + * 只在旧表体存在的替代料行: a) 替代料计划出库主数量变更为0; b) 取消替代料与主料的关联; + * + * @param item + * @param preItemMap + */ private void setReplItemValue(PickmItemVO item, Map preItemMap) { - if (item.getCreplacesrcid() != null && preItemMap.containsKey(item.getCreplacesrcid())) { - if (((PickmItemVO)preItemMap.get(item.getCreplacesrcid())).getCbombid() != null || ((PickmItemVO)preItemMap.get(item.getCreplacesrcid())).getCrtopacid() != null) { - item.setCreplacesrcid((String)null); - item.setPk_realsubs((String)null); - item.setNreplaceorder((Integer)null); - item.setVreplacequotiety((String)null); - } + // 没有替代关系的话返回 + if (item.getCreplacesrcid() == null || !preItemMap.containsKey(item.getCreplacesrcid())) { + return; } + // 主料不是系统生成的不处理 + if (preItemMap.get(item.getCreplacesrcid()).getCbombid() == null + && preItemMap.get(item.getCreplacesrcid()).getCrtopacid() == null) { + return; + } + // 替代来源 + item.setCreplacesrcid(null); + // 实际替代关系 + item.setPk_realsubs(null); + // 替代顺序 + item.setNreplaceorder(null); + // 替代系数 + item.setVreplacequotiety(null); + } private void setDeleteItemValue(PickmItemVO item) { - if (item.getStatus() != 2) { - item.setStatus(1); + // 设为修改态 + if (item.getStatus() != VOStatus.NEW) { + item.setStatus(VOStatus.UPDATED); } - + // 单位定位为0 item.setNunitnum(UFDouble.ZERO_DBL); item.setNunitastnum(UFDouble.ZERO_DBL); + // 定额用量为0 item.setNquotnum(UFDouble.ZERO_DBL); item.setNquotastnum(UFDouble.ZERO_DBL); + // 单位用量为0 item.setNunitusenum(UFDouble.ZERO_DBL); item.setNunituseastnum(UFDouble.ZERO_DBL); + // 计划出库主数量 item.setNplanoutnum(UFDouble.ZERO_DBL); item.setNplanoutastnum(UFDouble.ZERO_DBL); + // 固定损耗主数量 item.setNfixshrinknum(UFDouble.ZERO_DBL); item.setNfixshrinkastnum(UFDouble.ZERO_DBL); + // 损耗系数 item.setNdissipationum(UFDouble.ZERO_DBL); - item.setVreplacequotiety((String)null); - item.setCreplacesrcid((String)null); - item.setNreplaceorder((Integer)null); - item.setVreplacequotiety((String)null); - item.setFreplaceinfo((Integer)null); + // 替代信息 + // 替代系数 + item.setVreplacequotiety(null); + // 替代来源 + item.setCreplacesrcid(null); + // 替代顺序 + item.setNreplaceorder(null); + // 替代系数 + item.setVreplacequotiety(null); + // 替代信息 + item.setFreplaceinfo(null); + UFBoolean needDelete = UFBoolean.FALSE; + try { + needDelete = SysInitQuery.getParaBoolean(item.getPk_org(), "Beiliao_Shanhang_001"); + } catch (BusinessException e) { + e.printStackTrace(); + } + // 项目:当备料计划行的计划出库数量=0且累计待发数量=0且累计出库数量=0时,将此备料计划行删除 + if (needDelete.booleanValue() && MMNumberUtil.isNullOrZero(item.getNaccoutnum()) + && MMNumberUtil.isNullOrZero(item.getNshouldnum()) + && MMNumberUtil.isNullOrZero(item.getNplanoutnum())) { + item.setStatus(VOStatus.DELETED); + } + // 备注 item.setVbnote(PickmLangConsts.getMSG_RebuildDeleteItem()); } private void createPreAggMap(AggPickmVO[] aggvos) { - for(AggPickmVO aggvo : aggvos) { + for (AggPickmVO aggvo : aggvos) { this.preAggVOMap.put(aggvo.getPrimaryKey(), aggvo); } - } private Map getItemMap(AggPickmVO aggvo) { if (MMValueCheck.isEmpty(aggvo.getChildren(PickmItemVO.class))) { return null; - } else { - PickmItemVO[] items = (PickmItemVO[])aggvo.getChildren(PickmItemVO.class); - Map itemMap = new HashMap(); - - for(PickmItemVO item : items) { - if (item.getCpickm_bid() != null) { - itemMap.put(item.getCpickm_bid(), item); - } - } - - return itemMap; } + PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class); + Map itemMap = new HashMap(); + for (PickmItemVO item : items) { + // 将新增的表体行数据过滤掉 + if (item.getCpickm_bid() != null) { + itemMap.put(item.getCpickm_bid(), item); + } + } + return itemMap; + } private MapList getMD5ItemMap(AggPickmVO aggvo) { if (MMValueCheck.isEmpty(aggvo.getChildren(PickmItemVO.class))) { return null; - } else { - PickmItemVO[] items = (PickmItemVO[])aggvo.getChildren(PickmItemVO.class); - MapList itemMap = new MapList(); - - for(PickmItemVO item : items) { - String key = this.getMatchKey(item); - itemMap.put(key, item); - } - - return itemMap; } + PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class); + MapList itemMap = new MapList(); + for (PickmItemVO item : items) { + String key = this.getMatchKey(item); + itemMap.put(key, item); + } + return itemMap; + } + /** + * 获得匹配KEY,因为字段太长用MD5加密 + * + * @param item + * @return + */ private String getMatchKey(PickmItemVO item) { StringBuffer key = new StringBuffer(); + // BOM类型 if (item.getFbomtype() != null) { key.append(item.getFbomtype()); } else { key.append("~"); } - + // BOM行号 if (item.getVbomrowno() != null) { key.append(item.getVbomrowno()); } else { key.append("~"); } + if (item.getCbombid() != null) { + key.append(item.getCbombid()); + } else { + key.append("~"); + } + + // 工序号 if (item.getVprocessno() != null) { key.append(item.getVprocessno()); } else { key.append("~"); } - + // 工序耗料行号 if (item.getOpacprocessno() != null) { key.append(item.getOpacprocessno()); } else { key.append("~"); } - + // 物料VID if (item.getCbmaterialvid() != null) { key.append(item.getCbmaterialvid()); } else { key.append("~"); } - + // 辅单位 if (item.getCbastunitid() != null) { key.append(item.getCbastunitid()); } else { key.append("~"); } - + // 项目 if (item.getCbprojectid() != null) { key.append(item.getCbprojectid()); } else { key.append("~"); } - + // 生产厂商 if (item.getCbproductorid() != null) { key.append(item.getCbproductorid()); } else { key.append("~"); } - + // 供应商 if (item.getCbvendorid() != null) { key.append(item.getCbvendorid()); } else { key.append("~"); } - + // 客户 if (item.getCbcustomerid() != null) { key.append(item.getCbcustomerid()); } else { key.append("~"); } - + // 特征码 if (item.getCbffileid() != null) { key.append(item.getCbffileid()); } else { key.append("~"); } - - for(int i = 1; i < 11; ++i) { + for (int i = 1; i < 11; i++) { if (item.getAttributeValue("vbfree" + i) != null) { key.append(item.getAttributeValue("vbfree" + i)); } else { key.append("~"); } } - + // 为工序委外备料计划增加来源备料计划行ID维度 if (item.getVpscsrcpickmbid() != null) { key.append(item.getCbvendorid()); } else { key.append("~"); } - return PACMDKeyUtil.getMD5String(key.toString()); } + } diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/rule/subitems/transfer/PickmSubItemTransferFromBom.java b/mmpac/src/private/nc/bs/mmpac/pickm/rule/subitems/transfer/PickmSubItemTransferFromBom.java index 08c0771c..32bf410d 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/rule/subitems/transfer/PickmSubItemTransferFromBom.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/rule/subitems/transfer/PickmSubItemTransferFromBom.java @@ -7,11 +7,8 @@ package nc.bs.mmpac.pickm.rule.subitems.transfer; import java.util.ArrayList; import java.util.List; - -import nc.bs.framework.common.NCLocator; import nc.bs.mmpac.pickm.rule.subitems.PickmSubItemBuilderUtils; import nc.bs.mmpac.pickm.rule.subitems.cache.PickmSubItemBuilderDateCache; -import nc.itf.mmpac.pickm.IPickmQueryService; import nc.util.mmf.framework.base.MMNumberUtil; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.bom.bom0202.enumeration.ControlEnum; @@ -21,7 +18,6 @@ import nc.vo.bd.bom.bom0202.paramvo.BomItemResultVOForPickm; import nc.vo.bd.bom.bom0202.paramvo.BomWipParamForPickm; import nc.vo.bd.bom.bom0202.paramvo.dpac.ResultForMoVO; import nc.vo.mmpac.pickm.consts.PickmLangConsts; -import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.mmpac.pickm.entity.PickmTransTypeVO; @@ -33,7 +29,6 @@ import nc.vo.pub.lang.UFDateTime; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.calculator.HslParseUtil; import nc.vo.pubapp.pattern.exception.ExceptionUtils; -import nccloud.pubitf.arap.openapi.IGatheringbillOpenService; public class PickmSubItemTransferFromBom extends PickmSubItemTransfer { public PickmSubItemTransferFromBom(PickmSubItemBuilderDateCache cache) { @@ -67,6 +62,7 @@ public class PickmSubItemTransferFromBom extends PickmSubItemTransfer { List pickmFormWipList = new ArrayList(); if (!FsourcetypeEnum.WWBILL_STATE.equalsValue(pickmHeadVO.getFsourcetype()) && MMValueCheck.isNotEmpty(bomItem.getBomwipparams())) { UFDouble bodyNum = UFDouble.ZERO_DBL; + for(BomWipParamForPickm wipPara : bomItem.getBomwipparams()) { bodyNum = MMNumberUtil.add(new UFDouble[]{bodyNum, wipPara.getNnum()}); } @@ -91,7 +87,7 @@ public class PickmSubItemTransferFromBom extends PickmSubItemTransfer { } } - private PickmItemVO createSubItem(PickmHeadVO pickmHeadVO, BomItemResultVOForPickm bomVO, BomItemParamForPickm bomItem) throws BusinessException { + private PickmItemVO createSubItem(PickmHeadVO pickmHeadVO, BomItemResultVOForPickm bomVO, BomItemParamForPickm bomItem) { PickmItemVO pickmItemVO = new PickmItemVO(); pickmItemVO.setStatus(2); this.setBaseInfo(pickmHeadVO, pickmItemVO, bomVO, bomItem); @@ -101,10 +97,6 @@ public class PickmSubItemTransferFromBom extends PickmSubItemTransfer { this.setOrgAndStock(pickmHeadVO, pickmItemVO, bomItem); this.setFreeItem(pickmItemVO, bomItem); this.setVdefItem(pickmItemVO, bomItem); - if(pickmHeadVO.getCpickmid() != null) { - //20251202 备料重算取消更新备料计划子表自定义项已下达数量 - // this.setVbdef16(pickmHeadVO,pickmItemVO, bomItem); - } return pickmItemVO; } @@ -124,30 +116,23 @@ public class PickmSubItemTransferFromBom extends PickmSubItemTransfer { pickmItemVO.setVbdef13(bomItem.getVdef13()); pickmItemVO.setVbdef14(bomItem.getVdef14()); pickmItemVO.setVbdef15(bomItem.getVdef15()); - // pickmItemVO.setVbdef16("15"); + // pickmItemVO.setVbdef16(bomItem.getVdef16()); pickmItemVO.setVbdef17(bomItem.getVdef17()); pickmItemVO.setVbdef18(bomItem.getVdef18()); pickmItemVO.setVbdef19(bomItem.getVdef19()); pickmItemVO.setVbdef20(bomItem.getVdef20()); pickmItemVO.setVbnote(bomItem.getVnote()); + //2025年12月23日15点41分--添加图号+版本号--vbdef45 + pickmItemVO.setAttributeValue("vbdef45",bomItem.getVdef45()); + pickmItemVO.setAttributeValue("vbdef46",bomItem.getVdef46()); + pickmItemVO.setAttributeValue("vbdef47",bomItem.getVdef47()); + pickmItemVO.setAttributeValue("vbdef48",bomItem.getVdef48()); + pickmItemVO.setAttributeValue("vbdef49",bomItem.getVdef49()); + pickmItemVO.setAttributeValue("vbdef50",bomItem.getVdef50()); + pickmItemVO.setAttributeValue("vbdef51",bomItem.getVdef51()); + pickmItemVO.setAttributeValue("vbdef52",bomItem.getVdef52()); } - private void setVbdef16(PickmHeadVO pickmHeadVO, PickmItemVO pickmItemVO, BomItemParamForPickm bomItem) throws BusinessException { - IPickmQueryService service= ((IPickmQueryService) NCLocator.getInstance() - .lookup(IPickmQueryService.class)); - AggPickmVO aggPickmVO = service.querySingleBillByPk(pickmHeadVO.getCpickmid()); - PickmItemVO[] pickmItemVOs = (PickmItemVO[])aggPickmVO.getChildrenVO(); - if (pickmItemVOs != null && pickmItemVOs.length > 0) { - for (PickmItemVO pickmItemVO1 : pickmItemVOs) { - if(null != pickmItemVO.getCbombid() && null != pickmItemVO1.getCbombid()){ - if(pickmItemVO1.getCbombid().equals(pickmItemVO.getCbombid())) { - // pickmItemVO.setVbdef16(pickmItemVO1.getVbdef16()); - // pickmItemVO.setVbnote(pickmItemVO1.getVbnote()); - } - } - } - } - // pickmItemVO.setVbdef16("15"); - } + private void setOrgAndStock(PickmHeadVO pickmHeadVO, PickmItemVO pickmItemVO, BomItemParamForPickm bomItemVO) { PickmTransferSourceFactory factory = new PickmTransferSourceFactory(this.subItemdateCache); factory.setSouceInfo(pickmHeadVO, pickmItemVO, bomItemVO.getIleadtimenum(), (String)null, (UFDateTime)null); diff --git a/mmpac/src/public/nc/vo/bd/bom/bom0202/paramvo/BomItemParamForPickm.java b/mmpac/src/public/nc/vo/bd/bom/bom0202/paramvo/BomItemParamForPickm.java new file mode 100644 index 00000000..d75fc4ef --- /dev/null +++ b/mmpac/src/public/nc/vo/bd/bom/bom0202/paramvo/BomItemParamForPickm.java @@ -0,0 +1,1072 @@ +package nc.vo.bd.bom.bom0202.paramvo; + +import nc.vo.pub.SuperVO; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pub.lang.UFDate; +import nc.vo.pub.lang.UFDouble; + +public class BomItemParamForPickm extends SuperVO { + private static final long serialVersionUID = -4157286809977754361L; + private String cbom_bid; + private String pk_group; + private String pk_org; + private String pk_org_v; + private Integer fbomtype; + private String vrowno; + private Integer fitemtype; + private Integer fitemsource; + private String cmaterialid; + private String cmaterialvid; + private String vitemversion; + private String vpackversion; + private String vchangerate; + private String cmeasureid; + private String cassmeasureid; + private UFDouble nitemnum; + private UFDouble nassitemnum; + private UFDouble nitemnumwithloss; + private UFDouble nassitemnumwithloss; + private UFBoolean bbsteploss; + private UFDouble nbfixshrinknum; + private UFDouble nbfixshrinkastnum; + private UFDouble ndissipationum; + private Integer ileadtimenum; + private UFBoolean bdeliver; + private UFBoolean bmainmaterial; + private UFBoolean bmixedmaterial; + private UFBoolean bdefault; + private Integer fsupplymode; + private UFBoolean boutsource; + private Integer fcontrol; + private UFBoolean batpcheck; + private UFDate cbeginperiod; + private UFDate cendperiod; + private UFBoolean bcanreplace; + private Integer freplacetype; + private String vmatingno; + private Integer ibasenum; + private UFBoolean bkitmaterial; + private UFBoolean bupint; + private Integer fbackflushtype; + private Integer fbackflushtime; + private UFBoolean bbmixbatch; + private UFBoolean bbkititemcheck; + private UFBoolean bcustommaterial; + private UFBoolean bprojectmaterial; + private String vnote; + private String ccustomerid; + private String ccustomerid_v; + private String cvendorid; + private String cvendorid_v; + private String cproductorid; + private String cprojectid; + private String cffileid; + private String vfree1; + private String vfree2; + private String vfree3; + private String vfree4; + private String vfree5; + private String vfree6; + private String vfree7; + private String vfree8; + private String vfree9; + private String vfree10; + private String vdef1; + private String vdef2; + private String vdef3; + private String vdef4; + private String vdef5; + private String vdef6; + private String vdef7; + private String vdef8; + private String vdef9; + private String vdef10; + private String vdef11; + private String vdef12; + private String vdef13; + private String vdef14; + private String vdef15; + private String vdef16; + private String vdef17; + private String vdef18; + private String vdef19; + private String vdef20; + private String vdef21; + private String vdef22; + private String vdef23; + private String vdef24; + private String vdef25; + private String vdef26; + private String vdef27; + private String vdef28; + private String vdef29; + private String vdef30; + private String vdef31; + private String vdef32; + private String vdef33; + private String vdef34; + private String vdef35; + private String vdef36; + private String vdef37; + private String vdef38; + private String vdef39; + private String vdef40; + private String vdef41; + private String vdef42; + private String vdef43; + private String vdef44; + private String vdef45; + private String vdef46; + private String vdef47; + private String vdef48; + private String vdef49; + private String vdef50; + private String vdef51; + private String vdef52; + + private BomWipParamForPickm[] bomwipparams; + private BomItemParentParamForPickm bomitemparent; + + public String getCbom_bid() { + return this.cbom_bid; + } + + public void setCbom_bid(String cbom_bid) { + this.cbom_bid = cbom_bid; + } + + public String getPk_group() { + return this.pk_group; + } + + public void setPk_group(String pk_group) { + this.pk_group = pk_group; + } + + public String getPk_org() { + return this.pk_org; + } + + public void setPk_org(String pk_org) { + this.pk_org = pk_org; + } + + public String getPk_org_v() { + return this.pk_org_v; + } + + public void setPk_org_v(String pk_org_v) { + this.pk_org_v = pk_org_v; + } + + public Integer getFbomtype() { + return this.fbomtype; + } + + public void setFbomtype(Integer fbomtype) { + this.fbomtype = fbomtype; + } + + public String getVrowno() { + return this.vrowno; + } + + public void setVrowno(String vrowno) { + this.vrowno = vrowno; + } + + public Integer getFitemtype() { + return this.fitemtype; + } + + public void setFitemtype(Integer fitemtype) { + this.fitemtype = fitemtype; + } + + public Integer getFitemsource() { + return this.fitemsource; + } + + public void setFitemsource(Integer fitemsource) { + this.fitemsource = fitemsource; + } + + public String getCmaterialid() { + return this.cmaterialid; + } + + public void setCmaterialid(String cmaterialid) { + this.cmaterialid = cmaterialid; + } + + public String getCmaterialvid() { + return this.cmaterialvid; + } + + public void setCmaterialvid(String cmaterialvid) { + this.cmaterialvid = cmaterialvid; + } + + public String getVitemversion() { + return this.vitemversion; + } + + public void setVitemversion(String vitemversion) { + this.vitemversion = vitemversion; + } + + public String getVpackversion() { + return this.vpackversion; + } + + public void setVpackversion(String vpackversion) { + this.vpackversion = vpackversion; + } + + public String getVchangerate() { + return this.vchangerate; + } + + public void setVchangerate(String vchangerate) { + this.vchangerate = vchangerate; + } + + public String getCmeasureid() { + return this.cmeasureid; + } + + public void setCmeasureid(String cmeasureid) { + this.cmeasureid = cmeasureid; + } + + public String getCassmeasureid() { + return this.cassmeasureid; + } + + public void setCassmeasureid(String cassmeasureid) { + this.cassmeasureid = cassmeasureid; + } + + public UFDouble getNitemnum() { + return this.nitemnum; + } + + public void setNitemnum(UFDouble nitemnum) { + this.nitemnum = nitemnum; + } + + public UFDouble getNassitemnum() { + return this.nassitemnum; + } + + public void setNassitemnum(UFDouble nassitemnum) { + this.nassitemnum = nassitemnum; + } + + public UFDouble getNitemnumwithloss() { + return this.nitemnumwithloss; + } + + public void setNitemnumwithloss(UFDouble nitemnumwithloss) { + this.nitemnumwithloss = nitemnumwithloss; + } + + public UFDouble getNassitemnumwithloss() { + return this.nassitemnumwithloss; + } + + public void setNassitemnumwithloss(UFDouble nassitemnumwithloss) { + this.nassitemnumwithloss = nassitemnumwithloss; + } + + public UFBoolean getBbsteploss() { + return this.bbsteploss; + } + + public void setBbsteploss(UFBoolean bbsteploss) { + this.bbsteploss = bbsteploss; + } + + public UFDouble getNbfixshrinknum() { + return this.nbfixshrinknum; + } + + public void setNbfixshrinknum(UFDouble nbfixshrinknum) { + this.nbfixshrinknum = nbfixshrinknum; + } + + public UFDouble getNbfixshrinkastnum() { + return this.nbfixshrinkastnum; + } + + public void setNbfixshrinkastnum(UFDouble nbfixshrinkastnum) { + this.nbfixshrinkastnum = nbfixshrinkastnum; + } + + public UFDouble getNdissipationum() { + return this.ndissipationum; + } + + public void setNdissipationum(UFDouble ndissipationum) { + this.ndissipationum = ndissipationum; + } + + public Integer getIleadtimenum() { + return this.ileadtimenum; + } + + public void setIleadtimenum(Integer ileadtimenum) { + this.ileadtimenum = ileadtimenum; + } + + public UFBoolean getBdeliver() { + return this.bdeliver; + } + + public void setBdeliver(UFBoolean bdeliver) { + this.bdeliver = bdeliver; + } + + public UFBoolean getBmainmaterial() { + return this.bmainmaterial; + } + + public void setBmainmaterial(UFBoolean bmainmaterial) { + this.bmainmaterial = bmainmaterial; + } + + public UFBoolean getBmixedmaterial() { + return this.bmixedmaterial; + } + + public void setBmixedmaterial(UFBoolean bmixedmaterial) { + this.bmixedmaterial = bmixedmaterial; + } + + public UFBoolean getBdefault() { + return this.bdefault; + } + + public void setBdefault(UFBoolean bdefault) { + this.bdefault = bdefault; + } + + public Integer getFsupplymode() { + return this.fsupplymode; + } + + public void setFsupplymode(Integer fsupplymode) { + this.fsupplymode = fsupplymode; + } + + public UFBoolean getBoutsource() { + return this.boutsource; + } + + public void setBoutsource(UFBoolean boutsource) { + this.boutsource = boutsource; + } + + public Integer getFcontrol() { + return this.fcontrol; + } + + public void setFcontrol(Integer fcontrol) { + this.fcontrol = fcontrol; + } + + public UFBoolean getBatpcheck() { + return this.batpcheck; + } + + public void setBatpcheck(UFBoolean batpcheck) { + this.batpcheck = batpcheck; + } + + public UFDate getCbeginperiod() { + return this.cbeginperiod; + } + + public void setCbeginperiod(UFDate cbeginperiod) { + this.cbeginperiod = cbeginperiod.asBegin(); + } + + public UFDate getCendperiod() { + return this.cendperiod; + } + + public void setCendperiod(UFDate cendperiod) { + this.cendperiod = cendperiod; + } + + public UFBoolean getBcanreplace() { + return this.bcanreplace; + } + + public void setBcanreplace(UFBoolean bcanreplace) { + this.bcanreplace = bcanreplace; + } + + public Integer getFreplacetype() { + return this.freplacetype; + } + + public void setFreplacetype(Integer freplacetype) { + this.freplacetype = freplacetype; + } + + public String getVmatingno() { + return this.vmatingno; + } + + public void setVmatingno(String vmatingno) { + this.vmatingno = vmatingno; + } + + public Integer getIbasenum() { + return this.ibasenum; + } + + public void setIbasenum(Integer ibasenum) { + this.ibasenum = ibasenum; + } + + public UFBoolean getBkitmaterial() { + return this.bkitmaterial; + } + + public void setBkitmaterial(UFBoolean bkitmaterial) { + this.bkitmaterial = bkitmaterial; + } + + public UFBoolean getBupint() { + return this.bupint; + } + + public void setBupint(UFBoolean bupint) { + this.bupint = bupint; + } + + public Integer getFbackflushtype() { + return this.fbackflushtype; + } + + public void setFbackflushtype(Integer fbackflushtype) { + this.fbackflushtype = fbackflushtype; + } + + public Integer getFbackflushtime() { + return this.fbackflushtime; + } + + public void setFbackflushtime(Integer fbackflushtime) { + this.fbackflushtime = fbackflushtime; + } + + public UFBoolean getBbmixbatch() { + return this.bbmixbatch; + } + + public void setBbmixbatch(UFBoolean bbmixbatch) { + this.bbmixbatch = bbmixbatch; + } + + public UFBoolean getBbkititemcheck() { + return this.bbkititemcheck; + } + + public void setBbkititemcheck(UFBoolean bbkititemcheck) { + this.bbkititemcheck = bbkititemcheck; + } + + public UFBoolean getBcustommaterial() { + return this.bcustommaterial; + } + + public void setBcustommaterial(UFBoolean bcustommaterial) { + this.bcustommaterial = bcustommaterial; + } + + public UFBoolean getBprojectmaterial() { + return this.bprojectmaterial; + } + + public void setBprojectmaterial(UFBoolean bprojectmaterial) { + this.bprojectmaterial = bprojectmaterial; + } + + public String getVnote() { + return this.vnote; + } + + public void setVnote(String vnote) { + this.vnote = vnote; + } + + public String getCcustomerid() { + return this.ccustomerid; + } + + public void setCcustomerid(String ccustomerid) { + this.ccustomerid = ccustomerid; + } + + public String getCvendorid() { + return this.cvendorid; + } + + public void setCvendorid(String cvendorid) { + this.cvendorid = cvendorid; + } + + public String getCcustomerid_v() { + return this.ccustomerid_v; + } + + public void setCcustomerid_v(String ccustomerid_v) { + this.ccustomerid_v = ccustomerid_v; + } + + public String getCvendorid_v() { + return this.cvendorid_v; + } + + public void setCvendorid_v(String cvendorid_v) { + this.cvendorid_v = cvendorid_v; + } + + public String getCproductorid() { + return this.cproductorid; + } + + public void setCproductorid(String cproductorid) { + this.cproductorid = cproductorid; + } + + public String getCprojectid() { + return this.cprojectid; + } + + public void setCprojectid(String cprojectid) { + this.cprojectid = cprojectid; + } + + public String getVfree1() { + return this.vfree1; + } + + public void setVfree1(String vfree1) { + this.vfree1 = vfree1; + } + + public String getVfree2() { + return this.vfree2; + } + + public void setVfree2(String vfree2) { + this.vfree2 = vfree2; + } + + public String getVfree3() { + return this.vfree3; + } + + public void setVfree3(String vfree3) { + this.vfree3 = vfree3; + } + + public String getVfree4() { + return this.vfree4; + } + + public void setVfree4(String vfree4) { + this.vfree4 = vfree4; + } + + public String getVfree5() { + return this.vfree5; + } + + public void setVfree5(String vfree5) { + this.vfree5 = vfree5; + } + + public String getVfree6() { + return this.vfree6; + } + + public void setVfree6(String vfree6) { + this.vfree6 = vfree6; + } + + public String getVfree7() { + return this.vfree7; + } + + public void setVfree7(String vfree7) { + this.vfree7 = vfree7; + } + + public String getVfree8() { + return this.vfree8; + } + + public void setVfree8(String vfree8) { + this.vfree8 = vfree8; + } + + public String getVfree9() { + return this.vfree9; + } + + public void setVfree9(String vfree9) { + this.vfree9 = vfree9; + } + + public String getVfree10() { + return this.vfree10; + } + + public void setVfree10(String vfree10) { + this.vfree10 = vfree10; + } + + public String getVdef1() { + return this.vdef1; + } + + public void setVdef1(String vdef1) { + this.vdef1 = vdef1; + } + + public String getVdef2() { + return this.vdef2; + } + + public void setVdef2(String vdef2) { + this.vdef2 = vdef2; + } + + public String getVdef3() { + return this.vdef3; + } + + public void setVdef3(String vdef3) { + this.vdef3 = vdef3; + } + + public String getVdef4() { + return this.vdef4; + } + + public void setVdef4(String vdef4) { + this.vdef4 = vdef4; + } + + public String getVdef5() { + return this.vdef5; + } + + public void setVdef5(String vdef5) { + this.vdef5 = vdef5; + } + + public String getVdef6() { + return this.vdef6; + } + + public void setVdef6(String vdef6) { + this.vdef6 = vdef6; + } + + public String getVdef7() { + return this.vdef7; + } + + public void setVdef7(String vdef7) { + this.vdef7 = vdef7; + } + + public String getVdef8() { + return this.vdef8; + } + + public void setVdef8(String vdef8) { + this.vdef8 = vdef8; + } + + public String getVdef9() { + return this.vdef9; + } + + public void setVdef9(String vdef9) { + this.vdef9 = vdef9; + } + + public String getVdef10() { + return this.vdef10; + } + + public void setVdef10(String vdef10) { + this.vdef10 = vdef10; + } + + public String getVdef11() { + return this.vdef11; + } + + public void setVdef11(String vdef11) { + this.vdef11 = vdef11; + } + + public String getVdef12() { + return this.vdef12; + } + + public void setVdef12(String vdef12) { + this.vdef12 = vdef12; + } + + public String getVdef13() { + return this.vdef13; + } + + public void setVdef13(String vdef13) { + this.vdef13 = vdef13; + } + + public String getVdef14() { + return this.vdef14; + } + + public void setVdef14(String vdef14) { + this.vdef14 = vdef14; + } + + public String getVdef15() { + return this.vdef15; + } + + public void setVdef15(String vdef15) { + this.vdef15 = vdef15; + } + + public String getVdef16() { + return this.vdef16; + } + + public void setVdef16(String vdef16) { + this.vdef16 = vdef16; + } + + public String getVdef17() { + return this.vdef17; + } + + public void setVdef17(String vdef17) { + this.vdef17 = vdef17; + } + + public String getVdef18() { + return this.vdef18; + } + + public void setVdef18(String vdef18) { + this.vdef18 = vdef18; + } + + public String getVdef19() { + return this.vdef19; + } + + public void setVdef19(String vdef19) { + this.vdef19 = vdef19; + } + + public String getVdef20() { + return this.vdef20; + } + + public void setVdef20(String vdef20) { + this.vdef20 = vdef20; + } + + public String getVdef21() { + return this.vdef21; + } + + public void setVdef21(String vdef21) { + this.vdef21 = vdef21; + } + + public String getVdef22() { + return this.vdef22; + } + + public void setVdef22(String vdef22) { + this.vdef22 = vdef22; + } + + public String getVdef23() { + return this.vdef23; + } + + public void setVdef23(String vdef23) { + this.vdef23 = vdef23; + } + + public String getVdef24() { + return this.vdef24; + } + + public void setVdef24(String vdef24) { + this.vdef24 = vdef24; + } + + public String getVdef25() { + return this.vdef25; + } + + public void setVdef25(String vdef25) { + this.vdef25 = vdef25; + } + + public String getVdef26() { + return this.vdef26; + } + + public void setVdef26(String vdef26) { + this.vdef26 = vdef26; + } + + public String getVdef27() { + return this.vdef27; + } + + public void setVdef27(String vdef27) { + this.vdef27 = vdef27; + } + + public String getVdef28() { + return this.vdef28; + } + + public void setVdef28(String vdef28) { + this.vdef28 = vdef28; + } + + public String getVdef29() { + return this.vdef29; + } + + public void setVdef29(String vdef29) { + this.vdef29 = vdef29; + } + + public String getVdef30() { + return this.vdef30; + } + + public void setVdef30(String vdef30) { + this.vdef30 = vdef30; + } + + public String getVdef31() { + return this.vdef31; + } + + public void setVdef31(String vdef31) { + this.vdef31 = vdef31; + } + + public String getVdef32() { + return this.vdef32; + } + + public void setVdef32(String vdef32) { + this.vdef32 = vdef32; + } + + public String getVdef33() { + return this.vdef33; + } + + public void setVdef33(String vdef33) { + this.vdef33 = vdef33; + } + + public String getVdef34() { + return this.vdef34; + } + + public void setVdef34(String vdef34) { + this.vdef34 = vdef34; + } + + public String getVdef35() { + return this.vdef35; + } + + public void setVdef35(String vdef35) { + this.vdef35 = vdef35; + } + + public String getVdef36() { + return this.vdef36; + } + + public void setVdef36(String vdef36) { + this.vdef36 = vdef36; + } + + public String getVdef37() { + return this.vdef37; + } + + public void setVdef37(String vdef37) { + this.vdef37 = vdef37; + } + + public String getVdef38() { + return this.vdef38; + } + + public void setVdef38(String vdef38) { + this.vdef38 = vdef38; + } + + public String getVdef39() { + return this.vdef39; + } + + public void setVdef39(String vdef39) { + this.vdef39 = vdef39; + } + + public String getVdef40() { + return this.vdef40; + } + + public void setVdef40(String vdef40) { + this.vdef40 = vdef40; + } + + public String getVdef41() { + return this.vdef41; + } + + public void setVdef41(String vdef41) { + this.vdef41 = vdef41; + } + + public String getVdef42() { + return this.vdef42; + } + + public void setVdef42(String vdef42) { + this.vdef42 = vdef42; + } + + public String getVdef43() { + return this.vdef43; + } + + public void setVdef43(String vdef43) { + this.vdef43 = vdef43; + } + + public String getVdef44() { + return this.vdef44; + } + + public void setVdef44(String vdef44) { + this.vdef44 = vdef44; + } + + public String getVdef45() { + return this.vdef45; + } + + public void setVdef45(String vdef45) { + this.vdef45 = vdef45; + } + + public String getVdef46() { + return this.vdef46; + } + + public void setVdef46(String vdef46) { + this.vdef46 = vdef46; + } + + public String getVdef47() { + return this.vdef47; + } + + public void setVdef47(String vdef47) { + this.vdef47 = vdef47; + } + + public String getVdef48() { + return this.vdef48; + } + + public void setVdef48(String vdef48) { + this.vdef48 = vdef48; + } + + public String getVdef49() { + return this.vdef49; + } + + public void setVdef49(String vdef49) { + this.vdef49 = vdef49; + } + + public String getVdef50() { + return this.vdef50; + } + + public void setVdef50(String vdef50) { + this.vdef50 = vdef50; + } + + public String getVdef51() { + return this.vdef51; + } + + public void setVdef51(String vdef51) { + this.vdef51 = vdef51; + } + + public String getVdef52() { + return this.vdef52; + } + + public void setVdef52(String vdef52) { + this.vdef52 = vdef52; + } + public BomWipParamForPickm[] getBomwipparams() { + return this.bomwipparams; + } + + public void setBomwipparams(BomWipParamForPickm[] bomwipparams) { + this.bomwipparams = bomwipparams; + } + + public BomItemParentParamForPickm getBomitemparent() { + return this.bomitemparent; + } + + public void setBomitemparent(BomItemParentParamForPickm bomitemparent) { + this.bomitemparent = bomitemparent; + } + + public String getCffileid() { + return this.cffileid; + } + + public void setCffileid(String cffileid) { + this.cffileid = cffileid; + } +}