Index: forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java =================================================================== diff -u -r12349 -r12640 --- forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 12349) +++ forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 12640) @@ -39,7 +39,20 @@ } return ""; } - + /** + * 生成日期时间的区间查询条件,可以连接到and 或者 where 子句后面 + * @param property po的属性字符串。如po.time + * @param startDateTime 开始的日期时间 + * @param endDateTime 结束的日期时间 + * @return + */ + public String dateAreaSql(String property,String startDateTime,String endDateTime){ + String sql = " ( 1= 1 )"; + if(StringUtils.isNotBlank(startDateTime) && StringUtils.isNotBlank(endDateTime)){ + sql = " ( " + property + " between " + dateAdapter(startDateTime) + " and " + dateAdapter(endDateTime) + " ) "; + } + return sql; + } public String dateToVarchar(String property) { String database = dbConnection.getDatabase(); if (StringUtils.isNotBlank(property)) { Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r12613 -r12640 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 12613) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 12640) @@ -398,6 +398,7 @@ {hidden :SSTS_GodownEntryStatistic,text:"消耗物品月盘点统计报表",href:WWWROOT+'/disinfectsystem/reportforms/disposableGoodsInventoryView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_ReturnGoodsDetailReport,text:"退货查询报表",href:WWWROOT+'/disinfectsystem/reportforms/returnGoodsDetailView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_GodownEntryStatistic,text:"入库物品统计报表",href:WWWROOT+'/disinfectsystem/reportforms/godownEntryStatisticView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_GodownEntryStatistic,text:"入库物品统计报表(按供应商)",href:WWWROOT+'/disinfectsystem/reportforms/godownEntrySummaryView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_GodownEntryStatistic,text:"入库物品明细统计报表",href:WWWROOT+'/disinfectsystem/reportforms/godownEntryDetailStatisticView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_GoodsDistributeReportChart,text:"物品发放分布饼图",href:WWWROOT+'/disinfectsystem/reportforms/goodsDistributeReportChartView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_GodownEntryStatistic,text:"一次性物品发货量对比报表",href:WWWROOT+'/disinfectsystem/reportforms/invoiceAmountContrastChartView.jsp',hrefTarget:linkTarget,leaf:true}, Index: forgon-tools/src/main/java/com/forgon/tools/json/JsonDefaultValueProcessor.java =================================================================== diff -u --- forgon-tools/src/main/java/com/forgon/tools/json/JsonDefaultValueProcessor.java (revision 0) +++ forgon-tools/src/main/java/com/forgon/tools/json/JsonDefaultValueProcessor.java (revision 12640) @@ -0,0 +1,11 @@ +package com.forgon.tools.json; + +import net.sf.json.JSONNull; +import net.sf.json.processors.DefaultValueProcessor; + +public class JsonDefaultValueProcessor implements DefaultValueProcessor { + @Override + public Object getDefaultValue(Class arg0) { + return JSONNull.getInstance(); + } +} Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/materialMissTotalView.js =================================================================== diff -u -r12331 -r12640 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/materialMissTotalView.js (.../materialMissTotalView.js) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/materialMissTotalView.js (.../materialMissTotalView.js) (revision 12640) @@ -5,6 +5,7 @@ function reloadReport(){ var startDate= Ext.getCmp('startDate').getRawValue(); var endDate= Ext.getCmp('endDate').getRawValue(); + var departSearch = Ext.getCmp('departSearch').getRawValue(); var goodsName = Ext.getCmp('goodsName').getRawValue(); goodsName = goodsName.replace(/\%/g,'%25'); goodsName = goodsName.replace('#','%23'); @@ -13,15 +14,47 @@ return; } + if(departSearch != null && departSearch.length > 0){ + var array = departSearch.split("-"); + departSearch = array[array.length-1]; + } + myMask = new Ext.LoadMask(Ext.getBody(), { msg: '正在加载,请稍候!', removeMask: true }); myMask.show(); window.open(WWWROOT + "/jasperreports/jasperreportsAction!createJasperPrint.do?jasperreportName=materialMissTotalView.jasper&reportName=materialMissTotalView&startDay=" + startDate + "&endDay=" +endDate - + "&goodsName=" +goodsName,'thisIframe', '_self'); + + "&departSearch=" + departSearch + "&goodsName=" +goodsName,'thisIframe', '_self'); } + var departRecord = Ext.data.Record.create([ + {name : 'id'}, + {name : 'name'} + ]); + + var departJsonStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },departRecord + ), + listeners:{ + load : function(thiz,records,options){ + if(records.length != 1){ + //thiz.insert(0, new departRecord({id:"-1",name:"全部"})); + //Ext.getCmp('departSearch').setValue("全部"); + }else{ + Ext.getCmp('departSearch').setValue(records[0].data.name); + } + } + } + }); + departJsonStore.load(); + var tousseAndDiposableGoodsStore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : WWWROOT + '/disinfectSystem/baseData/materialDefinitionAction!getMaterialDefinitionData.do', @@ -84,6 +117,29 @@ anchor : '100%' }] } ,{ + columnWidth : .2, + layout : 'form', + labelWidth : 60, + items : [{ + xtype : 'combo', + id : 'departSearch', + name : 'departSearch', + queryParam : 'spell', + fieldLabel : '科室', + minChars : 0, + valueField : 'name', + displayField : 'name', + store : departJsonStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + anchor : '95%', + allowBlank : true + }] + + },{ columnWidth : .3, layout : 'form', labelWidth : 60, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r12596 -r12640 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 12596) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 12640) @@ -685,6 +685,18 @@ String goodsName = StrutsParamUtils.getPraramValue("goodsName", "");; String deptName = StrutsParamUtils.getPraramValue("deptName", "");; return jasperReportManager.getForeignTousseApplicationReport(startDay, endDay, goodsName, deptName); + }else if("godownEntrySummary".equals(reportName)){ //以供应商分类的一次性物品入库统计报表 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String timeStart = StrutsParamUtils.getPraramValue("timeStart", + sdf.format(new Date())); + String timeEnd = StrutsParamUtils.getPraramValue("timeEnd", + sdf.format(new Date())); + + timeStart = timeStart + " 00:00:00"; + timeEnd = timeEnd + " 23:59:59"; + + String suplierName = StrutsParamUtils.getPraramValue("suplierName", ""); + return jasperReportManager.getGodownSummaryReport(timeStart, timeEnd, suplierName); } return null; } @@ -1088,6 +1100,15 @@ String startDay = StrutsParamUtils.getPraramValue("startDay", ""); String endDay = StrutsParamUtils.getPraramValue("endDay", ""); map.put("title", "使用记录录入明细统计报表("+startDay+"~"+endDay+")"); + }else if("godownEntrySummary".equals(reportName)){ + String startDay = StrutsParamUtils.getPraramValue("timeStart", ""); + String endDay = StrutsParamUtils.getPraramValue("timeEnd", ""); + String title = StrutsParamUtils.getPraramValue("title", ""); + String orgUnit = StrutsParamUtils.getPraramValue("orgUnit", ""); + map.put("title", title); + map.put("timeStart", startDay); + map.put("timeEnd", endDay); + map.put("orgUnit", orgUnit); } return map; @@ -2000,8 +2021,13 @@ sdf.format(new Date())); String endDay = StrutsParamUtils.getPraramValue("endDay", sdf.format(new Date())); + String departSearch = StrutsParamUtils.getPraramValue("departSearch", + ""); String goodsName = StrutsParamUtils.getPraramValue("goodsName", ""); String sql = ""; + if (StringUtils.isNotBlank(departSearch) && !departSearch.equals("全部")) { + sql += " and depart='" + departSearch + "'"; + } goodsName = goodsName.replaceAll("%25", "%"); goodsName = goodsName.replaceAll("%23", "#"); if (StringUtils.isNotBlank(goodsName)) { Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r12562 -r12640 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 12562) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 12640) @@ -827,7 +827,17 @@ + + + + + + + + + Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordToJson.java =================================================================== diff -u --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordToJson.java (revision 0) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordToJson.java (revision 12640) @@ -0,0 +1,80 @@ +package com.forgon.disinfectsystem.useRecord.service; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import net.sf.json.JsonConfig; +import net.sf.json.util.JSONStringer; +import net.sf.json.util.PropertyFilter; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.tools.json.DateJsonValueProcessor; +import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.json.JsonDefaultValueProcessor; +import com.forgon.tools.json.JsonPropertyFilter; + +/** + * 将使用记录转换为json对象 + * @author kzh + * + */ +public class UseRecordToJson { + /** + * 将使用记录转换为json对象 + * @param useRecord + * @return + */ + public static String converUseRecordPoToJson(UseRecord useRecord,TousseInstanceManager tousseInstanceManager){ + if(useRecord == null){ + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); + } + JsonConfig config = new JsonConfig(); + // 这段代码可以解决Integer、Double类型的被默认转换为0的问题,这样null将替换0成为默认转换值.其它类型的设置类似. + config.registerDefaultValueProcessor(Integer.class,new JsonDefaultValueProcessor()); + config.registerDefaultValueProcessor(Double.class,new JsonDefaultValueProcessor()); + config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd HH:mm")); + + PropertyFilter propertyFilter = new JsonPropertyFilter() { + @Override + public boolean apply(Object source, String name, Object value) { + List inCludesList = Arrays.asList(new String[] { + "id", "treatmentNum", "hospitalNum", "patientName", "patientIDCard", + "patientAge", "doctorName", "operation", "editable"}); + if (inCludesList.contains(name)) { + return false; + } + return true; + } + }; + config.setJsonPropertyFilter(propertyFilter); + + JSONObject useRecordJson = JSONObject.fromObject(useRecord, config); + JSONArray tousseInstanceJsonArray = new JSONArray(); + + List tousseInstanceList = tousseInstanceManager + .findTousseInstanceListByUseRecordId(useRecord.getId()); + + if(tousseInstanceList != null && !tousseInstanceList.isEmpty()){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + for (TousseInstance tousseInstance : tousseInstanceList) { + JSONObject tousseInstanceJson = new JSONObject(); + tousseInstanceJson.put("barcode", tousseInstance.getBarcode()); + tousseInstanceJson.put("tousseName", + tousseInstance.getShowTousseName()); + tousseInstanceJson.put("validUtil", + sdf.format(tousseInstance.getValidUntil())); + tousseInstanceJsonArray.add(tousseInstanceJson); + } + } + + return new JSONStringer().object().key("useRecord") + .value(useRecordJson).key("tousseInstances") + .value(tousseInstanceJsonArray).endObject().toString(); + } +} Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.js (revision 12640) @@ -0,0 +1,264 @@ +var entityName = "入库物品统计报表(按供应商)"; +var grid; + +var reportParamTitle = '入库物品统计报表'; +var reportParamAuthor = username; +var reportParamSheetId = ''; +var reportParamOrgUnit = orgUnit; +var reportParamUnit = '元'; + +var diposableGoodsStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/diposableGoodsAction!getMaterialAndDiposableGoodsData.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + totalProperty : 'totalCount', + root : 'data' + }, [ + {name : 'id',mapping : 'id'}, + {name : 'name',mapping : 'name'} + ]) +}); + +var supplierStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplierAction!getSupplierData.do?supplierType='+encodeURI(supplier), + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + totalProperty : 'totalCount', + root : 'data' + }, [ + {name : 'id',mapping : 'id'}, + {name : 'name',mapping : 'name'} + ]) +}); +function formatDate(date){ + if(date instanceof Date){ + var day=date.getDate() + var month=date.getMonth() + 1 + var year=date.getFullYear() + return year + '-' + month + '-' + day; + } + return date; +} +function getReportUrl(){ + var timeStart= Ext.getCmp('timeStart').value; + var timeEnd= Ext.getCmp('timeEnd').value; + var suplierName = Ext.getCmp('suplierName').value; + var paramStr = "jasperreportName=godownEntrySummary.jasper" + "&reportName=godownEntrySummary"; + if(timeStart && timeEnd){ + paramStr += "&timeStart=" + formatDate(timeStart); + paramStr += "&timeEnd=" + formatDate(timeEnd); + } + if(suplierName){ + paramStr += "&suplierName=" + suplierName; + } + + paramStr += "&title=" + reportParamTitle; + paramStr += "&orgUnit=" + orgUnit; + /*suplierName = suplierName.replace(/\%/g,'%25'); + suplierName = suplierName.replace('#','%23');*/ + + var reportUrl = WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?" +paramStr + + + /*"&author=" + reportParamAuthor + + "&orgUnit=" + reportParamOrgUnit + + "&sheetId=" + reportParamSheetId + + "&unit=" + reportParamUnit;*/ + return reportUrl; +} +var myMask; +Ext.onReady(function() { + Ext.QuickTips.init(); + // 记录cookie(3步) + + function reloadReport(){ + + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + window.open(getReportUrl(), 'thisIframe','_self'); + } + + Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function() {}; + + var dt = new Date(); + var year = dt.getFullYear(); + var nextMonth = dt.getMonth() + 1; + var nextMonthFirstDay = new Date(year,nextMonth,1); + //var monthLastDay = new Date(nextMonthFirstDay.getTime() - 1000*60*60*24); + var currentDay = dt; + var startDayOfMonth = dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/01"; + + var form = new Ext.form.FormPanel({ + title : entityName, + region : 'north', + labelAlign : 'right', + buttonAlign : 'center', + collapsible : true, + collapseMode : 'mini', + split : true, + border : 0, + frame : true, + bodyStyle : 'padding:0px auto;margin:0px', + height : 105, + items : [{ + layout : 'column', + height : 50, + items : [{ + layout : 'form', + labelWidth : 60, + columnWidth : .2, + items : [{ + columnWidth : .5, + layout : 'form', + labelWidth : 70, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : '开始日期', + id : 'timeStart', + name : 'timeStart', + editable : false, + format : 'Y-m-d', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : false, + anchor : '95%', + value: new Date(startDayOfMonth), + listeners : { + specialkey : function(field, e) { + if (e.getKey() == Ext.EventObject.ENTER) { + var isOK = field.validate(); + if(isOK){ + var value = field.getValue(); + field.setValue(value); + var endTime = Ext.getCmp('timeEnd'); + endTime.setValue(''); + endTime.focus(); + } + } + } + } + + }] + }] + },{ + layout : 'form', + labelWidth : 60, + columnWidth : .2, + items : [{ + columnWidth : .5, + layout : 'form', + labelWidth : 70, + items : [{ + xtype : 'datefieldWithMin', + fieldLabel : '结束日期', + id : 'timeEnd', + name : 'timeEnd', + editable : false, + format : 'Y-m-d', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : false, + anchor : '95%', + value: currentDay, + listeners : { + specialkey : function(field, e) { + if (e.getKey() == Ext.EventObject.ENTER) { + var isOK = field.validate(); + if(isOK){ + var value = field.getValue(); + field.setValue(value); + } + } + } + } + }] + }] + }, { + layout : 'form', + labelWidth : 60, + columnWidth : .2, + items : [{ + fieldLabel : '供应商', + xtype : 'combo', + id : 'suplierName', + name : 'suplierName', + queryParam : 'supplierName', + minChars : 0, + valueField : 'id', + displayField : 'name', + width : 600, + store : supplierStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true, + anchor : '97%', + listeners : { + select : function(combo, record, index) { + Ext.getCmp('suplierName').setValue(record.data.name); + } + } + }] + }] + }], + buttons:[{ + xtype : 'button', + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + xtype : 'button', + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + $Id('timeStart').value = ""; + $Id('timeEnd').value = ""; + Ext.getCmp('suplierName').setValue(""); + } + }] + }); + + + /*myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show();*/ + /*var firstReprotUrl = WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?" + + "jasperreportName=godownEntryStatistic_main.jasper" + + "&reportName=godownEntryStatistic" + + "&title=" + reportParamTitle + + "&author=" + reportParamAuthor + + "&orgUnit=" + reportParamOrgUnit + + "&sheetId=" + reportParamSheetId + + "&unit=" + reportParamUnit;*/ + var reportForm = new Ext.Panel({ + frame:false,//渲染面板 + autoScroll:true,//自动显示滚动条 + collapsible:true,//允许展开和收缩 + bodyPadding:5, + html:'' + }); + + var viewport = new Ext.Viewport({ + layout : 'border', + items : [form, { + id:'reportPanel', + region : 'center', + margins : '0 0 0 0', + layout : 'fit', + items : reportForm + }] + }); +}); \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/GodownEntryItemVo.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/GodownEntryItemVo.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/GodownEntryItemVo.java (revision 12640) @@ -0,0 +1,68 @@ +package com.forgon.disinfectsystem.jasperreports.javabeansource; + +/** + * 入库统计数据项 + * @author kzh + * + */ +public class GodownEntryItemVo { + private Long index; + /** + * 数量 + */ + private Long amount; + /** + * 供应商 + */ + private String supplierName ; + /** + * 总价 = 数量 * 入库价格 + */ + private Double totalPrice; + + public Long getIndex() { + return index; + } + public void setIndex(Long index) { + this.index = index; + } + public Long getAmount() { + return amount; + } + public void setAmount(Long amount) { + this.amount = amount; + } + public String getSupplierName() { + return supplierName; + } + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + public Double getTotalPrice() { + return totalPrice; + } + public void setTotalPrice(Double totalPrice) { + this.totalPrice = totalPrice; + } + + public boolean isValid(){ + if(amount != null && amount > 0){ + return true; + } + return false; + } + + public void addAmountAndTotalPrice(Long amount,Double perPrice){ + Double addPrice = amount * perPrice; + if(this.amount == null){ + this.amount = amount; + }else{ + this.amount += amount; + } + if(this.totalPrice == null){ + this.totalPrice = addPrice; + }else{ + this.totalPrice += addPrice; + } + } +} Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r12531 -r12640 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 12531) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 12640) @@ -93,4 +93,37 @@ // 中六手麻回调失败的记录重新回调 public void reSubmitFailureRecord(); + /** + * 根据住院号或者诊疗号获取病人使用记录信息,从使用记录的数据表中获取 + * @param patientNum 诊疗号或者住院号 + * @param numType 第一个参数的类型,可用的值有: + * treatmentNum:表示patientNum为诊疗号 + * hospitalNum:表示patientNum为住院号 + * @return + */ + public UseRecord getUseRecordByHostpitalNumOrTreatmentNum(String patientNum, String numType); + /** + * 根据住院号或者诊疗号获取病人使用记录信息,此信息中病人信息已经跟his系统同步(如果有从his中获取到信息) + * @param patientNum 诊疗号或者住院号 + * @param numType 第一个参数的类型,可用的值有: + * treatmentNum:表示patientNum为诊疗号 + * hospitalNum:表示patientNum为住院号 + * @return + */ + public UseRecord getSyncUseRecordByHostpitalNumOrTreatmentNum(String patientNum, String numType); + /** + * 根据住院号或者诊疗号获取病人使用记录信息,包括病人信息及对应的器械包的使用信息,并转换成json字符串 + * @param patientNum 诊疗号或者住院号 + * @param numType 第一个参数的类型,可用的值有: + * treatmentNum:表示patientNum为诊疗号 + * hospitalNum:表示patientNum为住院号 + * @return + */ + public String getUseRecordJsonStrByHostpitalNumOrTreatmentNum(String patientNum, String numType); + /** + * 根据id获取使用记录的Json格式对象 + * @param id 使用记录id + * @return + */ + public String getUseRecordJsonById(String id); } Index: ssts-web/src/main/webapp/jasperRtp/godownEntrySummary.jasper =================================================================== diff -u Binary files differ Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java =================================================================== diff -u -r12386 -r12640 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 12386) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 12640) @@ -105,7 +105,7 @@ @Override public PatientInfoVO[] findPatientInfoByTreatmentNum(String treatmentNum) { - if(findPatientInfoByHospitalNumDao == null){ + if(findPatientInfoByTreatmentNumDao == null){ return null; } return findPatientInfoByTreatmentNumDao.findPatientInfoByTreatmentNum(treatmentNum); @@ -333,4 +333,31 @@ syncUser(); } + @Override + public PatientInfoVO findPatientInfoByHospitalNumOrTreatmentNum( + String num, String numType) { + PatientInfoVO[] vos = null; + PatientInfoVO result = null; + + switch(numType){ + case "treatmentNum": + vos = findPatientInfoByTreatmentNum(num); + break; + case "hospitalNum": + vos = findPatientInfoByHospitalNum(num); + break; + } + if (vos != null && vos.length > 0){ + result = CollectionUtils.find(Arrays.asList(vos), new Predicate() { + @Override + public boolean evaluate(PatientInfoVO vo) { + return StringUtils.isNotBlank(vo.getOperation()) || StringUtils.isNotBlank(vo.getDoctorName()); + } + }); + if(result == null && ArrayUtils.isNotEmpty(vos)){ + result = vos[0]; + } + } + return result; + } } Index: ssts-web/src/main/webapp/jasperRtp/godownEntrySummary.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/godownEntrySummary.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/godownEntrySummary.jrxml (revision 12640) @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="66" splitType="Stretch"> + <textField> + <reportElement uuid="3cca729e-1d55-4498-bc2a-c0ba95c23873" x="0" y="0" width="757" height="66"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="24" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntrySummaryView.jsp (revision 12640) @@ -0,0 +1,49 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@page import="com.forgon.tools.SpringBeanManger" %> +<%@page import="com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager"%> +<%@page import="com.forgon.directory.acegi.tools.AcegiHelper"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + +入库物品统计报表 + +<% +SupplyRoomConfigManager supplyRoomConfigManager = (SupplyRoomConfigManager)SpringBeanManger.getBean("supplyRoomConfigManager"); +%> + + + + + + + + +
+
+
+ + +
+ + +
+ + \ No newline at end of file Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java =================================================================== diff -u --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java (revision 0) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManager.java (revision 12640) @@ -0,0 +1,9 @@ +package com.forgon.disinfectsystem.diposablegoods.service; + +import java.util.List; + +import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; + +public interface GodownEntryItemManager { + public List getGodownEntryItemList(String startDate,String endDate,String supplier,String orderField); +} Index: ssts-web/src/main/webapp/jasperRtp/yearWorkload.jrxml =================================================================== diff -u -r12331 -r12640 --- ssts-web/src/main/webapp/jasperRtp/yearWorkload.jrxml (.../yearWorkload.jrxml) (revision 12331) +++ ssts-web/src/main/webapp/jasperRtp/yearWorkload.jrxml (.../yearWorkload.jrxml) (revision 12640) @@ -1,5 +1,5 @@ - + @@ -48,7 +48,7 @@ <band height="27" splitType="Stretch"> <textField> - <reportElement uuid="edf26680-ccdc-44f7-80d3-0377066e97bb" x="0" y="0" width="650" height="27"/> + <reportElement uuid="edf26680-ccdc-44f7-80d3-0377066e97bb" x="0" y="0" width="740" height="27"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font fontName="宋体" size="14" isBold="true"/> </textElement> @@ -59,7 +59,7 @@ <summary> <band height="42" splitType="Stretch"> <crosstab> - <reportElement uuid="a8823c9c-619a-4716-a06f-392d53e31cdc" x="0" y="0" width="650" height="42"/> + <reportElement uuid="a8823c9c-619a-4716-a06f-392d53e31cdc" x="0" y="0" width="740" height="42"/> <crosstabHeaderCell> <cellContents> <staticText> Index: ssts-web/src/main/webapp/jasperRtp/materialMissTotalView.jrxml =================================================================== diff -u -r12331 -r12640 --- ssts-web/src/main/webapp/jasperRtp/materialMissTotalView.jrxml (.../materialMissTotalView.jrxml) (revision 12331) +++ ssts-web/src/main/webapp/jasperRtp/materialMissTotalView.jrxml (.../materialMissTotalView.jrxml) (revision 12640) @@ -168,7 +168,7 @@ </detail> <summary> <band height="30"> - <textField> + <textField isBlankWhenNull="true"> <reportElement uuid="b6f69632-e34f-45b2-af41-1b3b4ed44ce2" style="table_CH" x="480" y="0" width="120" height="30"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font size="14" isBold="true"/> Index: ssts-web/src/main/webapp/jasperRtp/materialMissTotalView.jasper =================================================================== diff -u -r12331 -r12640 Binary files differ Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r12596 -r12640 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 12596) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 12640) @@ -30,8 +30,8 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; -import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByHospitalNumDao; import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; +import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -79,7 +79,8 @@ private JdbcTemplate pathJdbcTemplate; - private FindPatientInfoByHospitalNumDao findPatientInfoByHospitalNumDao; + //private FindPatientInfoByHospitalNumDao findPatientInfoByHospitalNumDao; + private DataSynchronizationManager dataSynchronizationManager; public void setIdCardInstanceManager(IDCardInstanceManager idCardInstanceManager) { this.idCardInstanceManager = idCardInstanceManager; @@ -121,9 +122,13 @@ this.pathJdbcTemplate = pathJdbcTemplate; } - public void setFindPatientInfoByHospitalNumDao( + /*public void setFindPatientInfoByHospitalNumDao( FindPatientInfoByHospitalNumDao findPatientInfoByHospitalNumDao) { this.findPatientInfoByHospitalNumDao = findPatientInfoByHospitalNumDao; + }*/ + + public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager){ + this.dataSynchronizationManager = dataSynchronizationManager; } public void deleteUseRecordById(String id) { @@ -1314,7 +1319,12 @@ //同步病人信息 PatientInfoVO patientInfo = null; - PatientInfoVO[] vos = findPatientInfoByHospitalNumDao.findPatientInfoByHospitalNum(objectArray[5]); + try{ + patientInfo = dataSynchronizationManager.findPatientInfoByHospitalNumOrTreatmentNum(objectArray[5], "hospitalNum"); + }catch(Exception ex){ + ex.printStackTrace(); + } + /*PatientInfoVO[] vos = dataSynchronizationManager.findPatientInfoByHospitalNum(objectArray[5]); if (vos != null && vos.length > 0){ patientInfo = CollectionUtils.find(Arrays.asList(vos), new Predicate<PatientInfoVO>() { @Override @@ -1325,7 +1335,7 @@ if(patientInfo == null && ArrayUtils.isNotEmpty(vos)){ patientInfo = vos[0]; } - } + }*/ if(patientInfo == null){ //根据住院号查不到病人信息时,应给予阻止 @@ -1438,6 +1448,58 @@ } return success; } + + private void updateUseRecordByPatientInfo(UseRecord useRecord, PatientInfoVO patientInfo) { + if(useRecord == null || patientInfo == null){ + return; + } + //病人年龄 + if(StringUtils.isNotBlank(patientInfo.getPatientAge())){ + useRecord.setPatientAge(patientInfo.getPatientAge()); + } + + //病人性别 + if(StringUtils.isNotBlank(patientInfo.getPatientSex())){ + useRecord.setPatientSex(patientInfo.getPatientSex()); + } + + //病人身份证号 + if(StringUtils.isNotBlank(patientInfo.getPatientIDCard())){ + useRecord.setPatientIDCard(patientInfo.getPatientIDCard()); + } + //手术名称 + if(StringUtils.isNotBlank(patientInfo.getOperation())){ + useRecord.setOperation(patientInfo.getOperation()); + } + + // 病室 + if(StringUtils.isNotBlank(patientInfo.getRoomNumber())){ + useRecord.setRoomNumber(patientInfo.getRoomNumber()); + } + + // 床位 + if(StringUtils.isNotBlank(patientInfo.getBedNumber())){ + useRecord.setBedNumber(patientInfo.getBedNumber()); + } + // 医生姓名 + if(StringUtils.isNotBlank(patientInfo.getDoctorName())){ + useRecord.setDoctorName(patientInfo.getDoctorName()); + } + // 病人姓名 + if(StringUtils.isNotBlank(patientInfo.getPatientName())){ + useRecord.setPatientName(patientInfo.getPatientName()); + } + // 诊疗号或住院号 + if(PatientInfoVO.TYPE_CLINIC.equals(patientInfo.getType())){ + useRecord.setTreatmentNum(patientInfo.getPatientNumber()); + }else if(PatientInfoVO.TYPE_HOSPITAL.equals(patientInfo.getType())){ + useRecord.setHospitalNum(patientInfo.getPatientNumber()); + } + /*以下三个属性useRecord中没有对应字段设置*/ + /*String ascriptionDepartment = patientInfo.getAscriptionDepartment(); + String operationTime = patientInfo.getOperationTime(); + String patientArea = patientInfo.getPatientArea();*/ + } /** * 回调记录更新为成功或失败 @@ -1533,4 +1595,69 @@ logger.error("定时调用中六手麻回调失败的记录-更新该病历的器械包使用记录异常", e); } } + + @Override + public UseRecord getUseRecordByHostpitalNumOrTreatmentNum( + String patientNum, String numType) { + String sql = String.format(" where po.status = '%s'", UseRecord.STATUS_UNAUDITED); + if("treatmentNum".equals(numType)){ + sql += String.format(" and po.treatmentNum = '%s'", patientNum); + }else if("hospitalNum".equals(numType)){ + sql += String.format(" and po.hospitalNum = '%s'", patientNum); + }else{ + sql += String.format(" and (po.treatmentNum = '%s' or po.hospitalNum = '%s')", patientNum, patientNum); + } + return (UseRecord) objectDao.getBySql( + UseRecord.class.getSimpleName(), sql); + } + /*private PatientInfoVO defaultPatientInfo(){ + PatientInfoVO patientInfo = new PatientInfoVO(); + patientInfo.setBedNumber("111"); + patientInfo.setDoctorName("李英"); + patientInfo.setOperation("胆囊切除手术"); + patientInfo.setOperationTime("2016年4月5日"); + patientInfo.setPatientAge("23"); + patientInfo.setPatientArea("第一病区"); + patientInfo.setPatientIDCard("421135199302161352"); + patientInfo.setPatientName("李白"); + patientInfo.setPatientNumber("000000"); + patientInfo.setPatientSex("男"); + patientInfo.setRoomNumber("213"); + patientInfo.setType(PatientInfoVO.TYPE_HOSPITAL); + return patientInfo; + }*/ + @Override + public UseRecord getSyncUseRecordByHostpitalNumOrTreatmentNum(String patientNum, String numType){ + UseRecord record = getUseRecordByHostpitalNumOrTreatmentNum(patientNum,numType); + PatientInfoVO patientInfo = null; + try{ + patientInfo = dataSynchronizationManager.findPatientInfoByHospitalNumOrTreatmentNum(patientNum,numType); + /*if("000000".equals(patientNum)){ + patientInfo = defaultPatientInfo(); + }else{ + patientInfo = dataSynchronizationManager.findPatientInfoByHospitalNumOrTreatmentNum(patientNum,numType); + }*/ + }catch(Exception ex){ + ex.printStackTrace(); + } + if(patientInfo != null){ + if(record == null){ + record = new UseRecord(); + } + updateUseRecordByPatientInfo(record,patientInfo); + } + return record; + } + @Override + public String getUseRecordJsonStrByHostpitalNumOrTreatmentNum(String patientNum, + String numType) { + UseRecord useRecord = getUseRecordByHostpitalNumOrTreatmentNum(patientNum,numType); + return UseRecordToJson.converUseRecordPoToJson(useRecord, tousseInstanceManager); + } + + @Override + public String getUseRecordJsonById(String id) { + UseRecord useRecord = getUseRecordById(id); + return UseRecordToJson.converUseRecordPoToJson(useRecord, tousseInstanceManager); + } } Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js =================================================================== diff -u -r12633 -r12640 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 12633) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 12640) @@ -426,7 +426,7 @@ }); } // 保存审核并转换使用记录 -function saveAndReviewAndConvertUseRecordForm(btObj,win){ +function saveAndReviewAndConvertUseRecordForm(btObj,win,createNew){ if(!checkForSave()){ return false; } @@ -448,13 +448,22 @@ waitTitle : '提交表单', success : function(form, action) { if(action.result.success){ - showResult('保存成功'); + if (createNew){ + showResult('保存成功,并新建使用记录'); + } + else{ + showResult('保存成功'); + } }else{ showResult(action.result.errMsg); } win.close(); grid.dwrReload(); + // 如果保存成功,并且点击的是保存并新建按钮,则打开新的登记使用记录窗口 + if (action.result.success && createNew){ + newUseRecord(); + } }, failure : function(form, action) { if(!isUndefinedOrNullOrEmpty(action.result.errMsg)){ @@ -557,9 +566,16 @@ text : '保存并审核生成申请单', handler : function() { top.Ext.getCmp("audited").setValue("true");// action里则会根据audited的值判断用户是点击审核还是保存按钮,true为审核 - saveAndReviewAndConvertUseRecordForm(this,window); + saveAndReviewAndConvertUseRecordForm(this,window,false); } }; + var saveAndReviewAndConvertAndNewBtn = { + text : '保存并审核生成申请单并新建', + handler : function() { + top.Ext.getCmp("audited").setValue("true");// action里则会根据audited的值判断用户是点击审核还是保存按钮,true为审核 + saveAndReviewAndConvertUseRecordForm(this,window,true); + } + } var fastRecyclingBtn = { text : '快速回收', id:'quickRecycingID', @@ -625,7 +641,11 @@ } } else {// 添加 if (sstsConfig.useRecordAuditMode == 2){ - tbar = [ saveBtn, saveAndNewBtn,saveAndReviewAndConvertBtn, cancelBtn]; + if(sstsConfig.useRecordNewAfterSubmit == 1){ + tbar = [ saveBtn, saveAndNewBtn,saveAndReviewAndConvertAndNewBtn, cancelBtn]; + }else{ + tbar = [ saveBtn, saveAndNewBtn,saveAndReviewAndConvertBtn, cancelBtn]; + } }else{ tbar = [ saveBtn, saveAndNewBtn, cancelBtn]; } Index: ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/config.js =================================================================== diff -u -r12599 -r12640 --- ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/config.js (.../config.js) (revision 12599) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/config.js (.../config.js) (revision 12640) @@ -37,6 +37,8 @@ hideTreatmentNumOfUseRecord : false, // 使用记录审核方式, 1: 审核和转换按钮分开; 2:审核和转换按钮合并为1个 useRecordAuditMode : 2, + // 添加使用记录界面,提交后是否新建空的使用记录:1表示新建,0表示不新建,未指明也是不新建 + useRecordNewAfterSubmit : 1, hideApplyDepartColumn : false, // 隐藏申请科室 hideSettleDepartColumn : true, // 隐藏结算科室 showProjectNameSelectWhenApplyDiposableGoods : true //申领一次性物品时是否显示项目编码(眼科的需求是科室为课题项目经费申请一次性物品时提供项目下拉选择,提交时调用接口判断是否超支) Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java =================================================================== diff -u --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java (revision 0) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryItemManagerImpl.java (revision 12640) @@ -0,0 +1,36 @@ +package com.forgon.disinfectsystem.diposablegoods.service; + +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; +import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; +import com.forgon.tools.hibernate.ObjectDao; + +public class GodownEntryItemManagerImpl implements GodownEntryItemManager { + private ObjectDao objectDao; + private DateQueryAdapter dateQueryAdapter; + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + @SuppressWarnings("unchecked") + @Override + public List<GodownEntryItem> getGodownEntryItemList(String startDateTime, + String endDateTime, String supplier,String orderField) { + String sql = " where " + dateQueryAdapter.dateAreaSql("po.godownEntry.time", startDateTime, endDateTime); + sql += " and po.godownEntry.type = '" + GodownEntry.TYPE_IN + "'"; + if(StringUtils.isNotBlank(supplier)){ + sql += " and po.supplierName = '" + supplier + "'"; + } + return objectDao.findBySql(GodownEntryItem.class.getSimpleName(), sql, orderField); + } + +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r12596 -r12640 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12596) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12640) @@ -41,7 +41,9 @@ import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; +import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodBatchStock; +import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.ConsumptiveConfig; @@ -81,6 +83,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.DisinfectionFractionDefectiveBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.EighteenQuotaBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseApplicationVO; +import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryItemVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryStatistic_child; import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryStatistic_main; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceAmountContrastBean; @@ -161,6 +164,8 @@ private GoodsOptionManager goodsOptionManager; + private GodownEntryItemManager godownEntryItemManager; + public void setGoodsOptionManager(GoodsOptionManager goodsOptionManager) { this.goodsOptionManager = goodsOptionManager; } @@ -211,6 +216,11 @@ this.objectDao = objectDao; } + public void setGodownEntryItemManager( + GodownEntryItemManager godownEntryItemManager) { + this.godownEntryItemManager = godownEntryItemManager; + } + /** * reportName: .japser文件路径 params : .japser文件定义的参数 */ @@ -5402,7 +5412,13 @@ + "invoiceItem t where i.id =t.invoice_id and i.sendTime between " + startDateTime + " and " + endDateTime + " and i.sender is not null" - + " and i.orgUnitCoding = '"+supplyRoom+"' group by i.sender "; + + " and i.orgUnitCoding = '"+supplyRoom+"' group by i.sender " + + " union all " + + "select '核对记录',i.assistantSender as operator,sum(t.amount) as amount from Invoice i," + + "invoiceItem t where i.id =t.invoice_id and i.sendTime between " + + startDateTime + " and " + endDateTime + + " and i.assistantSender is not null" + + " and i.orgUnitCoding = '"+supplyRoom+"' group by i.assistantSender "; String projectName = CssdUtils.getConfigProperty("project"); @@ -5454,6 +5470,9 @@ }else if("包装数量".equals(record)){ bean.setColumnName("包装数量"); bean.setSequence(8); + }else if("核对记录".equals(record)){ + bean.setColumnName("核对数量"); + bean.setSequence(9); } list.add(bean); } @@ -7490,5 +7509,29 @@ } return list; } - + public List<GodownEntryItemVo> getGodownSummaryReport(String startTime,String endTime,String suplier){ + List <GodownEntryItem> list = this.godownEntryItemManager.getGodownEntryItemList(startTime, endTime, suplier,"supplierName"); + List<GodownEntryItemVo> ret = new ArrayList<GodownEntryItemVo>(); + GodownEntryItemVo vo = new GodownEntryItemVo(); + if(list != null && !list.isEmpty()){ + long index = 1; + for(GodownEntryItem item : list){ + if(!StringUtils.equals(vo.getSupplierName(), item.getSupplierName())){ + if(vo.isValid()){ + vo.setIndex(index++); + ret.add(vo); + vo = new GodownEntryItemVo(); + } + } + vo.setSupplierName(item.getSupplierName()); + vo.addAmountAndTotalPrice(item.getAmount(), item.getCost()); + } + if(vo.isValid()){ + vo.setIndex(index); + ret.add(vo); + } + } + return ret; + + } } Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java =================================================================== diff -u -r12331 -r12640 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java (.../DataSynchronizationManager.java) (revision 12331) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java (.../DataSynchronizationManager.java) (revision 12640) @@ -10,4 +10,11 @@ public void syncSupplier(); public PatientInfoVO[] findPatientInfoByTreatmentNum(String treatmentNum); public PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum); + /** + * 根据诊疗号、或住院号查询病人信息 + * @param num 诊疗号或住院号 + * @param numType 标识是诊疗号还是住院号 + * @return + */ + public PatientInfoVO findPatientInfoByHospitalNumOrTreatmentNum(String num,String numType); } Index: ssts-web/src/main/webapp/jasperRtp/yearWorkload.jasper =================================================================== diff -u -r12331 -r12640 Binary files differ Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java =================================================================== diff -u -r12597 -r12640 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java (.../WebServiceManagerImpl.java) (revision 12597) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java (.../WebServiceManagerImpl.java) (revision 12640) @@ -767,10 +767,11 @@ // tousseStr += barcode + "@" + tousseName + "@" + validUtil; // } // return jsonObject.toString() + "#" + tousseStr; - String sql = " where po.id = " + id; + /*String sql = " where po.id = " + id; UseRecord useRecord = (UseRecord) objectDao.getBySql( UseRecord.class.getSimpleName(), sql); - return converUseRecordPoToJson(useRecord); + return converUseRecordPoToJson(useRecord);*/ + return useRecordManager.getUseRecordJsonById(id); }else if ("清洗记录".equals(infoType)) { String sql = " where po.id = " + id; WashAndDisinfectRecord washRecord = (WashAndDisinfectRecord) objectDao.getBySql( @@ -1696,26 +1697,13 @@ } @Override - public BarcodeJsonObj getPatientInfo(String patientNum, String numType) { - PatientInfoVO[] vos = null; - switch(numType){ - case "treatmentNum": - vos = dataSynchronizationManager.findPatientInfoByTreatmentNum(patientNum); - break; - case "hospitalNum": - vos = dataSynchronizationManager.findPatientInfoByHospitalNum(patientNum); - break; + public BarcodeJsonObj getPatientInfo(String patientNum, String numType) { + PatientInfoVO result = null; + try{ + result = dataSynchronizationManager.findPatientInfoByHospitalNumOrTreatmentNum(patientNum, numType); + }catch(Exception ex){ + ex.printStackTrace(); } - - PatientInfoVO result = CollectionUtils.find(Arrays.asList(vos), new Predicate<PatientInfoVO>() { - @Override - public boolean evaluate(PatientInfoVO vo) { - return StringUtils.isNotBlank(vo.getOperation()) || StringUtils.isNotBlank(vo.getDoctorName()); - } - }); - if(result == null && ArrayUtils.isNotEmpty(vos)) - result = vos[0]; - BarcodeJsonObj jsonObj = new BarcodeJsonObj(); jsonObj.setType("使用记录"); jsonObj.setData(JSONObject.fromObject(result).toString()); @@ -2221,19 +2209,9 @@ @Override public String getUseRecordOfAwaitForRecycle(String patientNum, String numType){ - String sql = String.format(" where po.status = '%s'", UseRecord.STATUS_UNAUDITED); - if("treatmentNum".equals(numType)){ - sql += String.format(" and po.treatmentNum = '%s'", patientNum); - }else if("hospitalNum".equals(numType)){ - sql += String.format(" and po.hospitalNum = '%s'", patientNum); - }else{ - sql += String.format(" and (po.treatmentNum = '%s' or po.hospitalNum = '%s')", patientNum, patientNum); - } - UseRecord useRecord = (UseRecord) objectDao.getBySql( - UseRecord.class.getSimpleName(), sql); - return converUseRecordPoToJson(useRecord); + return useRecordManager.getUseRecordJsonStrByHostpitalNumOrTreatmentNum(patientNum, numType); } - private String converUseRecordPoToJson(UseRecord useRecord){ + /*private String converUseRecordPoToJson(UseRecord useRecord){ JsonConfig config = new JsonConfig(); // 这段代码可以解决Integer、Double类型的被默认转换为0的问题,这样null将替换0成为默认转换值.其它类型的设置类似. config.registerDefaultValueProcessor(Integer.class, @@ -2287,7 +2265,7 @@ return new JSONStringer().object().key("useRecord") .value(useRecordJson).key("tousseInstances") .value(tousseInstanceJsonArray).endObject().toString(); - } + }*/ @Override public String getMobileClientInfo() { String mobileClientInfoFilePath = Path.getMobileClientInfoFilePath("clientForWindowsMobile"); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r12331 -r12640 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 12331) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 12640) @@ -20,6 +20,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.DisinfectionFractionDefectiveBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.EighteenQuotaBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseApplicationVO; +import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryItemVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryStatistic_main; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceAmountContrastBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceQuery; @@ -230,4 +231,12 @@ public List<BorrowingRecordVo> getBorrowingRecord(String startDay,String endDay,String goodsName,String deptName); public List<ForeignTousseApplicationVO> getForeignTousseApplicationReport(String startDay,String endDay,String goodsName,String deptName); + /** + * 获取入库统计的报表数据,以供应商分类 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @param suplier 供应商 + * @return + */ + public List<GodownEntryItemVo> getGodownSummaryReport(String startTime,String endTime,String suplier); } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java =================================================================== diff -u -r12331 -r12640 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java (.../DataSynchronizationTableManager.java) (revision 12331) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dwr/DataSynchronizationTableManager.java (.../DataSynchronizationTableManager.java) (revision 12640) @@ -33,33 +33,16 @@ public String getPatientInfoByNumberAndType(String json){ boolean success = false; String msg = ""; - PatientInfoVO[] vos = null; PatientInfoVO result = null; if(StringUtils.isNotBlank(json)){ JSONObject jsonObj = JSONObject.fromObject(json); String patientNum = jsonObj.optString("patientNum"); String numType = jsonObj.optString("numType"); try{ - switch(numType){ - case "treatmentNum": - vos = dataSynchronizationManager.findPatientInfoByTreatmentNum(patientNum); - break; - case "hospitalNum": - vos = dataSynchronizationManager.findPatientInfoByHospitalNum(patientNum); - break; - } - if (vos != null && vos.length > 0){ + result = dataSynchronizationManager.findPatientInfoByHospitalNumOrTreatmentNum(patientNum, numType); + if (result != null){ success = true; - result = CollectionUtils.find(Arrays.asList(vos), new Predicate<PatientInfoVO>() { - @Override - public boolean evaluate(PatientInfoVO vo) { - return StringUtils.isNotBlank(vo.getOperation()) || StringUtils.isNotBlank(vo.getDoctorName()); - } - }); - if(result == null && ArrayUtils.isNotEmpty(vos)){ - result = vos[0]; - } } else{ msg = "没有查找到对应的病人信息"; Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r12597 -r12640 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 12597) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 12640) @@ -53,6 +53,7 @@ import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseDefinitionUtils; import com.forgon.disinfectsystem.common.CSSDConstants; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDiposableGoods; @@ -99,6 +100,7 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; import com.forgon.disinfectsystem.useRecord.service.UseRecordManager; +import com.forgon.disinfectsystem.useRecord.service.UseRecordToJson; import com.forgon.disinfectsystem.vo.TousseItemVo; import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.action.WashAndDisinfectRecordAction; @@ -124,6 +126,7 @@ import com.forgon.tools.date.DateTools; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.DateJsonValueProcessor; +import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.treenode.model.THTreeNode; import com.forgon.util.FileUtils; @@ -302,10 +305,10 @@ } catch (JSONException e) { logger.error("WebService调用过程,转化成JSON对象时出错:\r\n请求参数:" + jsonParams, e); - return buildErrorMsgJsonResult("参数非JSON格式"); + return JSONUtil.buildErrorMsgJsonResult("参数非JSON格式"); } if (jsonObject == null) { - return buildErrorMsgJsonResult("参数非JSON格式"); + return JSONUtil.buildErrorMsgJsonResult("参数非JSON格式"); } try { // 用反射调用方法 @@ -314,11 +317,11 @@ JSONObject.class); if (method.getReturnType() != String.class) { logger.error("方法返回值类型不正确"); - return buildErrorMsgJsonResult("调用异常"); + return JSONUtil.buildErrorMsgJsonResult("调用异常"); } result = (String) method.invoke(this, jsonObject); } catch (NoSuchMethodException ex) { - retException = new RuntimeException(buildErrorMsgJsonResult("非法action值")); + retException = new RuntimeException(JSONUtil.buildErrorMsgJsonResult("非法action值")); } catch (InvocationTargetException ex) { Throwable targetException = ex.getTargetException(); logger.error("调用异常", targetException); @@ -422,42 +425,42 @@ // 扫描条码登陆,则不检查密码 String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); User user = getUserByBarcode(barcode); if(user == null) - return buildErrorMsgJsonResult("用户名或密码有误"); + return JSONUtil.buildErrorMsgJsonResult("用户名或密码有误"); return userToJson2(user); } String username = params.optString("username"); if (StringUtils.isBlank(username)) - return buildErrorMsgJsonResult("username 为空"); + return JSONUtil.buildErrorMsgJsonResult("username 为空"); String password = params.optString("password"); if (StringUtils.isBlank(password)) - return buildErrorMsgJsonResult("password 为空"); + return JSONUtil.buildErrorMsgJsonResult("password 为空"); User user = (User) objectDao.getByProperty(User.class.getSimpleName(), "name", username); if (user == null) - return buildErrorMsgJsonResult("用户名或密码有误"); + return JSONUtil.buildErrorMsgJsonResult("用户名或密码有误"); if(SpringBeanManger.getApplicationContext().containsBean("ssoAuthenticationService")){ try { SSOAuthenticationService ssoService = (SSOAuthenticationService)SpringBeanManger.getBean("ssoAuthenticationService"); boolean valid = ssoService.authentication(username, password, ""); if(!valid) - return buildErrorMsgJsonResult("用户名或密码有误"); + return JSONUtil.buildErrorMsgJsonResult("用户名或密码有误"); } catch (Exception e) { e.printStackTrace(); - return buildErrorMsgJsonResult("身份验证接口调用失败"); + return JSONUtil.buildErrorMsgJsonResult("身份验证接口调用失败"); } } else { if (!user.getPasswd().equals( passwordEncoder.encodePassword(password, null))) { - return buildErrorMsgJsonResult("用户名或密码有误"); + return JSONUtil.buildErrorMsgJsonResult("用户名或密码有误"); } } @@ -525,7 +528,7 @@ item.setInvoicePlan(plan); plan.getApplicationItems().add(item); } else { - buildErrorMsgJsonResult("未找到对应的器械包"); + JSONUtil.buildErrorMsgJsonResult("未找到对应的器械包"); } } tousseItemManager.saveOrUpdate(item); @@ -881,7 +884,7 @@ case "depart":{ String departCode = params.optString("departCode"); if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } // Collection<ApplicationGoodsVo> invoiceGoodsOfToday = invoicePlanManager @@ -930,7 +933,7 @@ if(goods.size() == 0){ InvoicePlan invoiceplan = invoicePlanManager.getInvoicePlanById("" + invoicePlanId); - return buildErrorMsgJsonResult("该单状态"+invoiceplan.getDeliverStatus()+",无待发货物品"); + return JSONUtil.buildErrorMsgJsonResult("该单状态"+invoiceplan.getDeliverStatus()+",无待发货物品"); } // 去除消毒物品显示名称前用中文括号包围的科室名称 fixApplicationGoodsVoShowTousseName(goods); @@ -943,7 +946,7 @@ .endObject().toString(); } default: - return buildErrorMsgJsonResult("缺失参数mode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数mode"); } } @@ -990,14 +993,14 @@ @Deprecated public String submitInvoicePlans(JSONObject params) { try{ - return buildErrorMsgJsonResult("系统发货功能已更改,请升级PDA程序!"); + return JSONUtil.buildErrorMsgJsonResult("系统发货功能已更改,请升级PDA程序!"); // invoiceManager.submitInvoice(params); // return new JSONStringer().object() // .key("success").value(true) // .endObject().toString(); } catch (Exception ex){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return buildErrorMsgJsonResult(ex.getMessage()); + return JSONUtil.buildErrorMsgJsonResult(ex.getMessage()); } } @@ -1013,15 +1016,15 @@ .endObject().toString(); } catch (Exception ex){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return buildErrorMsgJsonResult(ex.getMessage()); + return JSONUtil.buildErrorMsgJsonResult(ex.getMessage()); } } // 获取某部门的所有使用记录 public String getUseRecordList(JSONObject params) { String departCode = params.optString("departCode"); if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } int firstIndex = params.optInt("firstIndex"); int maxResultCount = params.optInt("maxResultCount"); @@ -1116,21 +1119,21 @@ JSONArray tousseInstanceBarcodeJsonArray = params .optJSONArray("tousseInstanceBarcodeList"); if (useRecordJsonObj == null) { - return buildErrorMsgJsonResult("缺失参数useRecord"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数useRecord"); } if (tousseInstanceBarcodeJsonArray == null) { - return buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); } Object useRecordObj = JSONObject.toBean(useRecordJsonObj, UseRecord.class); if (useRecordObj == null || !(useRecordObj instanceof UseRecord)) { - return buildErrorMsgJsonResult("参数useRecord无法转换为Bean"); + return JSONUtil.buildErrorMsgJsonResult("参数useRecord无法转换为Bean"); } Object barcodeCol = JSONArray.toCollection( tousseInstanceBarcodeJsonArray, String.class); if (barcodeCol == null) { - return buildErrorMsgJsonResult("参数tousseInstanceBarcodeList无法转换为字符串集合"); + return JSONUtil.buildErrorMsgJsonResult("参数tousseInstanceBarcodeList无法转换为字符串集合"); } UseRecord newUseRecord = (UseRecord) useRecordObj; @@ -1142,6 +1145,7 @@ editUseRecord = originalUseRecord; // 修改使用记录:拷贝属性 + editUseRecord.setHospitalNum(newUseRecord.getHospitalNum()); editUseRecord.setTreatmentNum(newUseRecord.getTreatmentNum()); editUseRecord.setPatientName(newUseRecord.getPatientName()); editUseRecord.setPatientAge(newUseRecord.getPatientAge()); @@ -1165,52 +1169,65 @@ String barcode = params.optString("barcode"); String departCode = params.optString("departCode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } BarcodeDevice barcodeDevice = barcodeManager .getBarcodeByBarcode(barcode); if (barcodeDevice == null || !(barcodeDevice instanceof TousseInstance)) { - return buildErrorMsgJsonResult("查无此物品"); + //可能是使用记录 + UseRecord useRecord = useRecordManager.getSyncUseRecordByHostpitalNumOrTreatmentNum(barcode, "hospitalNum"); + if(useRecord == null){ + //再查找诊疗号 + useRecord = useRecordManager.getSyncUseRecordByHostpitalNumOrTreatmentNum(barcode, "treatmentNum"); + } + if(useRecord != null){ + String useRecordStr = UseRecordToJson.converUseRecordPoToJson(useRecord, tousseInstanceManager); + return new JSONStringer().object().key("success").value(true) + .key("type").value("useRecord").key("data") + .value(JSONObject.fromObject(useRecordStr)).endObject().toString(); + } + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); } // ***验证器械包*** TousseInstance tousseInstance = (TousseInstance) barcodeDevice; // 暂不支持登记除普通器械包以外的包 if (!TousseDefinition.PACKAGE_TYPE_INSIDE.equals(tousseInstance .getTousseDefinition().getTousseType())) { - return buildErrorMsgJsonResult("暂不支持登记除普通器械包以外的包"); + return JSONUtil.buildErrorMsgJsonResult("暂不支持登记除普通器械包以外的包"); } // 验证所在科室 if (!StringUtils.equals(tousseInstance.getLocation(), departCode)) { - return buildErrorMsgJsonResult("该器械包不属于本科室"); + return JSONUtil.buildErrorMsgJsonResult("该器械包不属于本科室"); } // 只能登记已发货的器械包 if (TousseInstance.STATUS_USED.equals(tousseInstance.getStatus())) { - return buildErrorMsgJsonResult("器械包已使用,不能重复登记"); + return JSONUtil.buildErrorMsgJsonResult("器械包已使用,不能重复登记"); } if (TousseInstance.STATUS_RETURNED.equals(tousseInstance.getStatus())) { - return buildErrorMsgJsonResult("器械包已退货,不能登记"); + return JSONUtil.buildErrorMsgJsonResult("器械包已退货,不能登记"); } - if (!TousseInstance.STATUS_SHIPPED.equals(tousseInstance.getStatus())) { - return buildErrorMsgJsonResult("器械包未发货,不能登记"); + if (!TousseInstance.STATUS_SHIPPED.equals(tousseInstance.getStatus()) + && !TousseInstance.STATUS_SIGNED.equals(tousseInstance.getStatus())) { + return JSONUtil.buildErrorMsgJsonResult("器械包未发货,不能登记"); } // 验证是否过期 Date validUntil = tousseInstance.getValidUntil(); if (validUntil == null) { - return buildErrorMsgJsonResult("器械包无失效日期,不能登记"); + return JSONUtil.buildErrorMsgJsonResult("器械包无失效日期,不能登记"); } if (validUntil.before(new Date())) { - return buildErrorMsgJsonResult("器械包已过期,不能登记"); + return JSONUtil.buildErrorMsgJsonResult("器械包已过期,不能登记"); } // 检测当前器械包有没有被召回 if (tousseInstanceManager .checkTousseInstanceHasRecallByTousseInstanceId(tousseInstance .getId())) { - return buildErrorMsgJsonResult("器械包已被召回,不能登记"); + return JSONUtil.buildErrorMsgJsonResult("器械包已被召回,不能登记"); } JSONObject dataJson = JSONObject.fromObject(tousseInstance, @@ -1224,7 +1241,7 @@ public String changeUseRecordsStatus_Audited(JSONObject params) { JSONArray useRecordIdsJSONArray = params.optJSONArray("useRecordIds"); if (useRecordIdsJSONArray == null) { - return buildErrorMsgJsonResult("缺失参数useRecordIds"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数useRecordIds"); } List<Long> ids = new ArrayList<Long>(); for (int i = 0; i < useRecordIdsJSONArray.size(); ++i) { @@ -1244,13 +1261,13 @@ String depart = params.optString("depart"); String departCode = params.optString("departCode"); if (useRecordIdsJSONArray == null) { - return buildErrorMsgJsonResult("缺失参数useRecordIds"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数useRecordIds"); } else if (StringUtils.isBlank(operator)) { - return buildErrorMsgJsonResult("缺失参数operator"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数operator"); } else if (StringUtils.isBlank(depart)) { - return buildErrorMsgJsonResult("缺失参数depart"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数depart"); } else if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } List<Long> ids = new ArrayList<Long>(useRecordIdsJSONArray.size()); @@ -1263,11 +1280,6 @@ .endObject().toString(); } - private static String buildErrorMsgJsonResult(String errorMsg) { - return new JSONStringer().object().key("success").value(false) - .key("error").value(errorMsg).endObject().toString(); - } - private static PropertyFilter buildPropertyFilterForWashRecord() { return new PropertyFilter() { @Override @@ -1298,7 +1310,7 @@ public String getWashRecordList(JSONObject params) { String departCode = params.optString("departCode"); if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } int firstIndex = params.optInt("firstIndex"); int maxResultCount = params.optInt("maxResultCount"); @@ -1359,7 +1371,7 @@ public String getInfoByBarcode_WashRecord(JSONObject params) { String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } BarcodeDevice barcodeDevice = barcodeManager @@ -1397,7 +1409,7 @@ // 用户 User user = (User) barcodeDevice; if(!user.isBelongsToCurrentLoginUserOrgs()){ - return buildErrorMsgJsonResult("不能设置为该用户"); + return JSONUtil.buildErrorMsgJsonResult("不能设置为该用户"); } JsonObject jsonObj = new JsonObject(); JsonObject userObj = new JsonObject(); @@ -1409,7 +1421,7 @@ jsonObj.add("data", userObj); return jsonObj.toString(); }else { - return buildErrorMsgJsonResult("条码无效"); + return JSONUtil.buildErrorMsgJsonResult("条码无效"); } } @@ -1463,13 +1475,13 @@ .equals(container.getContainerType()) && !Container.CONTAINERTYPE_CLEANINGSHELF.equals(container .getContainerType())) {// 容器的类型必须是篮筐或清洗架 - return buildErrorMsgJsonResult("此条码非篮筐或清洗架"); + return JSONUtil.buildErrorMsgJsonResult("此条码非篮筐或清洗架"); } if (Container.CONTAINER_STATUS_FREE.equals(container.getStatus())) { - return buildErrorMsgJsonResult("此篮筐未装载物品"); + return JSONUtil.buildErrorMsgJsonResult("此篮筐未装载物品"); } if (Container.CONTAINER_STATUS_WASHING.equals(container.getStatus())) { - return buildErrorMsgJsonResult("此篮筐正在清洗"); + return JSONUtil.buildErrorMsgJsonResult("此篮筐正在清洗"); } ClassifyBasket classifyBasket = null; @@ -1484,12 +1496,12 @@ } if (classifyBasket == null) { - return buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); + return JSONUtil.buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); } Set<ClassifiedItem> classfiedItems = classifyBasket.getClassfiedItems(); if (CollectionUtils.isEmpty(classfiedItems)) { - return buildErrorMsgJsonResult("此篮筐未装载物品"); + return JSONUtil.buildErrorMsgJsonResult("此篮筐未装载物品"); } JSONBuilder builder = new JSONStringer().object().key("success") @@ -1507,18 +1519,18 @@ .optJSONArray("containerStatusIds"); String classifyBasketInfo = params.optString("classifyBasketInfo", null); if (washRecordJsonObj == null) { - return buildErrorMsgJsonResult("缺失参数washRecord"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数washRecord"); } if (containerStatusIdJsonArray == null) { - return buildErrorMsgJsonResult("缺失参数washContainerBarcodeList"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数washContainerBarcodeList"); } Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); WashAndDisinfectRecord washRecord = gson.fromJson( washRecordJsonObj.toString(), WashAndDisinfectRecord.class); if (washRecord == null) { - return buildErrorMsgJsonResult("参数washRecord无法转换为Bean"); + return JSONUtil.buildErrorMsgJsonResult("参数washRecord无法转换为Bean"); } Set<Long> classifyBasketIds = gson.fromJson( containerStatusIdJsonArray.toString(), @@ -1533,7 +1545,7 @@ disinfectIdentification, washRecord.getStartDate(), washRecord.getEndDate()); if(exist && washRecord.getId() == null ){ - return buildErrorMsgJsonResult(disinfectIdentification+" 正在清洗,不能添加清洗记录。"); + return JSONUtil.buildErrorMsgJsonResult(disinfectIdentification+" 正在清洗,不能添加清洗记录。"); } } if(classifyBasketInfoMap.isEmpty()){ @@ -1554,15 +1566,15 @@ final String barcode = params.optString("barcode"); final String departCode = params.optString("departCode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } final JSONObject extraParam = params.optJSONObject("extraParam"); if (extraParam == null) { - return buildErrorMsgJsonResult("缺失参数extraParam"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数extraParam"); } BarcodeDevice barcodeDevice = barcodeManager @@ -1573,12 +1585,12 @@ Container container = (Container) barcodeDevice; if (!Container.CONTAINERTYPE_BASKET.equals(container .getContainerType())) { - return buildErrorMsgJsonResult("此容器非篮筐"); + return JSONUtil.buildErrorMsgJsonResult("此容器非篮筐"); } if (!Container.CONTAINER_STATUS_FREE.equals(container.getStatus()) && !Container.CONTAINER_STATUS_STERILIZELOADING .equals(container.getStatus())) { - return buildErrorMsgJsonResult("此篮筐状态异常:" + return JSONUtil.buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); } @@ -1642,15 +1654,15 @@ tousseDefinition, sqlWheres, predicate1); } else { if (!predicate1.evaluate(tousseInstance)) { - return buildErrorMsgJsonResult("器械包状态异常:" + return JSONUtil.buildErrorMsgJsonResult("器械包状态异常:" + tousseInstance.getStatus()); } if (StringUtils.isNotEmpty(tousseInstance.getOrgUnitCoding())) { if (!StringUtils.equals( tousseInstance.getOrgUnitCoding(), departCode) && tousseInstance.getProxyDisinfection_id() == null) { - return buildErrorMsgJsonResult("器械包未录入代理灭菌单,无法灭菌"); + return JSONUtil.buildErrorMsgJsonResult("器械包未录入代理灭菌单,无法灭菌"); } } @@ -1666,7 +1678,7 @@ .value("tousseInstanceList").key("data") .value(datasJSONArray).endObject().toString(); } else { - return buildErrorMsgJsonResult("查无此物品"); + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); } } @@ -1681,10 +1693,10 @@ JSONArray tousseInstanceBarcodeJSONArray = params .optJSONArray("tousseInstanceBarcodeList"); if (StringUtils.isEmpty(basketBarcode)) { - return buildErrorMsgJsonResult("缺失参数basketBarcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数basketBarcode"); } if (tousseInstanceBarcodeJSONArray == null) { - return buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); } Collection<String> tousseInstanceBarcodes = new Gson().fromJson( tousseInstanceBarcodeJSONArray.toString(), @@ -1699,7 +1711,7 @@ return new JSONStringer().object().key("success").value(true) .endObject().toString(); } catch (Exception ex){ - return buildErrorMsgJsonResult("添加器械包到篮筐失败"); + return JSONUtil.buildErrorMsgJsonResult("添加器械包到篮筐失败"); } } @@ -1709,7 +1721,7 @@ JSONArray tousseInstanceBarcodeJSONArray = params .optJSONArray("tousseInstanceBarcodeList"); if (tousseInstanceBarcodeJSONArray == null) { - return buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodeList"); } Collection<String> tousseInstanceBarcodes = new Gson().fromJson( tousseInstanceBarcodeJSONArray.toString(), @@ -1755,7 +1767,7 @@ public String getSterilizationRecordListOfToday(JSONObject params) { String departCode = params.optString("departCode"); if (StringUtils.isEmpty(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } Date out_beginTime = new Date(); @@ -1811,15 +1823,15 @@ String barcode = params.optString("barcode"); String departCode = params.optString("departCode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } final JSONObject extraParam = params.optJSONObject("extraParam"); if (extraParam == null) { - return buildErrorMsgJsonResult("缺失参数extraParam"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数extraParam"); } BarcodeDevice barcodeDevice = barcodeManager @@ -1829,7 +1841,7 @@ Sterilizer sterilizer = (Sterilizer) barcodeDevice; if (!sterilizationRecordManager.isAllSterilizationEnd(sterilizer .getName())) { - return buildErrorMsgJsonResult("当前灭菌炉正在灭菌"); + return JSONUtil.buildErrorMsgJsonResult("当前灭菌炉正在灭菌"); } return new JSONStringer().object().key("success").value(true) .key("barcode").value(barcode).key("type") @@ -1883,7 +1895,7 @@ tousseDefinition, sqlWheres, null); int size = resultTousseInstanceList.size(); if (size == 0){ - return buildErrorMsgJsonResult("没有待灭菌的" + return JSONUtil.buildErrorMsgJsonResult("没有待灭菌的" + tousseDefinition.getName()); } @@ -1892,7 +1904,7 @@ .getStatus()) && !TousseInstance.STATUS_REVIEWED .equals(tousseInstance.getStatus())) { - return buildErrorMsgJsonResult("器械包状态异常:" + return JSONUtil.buildErrorMsgJsonResult("器械包状态异常:" + tousseInstance.getStatus()); } resultTousseInstanceList = Collections @@ -1908,7 +1920,7 @@ .value(datasJSONArray).endObject().toString(); } else { - return buildErrorMsgJsonResult("条码无效"); + return JSONUtil.buildErrorMsgJsonResult("条码无效"); } } @@ -1934,25 +1946,25 @@ private String buildJsonResultForSterileContainer(Container container) { if (!Container.CONTAINERTYPE_BASKET .equals(container.getContainerType())) {// 容器的类型必须是篮筐 - return buildErrorMsgJsonResult("此条码非篮筐"); + return JSONUtil.buildErrorMsgJsonResult("此条码非篮筐"); } if (Container.CONTAINER_STATUS_STERILIZING .equals(container.getStatus())) { - return buildErrorMsgJsonResult("此篮筐正在灭菌"); + return JSONUtil.buildErrorMsgJsonResult("此篮筐正在灭菌"); } if (!Container.CONTAINER_STATUS_STERILIZELOADING.equals(container .getStatus())) { - return buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); + return JSONUtil.buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); } ReviewedBasket reviewedBasket = reviewedBasketManager .getReviewedBasketForSterilizeRecord(container.getBarcode(), null); if (reviewedBasket == null) { - return buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); + return JSONUtil.buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); } JSONBuilder builder = new JSONStringer().object().key("success") @@ -1970,29 +1982,29 @@ JSONArray tousseInstanceBarcodeJsonArray = params .optJSONArray("tousseInstanceBarcodes"); if (sterileRecordJsonObj == null) { - return buildErrorMsgJsonResult("缺失参数sterileRecord"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数sterileRecord"); } if (containerBarcodeJsonArray == null) { - return buildErrorMsgJsonResult("缺失参数containerBarcodes"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数containerBarcodes"); } if (tousseInstanceBarcodeJsonArray == null) { - return buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodes"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数tousseInstanceBarcodes"); } Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); SterilizationRecord sterileRecord = gson.fromJson( sterileRecordJsonObj.toString(), SterilizationRecord.class); if (sterileRecord == null) { - return buildErrorMsgJsonResult("参数sterileRecord无法转换为Bean"); + return JSONUtil.buildErrorMsgJsonResult("参数sterileRecord无法转换为Bean"); } if (sterileRecord.getId() == null || sterileRecord.getId() == 0) { // 新建灭菌记录前检查当前灭菌炉是否正在灭菌 boolean isAllSterilizationend = sterilizationRecordManager .isAllSterilizationEnd(sterileRecord.getSterilizerName()); if (!isAllSterilizationend) { - return buildErrorMsgJsonResult("当前灭菌炉正在灭菌"); + return JSONUtil.buildErrorMsgJsonResult("当前灭菌炉正在灭菌"); } } Collection<String> containerBarcodes = gson.fromJson( @@ -2067,13 +2079,13 @@ String status = params.optString("status"); String departCode = params.optString("departCode"); if (sterileRecordIdsJSONArray == null) { - return buildErrorMsgJsonResult("缺失参数sterileRecordIds"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数sterileRecordIds"); } if (StringUtils.isBlank(status)) { - return buildErrorMsgJsonResult("缺失参数status"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数status"); } if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } Collection<Long> sterileRecordIds = new ArrayList<Long>(); @@ -2107,7 +2119,7 @@ public String getInfoByBarcode_Login(JSONObject params) { String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } User user = getUserByBarcode(barcode); @@ -2122,7 +2134,7 @@ .key("data").value(userNameJSONObject).endObject() .toString(); } else { - return buildErrorMsgJsonResult("请扫描用户条码"); + return JSONUtil.buildErrorMsgJsonResult("请扫描用户条码"); } } @@ -2137,20 +2149,20 @@ public String getInfoByBarcode_ReviewTask(JSONObject params) { String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } final String departCode = params.optString("departCode"); if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } final JSONObject extraParam = params.optJSONObject("extraParam"); if (extraParam == null) { - return buildErrorMsgJsonResult("缺失参数extraParam"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数extraParam"); } final String taskGroup = extraParam.optString("taskGroup"); if (StringUtils.isBlank(taskGroup)) { - return buildErrorMsgJsonResult("缺失参数taskGroup"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数taskGroup"); } BarcodeDevice barcodeDevice = barcodeManager .getBarcodeByBarcode(barcode); @@ -2159,12 +2171,12 @@ Container container = (Container) barcodeDevice; if (!Container.CONTAINERTYPE_BASKET.equals(container .getContainerType())) { - return buildErrorMsgJsonResult("此容器非篮筐"); + return JSONUtil.buildErrorMsgJsonResult("此容器非篮筐"); } if (!Arrays.asList(Container.CONTAINER_STATUS_FREE, Container.CONTAINER_STATUS_STERILIZELOADING).contains( container.getStatus())) { - return buildErrorMsgJsonResult("只能使用空闲或灭菌装载的篮筐,此篮筐状态为:" + return JSONUtil.buildErrorMsgJsonResult("只能使用空闲或灭菌装载的篮筐,此篮筐状态为:" + container.getStatus()); } @@ -2216,13 +2228,13 @@ tousseDefinition, sqlWheres, null); } else { if (!taskGroup.equals(tousseInstance.getTousseDefinition().getTaskGroup())) - return buildErrorMsgJsonResult("器械包【" + return JSONUtil.buildErrorMsgJsonResult("器械包【" + tousseInstance.getTousseDefinitionName() + "】不属于任务组【" + taskGroup + "】"); if (!TousseInstance.STATUS_PACKED.equals(tousseInstance .getStatus())) { - return buildErrorMsgJsonResult("器械包状态为:" + return JSONUtil.buildErrorMsgJsonResult("器械包状态为:" + tousseInstance.getStatus() + ",不能进行此操作"); } @@ -2231,7 +2243,7 @@ if (!StringUtils.equals( tousseInstance.getOrgUnitCoding(), departCode) && tousseInstance.getProxyDisinfection_id() == null) { - return buildErrorMsgJsonResult("器械包未录入代理灭菌单,无法灭菌"); + return JSONUtil.buildErrorMsgJsonResult("器械包未录入代理灭菌单,无法灭菌"); } } @@ -2247,10 +2259,10 @@ .value(datasJSONArray).endObject().toString(); } else { // 非法物品 - return buildErrorMsgJsonResult("请扫描灭菌篮筐或器械包条码"); + return JSONUtil.buildErrorMsgJsonResult("请扫描灭菌篮筐或器械包条码"); } } else { - return buildErrorMsgJsonResult("没有找到该条码对应的物品,请检查条码是否正确"); + return JSONUtil.buildErrorMsgJsonResult("没有找到该条码对应的物品,请检查条码是否正确"); } } @@ -2398,12 +2410,12 @@ public String getInfoByBarcode_ProxyDisinfection(JSONObject params) { final String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } final String departCode = params.optString("departCode"); if (StringUtils.isBlank(departCode)) { - return buildErrorMsgJsonResult("缺失参数departCode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数departCode"); } BarcodeDevice barcodeDevice = barcodeManager @@ -2414,12 +2426,12 @@ Container container = (Container) barcodeDevice; if (!Container.CONTAINERTYPE_BASKET.equals(container .getContainerType())) { - return buildErrorMsgJsonResult("此容器非篮筐"); + return JSONUtil.buildErrorMsgJsonResult("此容器非篮筐"); } if (!Container.CONTAINER_STATUS_FREE.equals(container.getStatus()) && !Container.CONTAINER_STATUS_STERILIZELOADING .equals(container.getStatus())) { - return buildErrorMsgJsonResult("此篮筐状态异常:" + return JSONUtil.buildErrorMsgJsonResult("此篮筐状态异常:" + container.getStatus()); } @@ -2436,15 +2448,15 @@ String departCodeOfTousse = tousseInstance.getOrgUnitCoding(); if (StringUtils.isNotEmpty(departCodeOfTousse) && StringUtils.equals(departCodeOfTousse, departCode)) { - return buildErrorMsgJsonResult("此器械包为本科室装配,无需录入代理灭菌记录"); + return JSONUtil.buildErrorMsgJsonResult("此器械包为本科室装配,无需录入代理灭菌记录"); } if (!tousseInstanceManager.isTousseStatusCorrect(tousseInstance)) { - return buildErrorMsgJsonResult("器械包状态异常:" + return JSONUtil.buildErrorMsgJsonResult("器械包状态异常:" + tousseInstance.getStatus()); } if (tousseInstance.getProxyDisinfection_id() != null) { - return buildErrorMsgJsonResult("器械包已申请了代理灭菌,不能重复申请"); + return JSONUtil.buildErrorMsgJsonResult("器械包已申请了代理灭菌,不能重复申请"); } JSONObject datasJSON = JSONObject.fromObject(tousseInstance, @@ -2454,7 +2466,7 @@ .value("tousseInstance").key("data").value(datasJSON) .endObject().toString(); } else { - return buildErrorMsgJsonResult("查无此物品"); + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); } } @@ -2543,7 +2555,7 @@ public String getInfoByBarcode_InvoicePlanList(JSONObject params) { String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } // 先按条码找科室 @@ -2555,7 +2567,7 @@ Collections.singleton(orgUnit.getOrgUnitCoding()), TimeQuantum.All).size(); if (invoicePlanAmount <= 0) { - return buildErrorMsgJsonResult("该科室没有申请物品"); + return JSONUtil.buildErrorMsgJsonResult("该科室没有申请物品"); } JSONObject orgUnitJSONObject = new JSONObject(); @@ -2570,7 +2582,7 @@ InvoicePlan invoicePlan = (InvoicePlan) objectDao.getByProperty( InvoicePlan.class.getSimpleName(), "serialNumber", barcode); if (invoicePlan == null) - return buildErrorMsgJsonResult("请扫描科室条码或申请单条码"); + return JSONUtil.buildErrorMsgJsonResult("请扫描科室条码或申请单条码"); JSONBuilder jb = new JSONStringer().object(); jb.key("success").value(true); @@ -2588,7 +2600,7 @@ public String getInfoByBarcode_InvoiceSignList(JSONObject params) { String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } // 按条码找科室 @@ -2604,7 +2616,7 @@ .key("data").value(orgUnitJSONObject).endObject() .toString(); } - return buildErrorMsgJsonResult("请扫描科室条码"); + return JSONUtil.buildErrorMsgJsonResult("请扫描科室条码"); } public String getTaskGroupsByDepartCode(JSONObject params) { @@ -2716,7 +2728,7 @@ long id = params.optLong("id"); ReturnGoodsRecord record = returnGoodsRecordManager.getById(String.valueOf(id)); if(record == null) - return buildErrorMsgJsonResult("获取退货记录失败"); + return JSONUtil.buildErrorMsgJsonResult("获取退货记录失败"); Gson gson = new GsonBuilder().setDateFormat(defaultDateFormat2) .setExclusionStrategies(exclusionStrategyForReturnGoodsRecord) @@ -2734,37 +2746,37 @@ public String getInfoByBarcode_ReturnGoodsRecord(JSONObject params) { final String barcode = params.optString("barcode"); if (StringUtils.isBlank(barcode)) { - return buildErrorMsgJsonResult("缺失参数barcode"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数barcode"); } BarcodeDevice barcodeDevice = barcodeManager .getBarcodeByBarcode(barcode); if (barcodeDevice == null) { - return buildErrorMsgJsonResult("查无此物品"); + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); } if (barcodeDevice instanceof TousseInstance) { // 器械包 final TousseInstance tousseInstance = (TousseInstance) barcodeDevice; if(!TousseDefinition.PACKAGE_TYPE_INSIDE.equals(tousseInstance.getTousseDefinition().getTousseType())) - return buildErrorMsgJsonResult("只能退货普通器械包"); + return JSONUtil.buildErrorMsgJsonResult("只能退货普通器械包"); String[] acceptStatus = {TousseInstance.STATUS_SHIPPED}; if(!ArrayUtils.contains(acceptStatus, tousseInstance.getStatus())) - return buildErrorMsgJsonResult(String.format("此器械包状态为[%s],不可退货", tousseInstance.getStatus())); + return JSONUtil.buildErrorMsgJsonResult(String.format("此器械包状态为[%s],不可退货", tousseInstance.getStatus())); final JSONObject extraParam = params.optJSONObject("extraParam"); if (extraParam == null) - return buildErrorMsgJsonResult("缺失参数extraParam"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数extraParam"); final String depart = extraParam.optString("depart"); final String departCode = extraParam.optString("departCode"); Collection<String> c1 = Arrays.asList(depart, departCode); Collection<String> c2 = Arrays.asList(null, "", "null"); if (CollectionUtils.isNotEmpty(CollectionUtils.intersection(c1, c2))) - return buildErrorMsgJsonResult("请先扫描退货科室的条码,或录入退货人信息"); + return JSONUtil.buildErrorMsgJsonResult("请先扫描退货科室的条码,或录入退货人信息"); if(!StringUtils.equals(departCode, tousseInstance.getLocation())) - return buildErrorMsgJsonResult("此器械包不属于" + extraParam.optString("depart")); + return JSONUtil.buildErrorMsgJsonResult("此器械包不属于" + extraParam.optString("depart")); return new JSONStringer().object().key("success").value(true) .key("barcode").value(barcode).key("type") @@ -2821,7 +2833,7 @@ } else { OrgUnit orgUnit = orgUnitManager.getOrgUnitByBarcode(barcode); if (orgUnit == null) - return buildErrorMsgJsonResult("查无此物品"); + return JSONUtil.buildErrorMsgJsonResult("查无此物品"); // 科室 JsonObject data = new JsonObject(); @@ -2860,7 +2872,7 @@ User user = (User) objectDao.getByProperty(User.class.getSimpleName(), "name", userName); if(user == null) - return buildErrorMsgJsonResult("查无此用户"); + return JSONUtil.buildErrorMsgJsonResult("查无此用户"); JsonObject result = new JsonObject(); result.addProperty("success", true); @@ -2886,16 +2898,16 @@ try{ JSONObject returnGoodsRecordJsonObject = params.optJSONObject("returnGoodsRecord"); if (returnGoodsRecordJsonObject == null) - return buildErrorMsgJsonResult("缺失参数returnGoodsRecord"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数returnGoodsRecord"); ReturnGoodsRecord returnGoodsRecord = new Gson().fromJson( returnGoodsRecordJsonObject.toString(), ReturnGoodsRecord.class); if(returnGoodsRecord == null) - return buildErrorMsgJsonResult("参数returnGoodsRecord无法转换为Bean"); + return JSONUtil.buildErrorMsgJsonResult("参数returnGoodsRecord无法转换为Bean"); returnGoodsRecord.setReturnTime(new Date()); if("一次性物品".equals(returnGoodsRecord.getType())){ - return buildErrorMsgJsonResult("一次性物品退货功能暂未实现!"); + return JSONUtil.buildErrorMsgJsonResult("一次性物品退货功能暂未实现!"); // for(ReturnGoodsItem item : returnGoodsRecord.getReturnGoodsItems()){ // DiposableGoodBatchStock src = item.getDiposableGoodBatchStock(); // item.setDiposableGoodBatchStock(diposableGoodBatchStockManager.getByBarcode(src.getBarcode())); @@ -2906,9 +2918,9 @@ return returnGoodsRecordManager.checkAndSaveForReturnTousse( fixForReturnTousse(returnGoodsRecord)).toString(); } - return buildErrorMsgJsonResult("提交失败"); + return JSONUtil.buildErrorMsgJsonResult("提交失败"); } catch (Throwable ex){ - return buildErrorMsgJsonResult("提交失败"); + return JSONUtil.buildErrorMsgJsonResult("提交失败"); } } @@ -2922,24 +2934,24 @@ } List<InvoiceStaticsVo> invoiceVos = invoiceManager.getDepartUnsignedInvoice(departCodes); if(invoiceVos == null){ - return buildErrorMsgJsonResult("访问数据库异常。"); + return JSONUtil.buildErrorMsgJsonResult("访问数据库异常。"); } JSONArray jsonArray = JSONArray.fromObject(invoiceVos); return new JSONStringer().object().key("success").value(true) .key("invoiceSigns").value(jsonArray).endObject().toString(); }catch(Throwable ex){ - return buildErrorMsgJsonResult(ex.getMessage()); + return JSONUtil.buildErrorMsgJsonResult(ex.getMessage()); } } @SuppressWarnings("unchecked") public String getAllInvoiceSignGoods(JSONObject params){ try{ JSONArray JsonArrayInvoiceIds = params.optJSONArray("invoiceIds"); if (JsonArrayInvoiceIds == null) - return buildErrorMsgJsonResult("缺失参数invoiceIds"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数invoiceIds"); Collection<Long> invoiceIds = JSONArray.toCollection(JsonArrayInvoiceIds, Long.class); if(invoiceIds == null || invoiceIds.isEmpty()){ - return buildErrorMsgJsonResult("参数invoiceIds不包含发货单id"); + return JSONUtil.buildErrorMsgJsonResult("参数invoiceIds不包含发货单id"); } WaitSignGoodsSummary goodSummary = invoiceManager.getWaitSignGoods(invoiceIds); String sendTime = null; @@ -2952,25 +2964,25 @@ .key("invoiceSignGoods").value(jsonArray).endObject().toString(); }catch(Throwable ex){ ex.printStackTrace(); - return buildErrorMsgJsonResult("获取待签收物品失败"); + return JSONUtil.buildErrorMsgJsonResult("获取待签收物品失败"); } } @SuppressWarnings("unchecked") public String setInvoiceSign(JSONObject params){ try{ JSONArray JsonArrayInvoiceIds = params.optJSONArray("invoiceIds"); if (JsonArrayInvoiceIds == null) - return buildErrorMsgJsonResult("缺失参数invoiceIds"); + return JSONUtil.buildErrorMsgJsonResult("缺失参数invoiceIds"); Collection<Long> invoiceIds = JSONArray.toCollection(JsonArrayInvoiceIds, Long.class); if(invoiceIds == null || invoiceIds.isEmpty()){ - return buildErrorMsgJsonResult("参数invoiceIds不包含发货单id"); + return JSONUtil.buildErrorMsgJsonResult("参数invoiceIds不包含发货单id"); } String receiver = params.getString("receiver"); invoiceManager.signInvoice(invoiceIds, receiver); return new JSONStringer().object().key("success").value(true) .endObject().toString(); }catch(Throwable ex){ - return buildErrorMsgJsonResult("保存失败。" + ex.getMessage()); + return JSONUtil.buildErrorMsgJsonResult("保存失败。" + ex.getMessage()); } } /** @@ -2992,7 +3004,7 @@ mobileClientInfo = FileSystemHelper .readAllLine(mobileClientInfoFilePath); }else{ - mobileClientInfo = buildErrorMsgJsonResult(mobileClientInfoFilePath + " 不存在"); + mobileClientInfo = JSONUtil.buildErrorMsgJsonResult(mobileClientInfoFilePath + " 不存在"); } return mobileClientInfo; }