// 复写父类的保存方法,解决了修改时子表中主表外键丢失的问题 // 添加了当合同为普通合同时,合同金额为必输项的数据项检查 public NCObject write(NCObject billVO, Object userObject) throws BusinessException { // 子表修改记录时插入主表主键 // 获取AggVO AggContractVO aggContractVO = (AggContractVO) billVO.getContainmentObject(); if (null != aggContractVO) { // 获取主表VO ContractVO ContractVO = (ContractVO) aggContractVO.getParentVO(); String message[] = DzcgMainAuthority.queryXDeptAndPsnByCon(ContractVO); if (ContractVO.getXq_dept() == null) ContractVO.setXq_dept(message[0]); if (ContractVO.getXreq_psn() == null) ContractVO.setXreq_psn(message[1]); if (ContractVO.getXreq_no() == null) ContractVO.setXreq_no(message[4]); if (ContractVO.getXreq_name() == null) ContractVO.setXreq_name(message[5]); // lifeic修改把合同金额校验去掉,使用自动计算合同金额 // 获取用户输入的合同类型,当合同类型为普通合同时做合同金额的必输项检查 /* if(ContractVO.getCt_type().intValue() == EbsOperaitonConst.OPERATION_STOCK_TYPE_COMMON_CONTRACT){ if (ContractVO.getCt_amount() == null){ throw new LfwRuntimeException(null,"请输入合同金额!",null); } }else{ //当合同类型为框架协议时将合同金额设置为空 ContractVO.setCt_amount(null); } */ // 检查合同生效日期和合同结束日期的合法性 // 合同生效日期 // UFDate dtBeginDay = ContractVO.getCt_validate_date(); // //合同结束日期 // UFDate dtEndDay = ContractVO.getCt_closed_date(); // //合同结束日期不早于合同生效日期 // if(dtBeginDay.compareTo(dtEndDay) > 0){ // throw new LfwRuntimeException("合同结束日期不能早于合同生效日期!"); // } UFDouble total = new UFDouble(0); // 获取主表VO属性 String pk_ht_contract = ContractVO.getPk_ht_contract(); if (null != pk_ht_contract && !"".equals(pk_ht_contract)) { // 修改保存时设置修改人和修改时间 // 修改人为当前登录者 ContractVO.setModifyid(LfwRuntimeEnvironment.getUserVO().getPrimaryKey()); // 修改日期为当前系统日期 ContractVO.setModifydate(new UFDate(System.currentTimeMillis())); // 获取所有字表VO,以数组形式返回 } ProdPriceRepoVO[] cavo = (ProdPriceRepoVO[]) aggContractVO.getTableVO("prod_price_item_array"); if (cavo != null) { int count = 0; for (int i = 0; i < cavo.length; i++) { if (cavo[i].getStatus() != VOStatus.DELETED) { // 判断行数据中产品分类、产品名称、生效日期和失效日期单位是否输入 if (null == cavo[i].getPk_da_prod_cate() || "".equals(cavo[i].getPk_da_prod())) { throw new LfwRuntimeException("表体第" + (i + 1) + "行:请选择产品分类!"); } /* if (null == cavo[i].getPk_da_prod() || "".equals(cavo[i].getPk_da_prod())){ throw new LfwRuntimeException(null,"表体第"+(i+1)+"行:请选择产品!",null); } */ if (null == cavo[i].getProd_unit() || "".equals(cavo[i].getProd_unit())) { throw new LfwRuntimeException("表体第" + (i + 1) + "行:请选择单位!"); } /* if (null == cavo[i].getEffective_date() || "".equals(cavo[i].getEffective_date())){ throw new LfwRuntimeException(null,"表体第"+(i+1)+"行:请选择生效日期!",null); } if (null == cavo[i].getIneffective_date() || "".equals(cavo[i].getIneffective_date())){ throw new LfwRuntimeException(null,"表体第"+(i+1)+"行:请选择失效日期!",null); } */ // 更改VO状态,重新插入页面输入的行数据信息 if (cavo[i].getStatus() != VOStatus.DELETED) { cavo[i].setStatus(VOStatus.NEW); } // 为子表VO中的属性set主表主键 cavo[i].setAttributeValue("pk_ht_contract", pk_ht_contract); total = total.add(cavo[i].getDiscounted_amount()); } else { cavo[i] = null; count++; } } // 修改删除行项目之后保存还出现该行项目问题,在获取之后删除保存 // 创建一个存放删除记录后的容器 ProdPriceRepoVO[] cavonew = new ProdPriceRepoVO[cavo.length - count]; // 为存放数组声明的一个下标 int Index = 0; // 为删除记录后的容器赋值 for (int i = 0; i < cavo.length; i++) { if (null == cavo[i]) { } else { cavonew[Index] = cavo[i]; Index++; } } aggContractVO.setTableVO("prod_price_item_array", cavonew); ConstratMoneyPlanVO[] cavo1 = (ConstratMoneyPlanVO[]) aggContractVO.getTableVO("moeny_plan_item_array"); if (cavo1 != null) { for (int i = 0; i < cavo1.length; i++) { if (cavo1[i].getAttributeValue("pk_ht_money_plan") == null || cavo1[i].getAttributeValue("pk_ht_money_plan").equals("")) { cavo1[i].setStatus(VOStatus.NEW); cavo1[i].setAttributeValue("pk_ht_contract", pk_ht_contract); } } } } ContractVO.setCt_amount(total); // 普通自动生成编码的处理 wangyea 2010-12-31 String contract_no = null; if (ContractVO.getContract_no() == null || ContractVO.getContract_no().length() == 0) { if (ContractVO.getR_pk_ht_contract() != null && ContractVO.getR_pk_ht_contract().length() > 0) { // 关联合同编号 contract_no = CodPlatformService.billCodeGlContract( ContractVO.getPk_corp(), ContractVO.getR_pk_ht_contract()); } else { // 普通合同编号 contract_no = CodPlatformService.billCodeContract(ContractVO.getPk_corp()); } } else { if (ContractVO.getPk_ht_contract() != null) { // 查询数据库中的关联合同主键,判断关联合同是否修改 String ora_r_pk = CodPlatformService.queryLinkContractByPk(ContractVO.getPk_ht_contract()); // 修改关联合同时,重新生成关联合同编码 if (ContractVO.getR_pk_ht_contract() != null && ora_r_pk != null) { // 如果去掉了关联合同 if (!ContractVO.getR_pk_ht_contract().equals(ora_r_pk)) { // 关联合同编号 如果关联合同变化则重新生成编码 contract_no = CodPlatformService.billCodeGlContract( ContractVO.getPk_corp(), ContractVO.getR_pk_ht_contract()); } else { // 合同编号不变 contract_no = ContractVO.getContract_no(); } } else { if (ora_r_pk != null && ContractVO.getR_pk_ht_contract() == null) { // 普通合同编号 contract_no = CodPlatformService.billCodeContract(ContractVO.getPk_corp()); } else if (ora_r_pk == null && ContractVO.getR_pk_ht_contract() == null) { // 合同编号不变 contract_no = ContractVO.getContract_no(); } else if (ora_r_pk == null && ContractVO.getR_pk_ht_contract() != null) { // 关联合同编号 如果关联合同变化则重新生成编码 contract_no = CodPlatformService.billCodeGlContract( ContractVO.getPk_corp(), ContractVO.getR_pk_ht_contract()); } else { // 合同编号不变 contract_no = ContractVO.getContract_no(); } } } } ContractVO.setContract_no(contract_no); // 编码判断处理完成 } IContractService service = (IContractService) NCLocator.getInstance().lookup(IContractService.class); return service.doWrite(billVO, userObject); }
/** * 合同复制的处理 * * @author wangyea 2011-2-15 * @param pk * @return * @throws LfwBusinessException */ public String copyct(String pk) throws LfwBusinessException { try { ContractVO contraceVO = (ContractVO) getBaseDao().retrieveByPK(ContractVO.class, pk); // 设置生效状态 contraceVO.setOa_state(0); // 1 为生效 0 为失效 oa状态 contraceVO.setCt_pub(0); // 0 未发布 1 发布 发布状态 contraceVO.setStatus(VOStatus.NEW); contraceVO.setBillstatus(nc.vo.trade.pub.IBillStatus.FREE); // 审核状态 // 合同编号处理 普通合同 wangyea 2011-4-23 String contract_no = CodPlatformService.billCodeContract(contraceVO.getPk_corp()); // 如果是关联合同 // if(contraceVO.getR_pk_ht_contract()!=null && // contraceVO.getR_pk_ht_contract().length()>0){ // //contraceVO.setR_pk_ht_contract(contraceVO.getR_pk_ht_contract());//关联合同主键 // contract_no = // CodPlatformService.billCodeGlContract(contraceVO.getPk_corp(),contraceVO.getR_pk_ht_contract()); // }else{ // contraceVO.setR_pk_ht_contract(pk);//关联合同主键 // } contraceVO.setR_pk_ht_contract(null); contraceVO.setPk_ht_contract(null); contraceVO.setPk_supplier(null); contraceVO.setContract_no(null); contraceVO.setOperatedate(new UFDate(System.currentTimeMillis())); contraceVO.setOperatorid(LfwRuntimeEnvironment.getUserVO().getPrimaryKey()); // 制单人,日期,部门,修改人,修改日期 contraceVO.setModifyid(LfwRuntimeEnvironment.getUserVO().getPrimaryKey()); contraceVO.setModifydate(new UFDate(System.currentTimeMillis())); Object userDeptID = LfwRuntimeEnvironment.getWebContext() .getRequest() .getSession() .getAttribute(LoginSessionConstant.LOGIN_SESSION_USER_DEPT); if (userDeptID != null && userDeptID.toString() != null && userDeptID.toString().length() > 0) { contraceVO.setPk_dept(userDeptID.toString()); } contraceVO.setModifydate(new UFDate(System.currentTimeMillis())); contraceVO.setModifyid(LfwRuntimeEnvironment.getUserVO().getPrimaryKey()); contraceVO.setApprovedate(null); contraceVO.setApproveid(null); contraceVO.setApprovenote(null); contraceVO.setTcomm1rtf(null); contraceVO.setTcomm2rtf(null); contraceVO.setTcomm3rtf(null); String newpk = baseDao.insertVO(contraceVO); if (newpk != null && newpk.length() > 0) { // 查询合同表体明细 String sql = "select * from ebs_ht_prod_price_repo where pk_ht_contract='" + pk + "' and isnull(dr,0)=0 "; List<ProdPriceRepoVO> list_price = (List<ProdPriceRepoVO>) getBaseDao().executeQuery(sql, new BeanListProcessor(ProdPriceRepoVO.class)); if (list_price != null && list_price.size() > 0) { for (ProdPriceRepoVO priceVO : list_price) { priceVO.setPk_ht_prod_price_repo(null); priceVO.setPk_ht_contract(newpk); baseDao.insertVO(priceVO); } } } return newpk; } catch (Exception e) { throw new LfwRuntimeException("合同复制失败!"); } }
/** 王磊2011-3-26改动,判断为空的问题 */ public NCObject write(NCObject billVO, Object userObject) throws BusinessException { // 子表修改记录时插入主表主键 // 获取AggVO BaseDAO dao = new BaseDAO(); AggReqVO aggReqVO = (AggReqVO) billVO.getContainmentObject(); if (null != aggReqVO) { // 获取主表VO ReqMainVO reqMainVO = (ReqMainVO) aggReqVO.getParentVO(); // 修改不给复制建议人的问题 String operid = reqMainVO.getPk_oper_person(); String dept = reqMainVO.getPk_dept_sug(); try { String sql = " select * from bd_psndoc where pk_deptdoc = '" + dept + "' and pk_psndoc ='" + operid + "' "; List<PsndocVO> list = (List<PsndocVO>) dao.executeQuery(sql, new BeanListProcessor(PsndocVO.class)); // psnvo = (PsndocVO)dao.retrieveByPK(PsndocVO.class, operid); if (list != null && list.size() > 0) { } else { throw new LfwRuntimeException("请不要手动填写采购经办人,你选择的建议采购部门与填写的采购经办人部门不对应,请重新选择!"); } } catch (Exception e) { throw new LfwRuntimeException("请不要手动填写采购经办人,你选择的建议采购部门与填写的采购经办人部门不对应,请重新选择!"); // Logger.error("请选择建议采购人,不要手动填写!"); // Logger.error(e.getMessage()); } String bill_code = reqMainVO.getBill_code(); if (bill_code == null || bill_code.trim().length() == 0) { bill_code = CodPlatformService.billCodeXqRep(LfwRuntimeEnvironment.getPkCorp()); reqMainVO.setBill_code(bill_code); } // 获取主表VO属性 String pk_xq_req_main = reqMainVO.getPk_xq_req_main(); if (null != pk_xq_req_main && !"".equals(pk_xq_req_main)) { // 修改保存时设置修改人和修改时间 // 修改人 reqMainVO.setModifier(LfwRuntimeEnvironment.getUserVO().getPrimaryKey()); // 修改时间为当前的系统时间 reqMainVO.setModifydate(new UFDate(System.currentTimeMillis())); // 获取所有子表VO,以数组形式返回 CircularlyAccessibleValueObject[] cavo = aggReqVO.getChildrenVO(); if (cavo != null && cavo.length > 0) { // 现在可以导入数据,导入数据时是需要把单据保存后才能进行处理,因此去掉了表体不能为空的限制 // throw new LfwRuntimeException("表体行不能为空"); for (int i = 0; i < cavo.length; i++) { // 为子表VO中的属性set主表主键 cavo[i].setAttributeValue("pk_xq_req_main", pk_xq_req_main); } } } UFDouble ufd = reqMainVO.getBuget_amount(); // boolean flag=true; CircularlyAccessibleValueObject[] cavo = aggReqVO.getChildrenVO(); UFDouble amount = new UFDouble(0); if (cavo != null && cavo.length > 0) { for (CircularlyAccessibleValueObject cav : cavo) { if (cav instanceof ReqItemProdVO) { ReqItemProdVO pvo = (ReqItemProdVO) cav; if (pvo != null) { if (pvo.getStatus() != 3) { UFDouble tAmount = pvo.getAmount(); if (tAmount != null) { amount = amount.add(tAmount); } if (tAmount.toDouble() <= 0) { throw new LfwRuntimeException("预算单价必须大于0"); } // flag= false; } } } } } /* if(flag) { throw new LfwRuntimeException("表体行不能为空"); } */ reqMainVO.setBuget_amount(amount); } return super.write(billVO, userObject); }