Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java =================================================================== diff -u -r26388 -r26394 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 26388) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 26394) @@ -1083,7 +1083,54 @@ } /** * 获取申请科室Json + * 中山一院消毒供应项目ZSYY-262 + * 自定义发货的接收科室,只允许输入或扫描系统中的申领科室 */ + public void getApplicationDepartJson2() { + String spell = StrutsParamUtils.getPraramValue("spell", ""); + String departmentCode = StrutsParamUtils.getPraramValue("departmentCode", ""); + String withoutBaseOrg = StrutsParamUtils.getPraramValue( + "withoutBaseOrg", "true"); + List orgUnitList = new ArrayList(); + + //如果指定了要加载哪个科室,则直接返回即可 + if (StringTools.isNotBlank(departmentCode)) { + OrgUnit specifyDepartment = orgUnitManager.getByCode(departmentCode); + if (specifyDepartment != null) { + orgUnitList.add(specifyDepartment); + } + } else { + orgUnitList = orgUnitManager + .searchApplicationOrgUnitByRoomTypeSpellOrWbCode(spell, SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, true); + } + + List> list = new LinkedList<>(); + if (orgUnitList != null) { + for (int j = 0,size = orgUnitList.size(); j < size; j++) { + Map reMap = new HashMap<>(); + String orgCoding = orgUnitList.get(j).getOrgUnitCoding(); + String orgName = null; + if (StringUtils.equals(withoutBaseOrg, "true")) { + orgName = orgUnitList.get(j).getName(); + } else { + orgName = orgUnitList.get(j).getCurrentOrgUnitNames(); + orgName = orgName.replace("组织机构-", ""); + } + orgName = StringEscapeUtils.escapeEcmaScript(orgName); + reMap.put("id",orgCoding); + reMap.put("departCode",orgCoding); + reMap.put("name",orgName); + list.add(reMap); + } + } + PageEntity pageEntity = PageUtil.getPagePara(); + pageEntity.setNeedToEscape(true); + PageUtil.outPutResult(pageEntity, list); + } + + /** + * 获取申请科室Json + */ public void getApplicationDepartJson() { String spell = StrutsParamUtils.getPraramValue("spell", ""); String departmentCode = StrutsParamUtils.getPraramValue("departmentCode", ""); Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r24372 -r26394 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 24372) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 26394) @@ -1047,6 +1047,24 @@ hql += "order by src.sequence"; return objectDao.findByHql(hql,-1,-1); } + + @Override + public List searchApplicationOrgUnitByRoomTypeSpellOrWbCode(String simpleSpell, Integer roomType, boolean useSequence) { + if (BooleanUtils.isFalse(useSequence)){ + return this.searchOrgUnitByRoomTypeSpellOrWbCode(simpleSpell, roomType); + } + simpleSpell = simpleSpell.toUpperCase(); + String hql = "select po from OrgUnit po, SupplyRoomConfig src where po.orgUnitCoding = src.orgUnitCoding and src.supplyRoomType = " + + roomType + " and src.supplyRoomType = 3 "; + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(simpleSpell); + String searchMode = AcegiHelper.getLoginUser().getSearchMode(); + if (simpleSpell.trim().length() > 0) { + hql += m.find() ? " and po.name like '%" + simpleSpell + "%'" : SqlUtils.getSearchSQL(searchMode, simpleSpell); + } + hql += "order by src.sequence"; + return objectDao.findByHql(hql,-1,-1); + } @Override public void save(OrgUnit orgUnit) { Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r24372 -r26394 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 24372) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 26394) @@ -245,4 +245,16 @@ * @return */ public OrgUnit getSettleAccountsDepartment(String departmentCode); + + /** + * 获取申请科室 + * 中山一院消毒供应项目ZSYY-262 + * 自定义发货的接收科室,只允许输入或扫描系统中的申领科室 + * @param simpleSpell + * @param roomType + * @param useSequence + * @return + */ + List searchApplicationOrgUnitByRoomTypeSpellOrWbCode( + String simpleSpell, Integer roomType, boolean useSequence); } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java =================================================================== diff -u -r26083 -r26394 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 26083) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceTableManager.java (.../InvoiceTableManager.java) (revision 26394) @@ -20,6 +20,7 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; @@ -69,6 +70,13 @@ private ExceptionHandler exceptionHandler; + private SupplyRoomConfigManager supplyRoomConfigManager; + + public void setSupplyRoomConfigManager( + SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + public void setExceptionHandler(ExceptionHandler exceptionHandler) { this.exceptionHandler = exceptionHandler; } @@ -251,6 +259,25 @@ } return obj.toString(); } + + public String getApplicationOrgByBarcode (String barcode) { + JSONObject obj = new JSONObject(); + OrgUnit orgUnit = orgUnitManager.getOrgUnitByBarcode(barcode); + if (orgUnit != null) { + if (supplyRoomConfigManager.isApplicationDepartment(orgUnit.getOrgUnitCoding())) { + obj.put("success", true); + obj.put("name", orgUnit.getName()); + obj.put("orgUnitCoding", orgUnit.getOrgUnitCoding()); + } else { + obj.put("success", false); + obj.put("message", orgUnit.getName() + "不是申领科室!"); + } + }else{ + obj.put("success", false); + obj.put("message", "无此科室!"); + } + return obj.toString(); + } public Invoice getInvoiceByTousseInstanceId(String tousseInstanceId) { return invoiceManager.getInvoiceByTousseInstanceId(tousseInstanceId); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js =================================================================== diff -u -r26119 -r26394 --- ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js (.../customInvoiceForm.js) (revision 26119) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/customInvoiceForm.js (.../customInvoiceForm.js) (revision 26394) @@ -10,7 +10,7 @@ //申请科室Store var appDepartJsonStore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ - url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getApplicationDepartJson.do', + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getApplicationDepartJson2.do', method : 'POST' }), reader : new Ext.data.JsonReader({ @@ -722,7 +722,7 @@ render : function(p) { p.getEl().on('keypress',function(e) { if (e.getKey() == 13) {//回车键 - InvoiceTableManager.getOrgByBarcode( + InvoiceTableManager.getApplicationOrgByBarcode( top.Ext.getCmp('departBarcode').getValue(),function(orgStr) { if (orgStr != null) { var result = top.Ext.decode(orgStr);