Index: forgon-tools/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r41194 -r41367 --- forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 41194) +++ forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 41367) @@ -105,7 +105,8 @@ public static final String TEST_NG= "testNG"; /** - * 消息提示方式-顶端悬浮提示 + * 消息提示方式-顶端悬浮提示(对应pda端的Toast提示) + * 默认为此种提示方式 */ public static final int NOTICE_MODE_TIPS = 1; Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r41361 -r41367 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 41361) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 41367) @@ -551,6 +551,8 @@ }else if(targetException instanceof InvoiceProblemGoodsException){ InvoiceProblemGoodsException invoiceProblemGoodsException = (InvoiceProblemGoodsException)targetException; retException = new InvoiceProblemGoodsException(invoiceProblemGoodsException.getMessage(),invoiceProblemGoodsException.getProblemGoodsData()); + }else if(targetException instanceof SystemException){ + retException = new SystemException(targetException.getMessage(),((SystemException)targetException).getNoticeMode()); }else{ retException = new RuntimeException(targetException.getMessage()); } @@ -3813,8 +3815,11 @@ if (StringUtils.isBlank(departCode)) { return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } - - Collection sterileRecordIds = new ArrayList(); + int size = CollectionUtils.size(sterileRecordIdsJSONArray); + if (size == 0) { + return JSONUtil.buildErrorMsgJsonResult("缺失参数sterileRecordIds"); + } + List sterileRecordIds = new ArrayList(); for (int i = 0; i < sterileRecordIdsJSONArray.size(); ++i) { sterileRecordIds.add(sterileRecordIdsJSONArray.optLong(i)); } @@ -3824,6 +3829,16 @@ if(CssdUtils.getSystemSetConfigByNameBool("enableCompletionSterilizationRequiresRegistrationQualityMonitoringRecords")){ throw new SystemException("已开启登记质量监测功能,请到电脑端完成灭菌。"); } + if (CssdUtils.getSystemSetConfigByNameBool("enableSterilizationCompletionDeterminationViaEquipmentInterface")) { + if (size > 1) { + throw new SystemException("一次只能选一条灭菌记录"); + } + } + boolean enableSterilizationCompletionDeterminationViaEquipmentInterface = CssdUtils.getSystemSetConfigByNameBool("enableSterilizationCompletionDeterminationViaEquipmentInterface", false); + boolean result = sterilizationRecordManager.checkSterilizationFailure(sterileRecordIds.get(0), enableSterilizationCompletionDeterminationViaEquipmentInterface); + if(!result){ + throw new SystemException("本次记录存在温度或压强不在合格范围内,请登记质量监测记录。",Constants.NOTICE_MODE_ALERT); + } String finishOperator = AcegiHelper.getLoginUserFullName(); boolean sterilizationRecordFinishConfirm = CssdUtils.getSystemSetConfigByNameBool("sterilizationRecordFinishConfirm"); try{ Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r40389 -r41367 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 40389) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 41367) @@ -2320,6 +2320,7 @@ String sterileEndTime = StrutsParamUtils.getPraramValue("sterileEndTime", ""); String applyDate = StrutsParamUtils.getPraramValue("applyDate", ""); String tousseTypes = StrutsParamUtils.getPraramValue("tousseTypes", ""); + String waitInvoiceGoodsGridData = StrutsParamUtils.getPraramValue("waitInvoiceGoodsGridData", ""); params.put("mode", mode); params.put("departCode", departCode); @@ -2332,6 +2333,7 @@ params.put("applyDate", applyDate); params.put("tousseTypes", tousseTypes); + params.put("waitInvoiceGoodsGridData", waitInvoiceGoodsGridData); logger.debug("invoiceAction.getTousseInstancesForAuxiliaryInvoice beginTimeMillis=" + System.currentTimeMillis()); JSONArray jsonArray = invoiceManager.getTousseInstancesForAuxiliaryInvoice(params); logger.debug("invoiceAction.getTousseInstancesForAuxiliaryInvoice endTimeMillis=" + System.currentTimeMillis()); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js =================================================================== diff -u -r39680 -r41367 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 39680) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 41367) @@ -2214,6 +2214,8 @@ recyclingapplicationStore1.removeAll(); recyclingapplicationStore1.on("beforeload", function (thiz, options) { + //待发货明细加载完之前,待发物品按钮灰掉,防止该按钮被点击(默认设置了禁用,所以后面这句可以不用,加载完成后恢复启用即可) + //top.Ext.getCmp("waitInvoiceGoodsButton").disable();//setDisabled thiz.baseParams["orgUnitCoding"] = orgUnitCoding; //后台对科室编码的参数过滤很多用的departCode这个参数,所以请求时加上此参数 thiz.baseParams["departCode"] = orgUnitCoding; @@ -2240,6 +2242,8 @@ }); recyclingapplicationStore1.on("load", function (thiz, options) { + //待发货明细加载完之后,待发物品按钮恢复启用,点该按钮时传递"待发货物品名称"的参数 + top.Ext.getCmp("waitInvoiceGoodsButton").enable(); if (top.Ext.getCmp("sendOutGoodsDetail")) { top.Ext.getCmp("sendOutGoodsDetail").getEl().unmask(); } @@ -3580,16 +3584,18 @@ } }, { text: '辅助发货', - hidden: openMode == INVOICE_FORM_OPEN_MODE_CLICKRETURNRECORD || assistDelivery || !sstsConfig.showAuxiliaryInvoiceBtn, + //hidden: openMode == INVOICE_FORM_OPEN_MODE_CLICKRETURNRECORD || assistDelivery || !sstsConfig.showAuxiliaryInvoiceBtn, handler: function () { closeInvoiceFormWindow(); openAuxiliaryInvoiceForm(orgUnitCoding, depart, invoicePlanId); } }, { text: '待发物品', + id: 'waitInvoiceGoodsButton', + disabled: true, handler: function () { top.Ext.getCmp("recyclingApplicationWin").hide(); - openCanInvoiceTousseListForm(orgUnitCoding, depart, invoicePlanId); + openCanInvoiceTousseListForm(orgUnitCoding, depart, invoicePlanId,getWaitInvoiceGoodsGridData()); } }] }); @@ -4020,6 +4026,15 @@ } top.Ext.getCmp('sendOutGoodsStoreData').setValue(JSON.stringify(submitItems)); } +//获取待发的物品 +function getWaitInvoiceGoodsGridData() { + var waitInvoiceGoodsItems = []; + for (var i = 0; i < recyclingapplicationStore1.getCount(); i++) { + var record = recyclingapplicationStore1.getAt(i); + waitInvoiceGoodsItems.push(record.data); + } + return waitInvoiceGoodsItems; +} function addComboTousseItem(goods, submitItems) { var tousseInstancesBelongToThisComboTousse = goods.tousseInstancesBelongToThisComboTousse; for (var i = 0; i < tousseInstancesBelongToThisComboTousse.length; i++) { Index: forgon-tools/src/main/java/com/forgon/exception/SystemException.java =================================================================== diff -u -r20154 -r41367 --- forgon-tools/src/main/java/com/forgon/exception/SystemException.java (.../SystemException.java) (revision 20154) +++ forgon-tools/src/main/java/com/forgon/exception/SystemException.java (.../SystemException.java) (revision 41367) @@ -1,10 +1,22 @@ package com.forgon.exception; + +import com.forgon.Constants; + /** * 系统自定义异常 * @author kzh * */ public class SystemException extends RuntimeException { + + /** + * 提示方式(FSEYEQ-36 用于pda端提示方式) + */ + private int noticeMode = Constants.NOTICE_MODE_TIPS; + + public int getNoticeMode() { + return noticeMode; + } private static final long serialVersionUID = -1174524132605727480L; @@ -15,4 +27,9 @@ public SystemException(String message,Throwable cause){ super(message,cause); } + + public SystemException(String message,int noticeMode){ + super(message); + this.noticeMode = noticeMode; + } } Index: ssts-web/src/main/webapp/disinfectsystem/invoice/canInvoiceTousseList.js =================================================================== diff -u -r27664 -r41367 --- ssts-web/src/main/webapp/disinfectsystem/invoice/canInvoiceTousseList.js (.../canInvoiceTousseList.js) (revision 27664) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/canInvoiceTousseList.js (.../canInvoiceTousseList.js) (revision 41367) @@ -36,9 +36,10 @@ * @param orgUnitCoding 科室编码 * @param depart 科室名称 * @param invoicePlanId 发货计划id + * @param waitInvoiceGoodsGridData 待发货物品 */ var canInvoiceTousseListFormOpened = false; -function openCanInvoiceTousseListForm(orgUnitCoding,depart,invoicePlanId) { +function openCanInvoiceTousseListForm(orgUnitCoding,depart,invoicePlanId,waitInvoiceGoodsGridData) { if(canInvoiceTousseListFormOpened){ return; } @@ -173,6 +174,7 @@ var tousseTypes = '普通器械包,敷料包,外来器械包,消毒物品'; recyclingapplicationStore.baseParams['tousseTypes'] = tousseTypes; + recyclingapplicationStore.baseParams['waitInvoiceGoodsGridData'] = JSON.stringify(waitInvoiceGoodsGridData); }); recyclingapplicationStore.load(); Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r41117 -r41367 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 41117) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 41367) @@ -15386,6 +15386,8 @@ String departCode = JSONUtil.optString(params, "departCode", null); //SZSLGZXYY-21 新增的条件:物品来源科室下拉选框如果所选为"仅申请科室"时,则传对应的科室编码,即与orgUnitCoding参数的值一致,通常用于过滤包实例用 String departCoding = JSONUtil.optString(params, "departCoding", null); + //待发货物品数据(从科室的发货计划页面传递过来) + String waitInvoiceGoodsGridData = params.optString("waitInvoiceGoodsGridData"); //包定义id集合(不包含消毒物品) Set tousseDefinitionIdSet = new HashSet(); //消毒物品祖先包定义id对应的材料md5集合的map @@ -15601,6 +15603,25 @@ } //只查询包定义的"隐藏辅助发货"不为"是"的包实例(ZSYY-265 辅助发货功能改造).对于消毒物品,包实例对应的包定义的祖先包定义的隐藏辅助发货不为是 tousseInstanceSql.append(" and ((po.tousseDefinition.tousseType <> '"+ TousseDefinition.PACKAGE_TYPE_DISINFECTION +"' and (po.tousseDefinition.hideAuxiliaryInvoice is null or po.tousseDefinition.hideAuxiliaryInvoice <> '"+ Constants.STR_YES +"')) or (po.tousseDefinition.tousseType = '"+ TousseDefinition.PACKAGE_TYPE_DISINFECTION +"' and po.tousseDefinition.ancestorID in (select id from "+ TousseDefinition.class.getSimpleName() +" td where td.hideAuxiliaryInvoice is null or td.hideAuxiliaryInvoice <> '"+ Constants.STR_YES +"')) ) "); + //按名称对包实例进行过滤 + if(StringUtils.isNotBlank(waitInvoiceGoodsGridData)){ + JSONArray waitInvoiceGoodsGridDataJSONArray = JSONArray.fromObject(waitInvoiceGoodsGridData); + if(CollectionUtils.isNotEmpty(waitInvoiceGoodsGridDataJSONArray)){ + //List tousseNameList = waitInvoiceGoodsGridDataJSONArray.stream().map(jsonObject -> ((JSONObject)jsonObject).optString("name")).collect(Collectors.toList()); + List tousseNameList = new ArrayList(); + for (int i = 0; i < waitInvoiceGoodsGridDataJSONArray.size(); i++) { + JSONObject jsonObject = waitInvoiceGoodsGridDataJSONArray.optJSONObject(i); + String goodsType = jsonObject.optString("goodsType"); + if(StringUtils.equals(goodsType, TousseDefinition.PACKAGE_TYPE_INSIDE) + || StringUtils.equals(goodsType, TousseDefinition.PACKAGE_TYPE_DISINFECTION) + || StringUtils.equals(goodsType, TousseDefinition.PACKAGE_TYPE_DRESSING) + || StringUtils.equals(goodsType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + tousseNameList.add(jsonObject.optString("name")); + } + } + tousseInstanceSql.append(String.format(" and %s ", SqlUtils.getStringFieldInLargeCollectionsPredicate("po.tousseName", tousseNameList))); + } + } List tousseInstanceList = tousseInstanceManager .getBySql(tousseInstanceSql.toString()); if (CollectionUtils.isNotEmpty(tousseInstanceList)) { Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServerInterfaceImpl.java =================================================================== diff -u -r38253 -r41367 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServerInterfaceImpl.java (.../ServerInterfaceImpl.java) (revision 38253) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServerInterfaceImpl.java (.../ServerInterfaceImpl.java) (revision 41367) @@ -62,9 +62,15 @@ this.serviceManager = serviceManager; } - private static String buildErrorMsgJsonResult(String errorMsg) { - return new JSONStringer().object().key("success").value(false) - .key("error").value(errorMsg).key(JSONUtil.JSON_KEY_MESSAGE).value(errorMsg).endObject().toString(); + private static String buildErrorMsgJsonResult(Exception e) { + String errorMsg = e.getMessage(); + JSONObject result = JSONUtil.buildJsonObject(false,errorMsg); + if(e instanceof SystemException){ + result.put(JSONUtil.JSON_KEY_NOTICEMODE, ((SystemException)e).getNoticeMode()); + } + /*return new JSONStringer().object().key("success").value(false) + .key("error").value(errorMsg).key(JSONUtil.JSON_KEY_MESSAGE).value(errorMsg).endObject().toString();*/ + return result.toString(); } @Override public String invoke(String jsonParams) { @@ -122,17 +128,17 @@ result = obj.toString(); } catch (SystemException e) { // e.printStackTrace(); - result = buildErrorMsgJsonResult(e.getMessage()); + result = buildErrorMsgJsonResult(e); } catch (RuntimeException e) { // e.printStackTrace(); - result = buildErrorMsgJsonResult(e.getMessage()); + result = buildErrorMsgJsonResult(e); } catch (Exception e) { // e.printStackTrace(); - result = buildErrorMsgJsonResult(e.getMessage()); + result = buildErrorMsgJsonResult(e); }finally{ afterRequest(); } - //logger.info("WebService response:\r\n" + result); + logger.info("WebService response:\r\n" + result); return result; }