Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java =================================================================== diff -u -r12914 -r13006 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 12914) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 13006) @@ -28,6 +28,7 @@ import com.forgon.tools.SpringBeanManger; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.ForgonStringUtils; import com.forgon.tools.util.SqlUtils; public class DiposableGoodsTableManager { @@ -44,6 +45,8 @@ private WareHouseManager wareHouseManager; + private ObjectDao objectDao; + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { this.dateQueryAdapter = dateQueryAdapter; } @@ -69,6 +72,11 @@ public void setWareHouseManager(WareHouseManager wareHouseManager) { this.wareHouseManager = wareHouseManager; } + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + /** * 查找物品库存 * @param parameterMap @@ -503,4 +511,19 @@ } return ""; } + // 找出下一个外部编码 + public String getNextExternalCodeOfDisposableGoods(String type) { + String code = ""; + String sql = String + .format(" where po.externalCode=(select max(d.externalCode) from %s d where %s)", + DisposableGoods.class.getSimpleName(), + SqlUtils.getStringFieldPredicate("d.type", type)); + DisposableGoods disposableGoods = (DisposableGoods) objectDao.getBySql( + DisposableGoods.class.getSimpleName(), sql); + if (disposableGoods != null) { + code = ForgonStringUtils.increaseNumericalSuffix( + disposableGoods.getExternalCode(), 1); + } + return code; + } } Index: ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js =================================================================== diff -u -r12799 -r13006 --- ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js (.../config.js) (revision 12799) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzfdzl/config.js (.../config.js) (revision 13006) @@ -44,6 +44,6 @@ // 隐藏申请单搜索出来的一次性物品的参考价 hideDiposableGoodsPrice : true, // 显示一次性物品的外部编码,申请时 - showExternalCodeOfDisposableGoods : true - + showExternalCodeOfDisposableGoods : true, + autoFillExternalCodeOfDisposableGoods: true // 自动填写一次性物品的外部编码 } \ No newline at end of file Index: forgon-tools/src/main/java/com/forgon/tools/util/ForgonStringUtils.java =================================================================== diff -u -r12703 -r13006 --- forgon-tools/src/main/java/com/forgon/tools/util/ForgonStringUtils.java (.../ForgonStringUtils.java) (revision 12703) +++ forgon-tools/src/main/java/com/forgon/tools/util/ForgonStringUtils.java (.../ForgonStringUtils.java) (revision 13006) @@ -4,6 +4,8 @@ */ package com.forgon.tools.util; +import org.apache.commons.lang3.StringUtils; + /** * @author jeffli * @@ -153,4 +155,37 @@ } return digit; } + + public static boolean isDigital(char c){ + if(c <= '9' && c >='0'){ + return true; + } + return false; + } + /** + * 将字符串后的数字+1 + */ + public static String increaseNumericalSuffix(String str,int increment){ + if(StringUtils.isBlank(str)){ + return str; + } + int len = str.length(); + StringBuilder digitalStr = new StringBuilder(len); + String nonDigitalStr = str; + int lastDigitalCharIndex = -1; + for(int i=len-1;i>=0;--i){ + char c = str.charAt(i); + if(isDigital(c)){ + lastDigitalCharIndex = i; + digitalStr.insert(0, c); + }else{ + break; + } + } + if(lastDigitalCharIndex >= 0){ + nonDigitalStr = str.substring(0, lastDigitalCharIndex); + return nonDigitalStr + (Integer.parseInt(digitalStr.toString())+increment); + } + return str; + } } Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.jsp =================================================================== diff -u -r12738 -r13006 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.jsp (.../diposableGoodsView.jsp) (revision 12738) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.jsp (.../diposableGoodsView.jsp) (revision 13006) @@ -34,6 +34,7 @@ + Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.js =================================================================== diff -u -r13004 -r13006 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.js (.../diposableGoodsView.js) (revision 13004) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.js (.../diposableGoodsView.js) (revision 13006) @@ -3,8 +3,9 @@ var root; var formObj; var formWindow; - +var autoFillExternalCodeOfDisposableGoods = false; function addDiposableGoods(id) { + autoFillExternalCodeOfDisposableGoods = getBoolValueFromJs('sstsConfig.autoFillExternalCodeOfDisposableGoods',autoFillExternalCodeOfDisposableGoods); var dType = document.getElementById("parm_s_type").value; var diposableGooodsStore = new Ext.data.SimpleStore({ fields : [ 'typeName' ], @@ -423,6 +424,14 @@ }); formWindow.show(); diposableGooodsStore.load(); + // 如果类型不为空,并且配置为自动增加外部编码,那么获取下一个编码,并且填上 + if(!isUndefinedOrNullOrEmpty(dType) && autoFillExternalCodeOfDisposableGoods){ + DiposableGoodsTableManager.getNextExternalCodeOfDisposableGoods(dType,function(externalCode){ + if(!isUndefinedOrNullOrEmpty(externalCode)){ + top.Ext.getCmp("externalCode").setValue(externalCode); + } + }); + } if(id != 0){ godownEntryItemStore.load(); }