Index: forgon-tools/src/main/java/com/forgon/tools/db/DatabaseUtil.java =================================================================== diff -u -r26350 -r26996 --- forgon-tools/src/main/java/com/forgon/tools/db/DatabaseUtil.java (.../DatabaseUtil.java) (revision 26350) +++ forgon-tools/src/main/java/com/forgon/tools/db/DatabaseUtil.java (.../DatabaseUtil.java) (revision 26996) @@ -15,6 +15,11 @@ */ public class DatabaseUtil { + /** + * varchar类型的最大长度(因为oracle数据库varchar最大长度为4000,超过4000就是long类型) + */ + public final static int varcharTypeMaxLength = 4000; + public static boolean isMySQL(String database) { return database.equalsIgnoreCase("MySQL"); } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r26920 -r26996 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 26920) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 26996) @@ -2990,8 +2990,26 @@ + "and operationRoom='"+ operationRoom +"' " + "and type in ('"+ InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3103,8 +3121,26 @@ "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" + "and type in ('"+ InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3282,8 +3318,26 @@ + "and operationRoom='"+ operationRoom +"' " + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3393,8 +3447,26 @@ "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3570,8 +3642,26 @@ + "and operationRoom='"+ operationRoom +"' " + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3680,8 +3770,26 @@ "where 1=1 and useRecord is not null and departCoding='"+ departCoding + "'" + "and type in ('"+ InvoicePlan.TYPE_COMBO_FORM +"') " + "and (endStatus is null) " + deliverStatusCondition - + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "')"); - if(recyclingApplication == null){ + + "and (recyclingStatus='" + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + "') order by po.id desc"); + //会否合并转换申请单(如果找到符合条件的待合并申请,且合并后的备注与条码长度不超4000就会合并) + boolean willMergeConvertApplication = false; + if(recyclingApplication != null){ + //1.申请单更改备注、增加器械包条码、设置最后转换的使用记录、及重新计算申请项 + String tousseBarcodes = recyclingApplication.getTousseBarcodes(); + if(StringUtils.isBlank(tousseBarcodes)){ + tousseBarcodes = ";"; + } + tousseBarcodes += tousseBarcodesOfUseRecord; + //新申请单的备注 + String newRemark = + getRemarkByRecyclingApplicationAndProjectConfig(recyclingApplication); + //判断合并申请单后的备注或包条码的长度是否大于最大长度。如果大于则创建新的申请单 + if(StringUtils.length(tousseBarcodes) < DatabaseUtil.varcharTypeMaxLength + && StringUtils.length(newRemark) < DatabaseUtil.varcharTypeMaxLength){ + willMergeConvertApplication = true; + } + } + if(!willMergeConvertApplication){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java =================================================================== diff -u -r26619 -r26996 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 26619) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 26996) @@ -39,6 +39,7 @@ import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.idpredicate.IDAble; import com.forgon.disinfectsystem.version.VersionAble; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; @@ -1016,7 +1017,7 @@ this.currentRemark = currentRemark; } - @Column(length = 4000) + @Column(length = DatabaseUtil.varcharTypeMaxLength) public String getRemark() { return remark; } @@ -1339,7 +1340,7 @@ this.borrowReviewTime = borrowReviewTime; } - @Column(length = 4000) + @Column(length = DatabaseUtil.varcharTypeMaxLength) public String getTousseBarcodes() { return tousseBarcodes; }