diff --git a/pu/src/private/nc/impl/pu/dhjyd/dhjydmaster/DhjydMasterVOServiceImpl.java b/pu/src/private/nc/impl/pu/dhjyd/dhjydmaster/DhjydMasterVOServiceImpl.java index daba203..f9d7b4e 100644 --- a/pu/src/private/nc/impl/pu/dhjyd/dhjydmaster/DhjydMasterVOServiceImpl.java +++ b/pu/src/private/nc/impl/pu/dhjyd/dhjydmaster/DhjydMasterVOServiceImpl.java @@ -36,6 +36,7 @@ import nc.vo.pub.lang.UFDateTime; import nc.vo.pub.lang.UFDouble; import nc.vo.pub.pf.BillStatusEnum; import nc.vo.pubapp.pattern.pub.MathTool; +import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.scmf.ic.mbatchcode.BatchcodeVO; import nccloud.framework.core.exception.ExceptionUtils; @@ -345,6 +346,7 @@ public class DhjydMasterVOServiceImpl extends ServiceSupport implements IDhjydMa public AggDhjydMasterVO[] deleteAggDhjydMasterVOs(Map tsMap) throws BusinessException { AggDhjydMasterVO[] vos = dao.listByPk(AggDhjydMasterVO.class, tsMap.keySet().toArray(new String[0])); validate(vos, tsMap); + validateStatusBeforeDel(vos); String pk_group = InvocationInfoProxy.getInstance().getGroupId(); Arrays.stream(vos).forEach(vo -> { String code = (String) getMainVO(vo).getAttributeValue("code"); @@ -389,6 +391,49 @@ public class DhjydMasterVOServiceImpl extends ServiceSupport implements IDhjydMa } } + // 到货检验单删除前校验审核状态和是否存在下游的不合格检验单 + private void validateStatusBeforeDel(AggDhjydMasterVO[] vos) throws BusinessException { + String error = ""; // 错误信息 + for (int i = 0; i < vos.length; i++) { + AggDhjydMasterVO vo = vos[i]; + DhjydMasterVO mainVo = vo.getParentVO(); + String transtype = mainVo.getTranstype(); + String srcbillid = mainVo.getSrcbillid();// 到货单主键 + if (srcbillid == null || "".equals(srcbillid)) { + continue; + } + String pk_chekbill_h = mainVo.getPk_chekbill_h(); + // 类型是到货检验单的判断 + if ("DHJY-Cxx-01".equals(transtype)) { + // 判断是否存在相同来源的检验单已审核,不包含自身 + SqlBuilder countSql = new SqlBuilder(); + countSql.append("select count(1) from hfdl_chekbill_h "); + countSql.append("where nvl(dr, 0) = 0"); + countSql.append(" and approvestatus = 1"); + countSql.append(" and srcbillid = '" + srcbillid + "'"); + countSql.append(" and pk_chekbill_h != '" + pk_chekbill_h + "'"); + Integer statusNum = (Integer) getBaseDAO().executeQuery(countSql.toString(), new ColumnProcessor()); + if (statusNum > 0) { + error += "存在相同来源的到货检验单已审批,不能删除!\n"; + break; + } + countSql.reset(); + countSql.append("select count(1) from hfdl_chekbill_h "); + countSql.append("where nvl(dr, 0) = 0"); + countSql.append(" and transtype = 'DHJY-Cxx-02'"); + countSql.append(" and srcbillid = '" + pk_chekbill_h + "'"); + Integer billNum = (Integer) getBaseDAO().executeQuery(countSql.toString(), new ColumnProcessor()); + if (billNum > 0) { + error += "存在关联的不合格检验单,不能删除!\n"; + break; + } + } + } + if (!"".equals(error)) { + throw new BusinessException(error); + } + } + @Override public T[] loadTreeData(Class clazz, Map userJson) throws BusinessException { String condition = "dr = 0 ";