Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r26654 -r26717 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 26654) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 26717) @@ -64,6 +64,7 @@ import com.forgon.disinfectsystem.goodsBindingConfig.enums.BidirectionalStatus; import com.forgon.disinfectsystem.goodsBindingConfig.enums.GoodType; import com.forgon.disinfectsystem.goodsBindingConfig.vo.BindGoodVo; +import com.forgon.disinfectsystem.stockmanage.departmentstock.service.DepartmentStockManager; import com.forgon.disinfectsystem.tousse.comboTousse.service.ComboTousseManager; import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; @@ -132,6 +133,12 @@ private TousseDefinitionBelongDepartManager tousseDefinitionBelongDepartManager; + private DepartmentStockManager departmentStockManager; + + public void setDepartmentStockManager( + DepartmentStockManager departmentStockManager) { + this.departmentStockManager = departmentStockManager; + } public void setCssdHandleTousseManager( CssdHandleTousseManager cssdHandleTousseManager) { this.cssdHandleTousseManager = cssdHandleTousseManager; @@ -3366,14 +3373,21 @@ cssdHandleTousse.setTousseName(tousseDefinition.getName()); cssdHandleTousseManager.save(cssdHandleTousse); }else { - //设置所属科室 - if(null != tdParameterDto && CssdUtils.getSystemSetConfigByNameBool("enableTousseDefinitionBelongDepart", false)){ + if(null != tdParameterDto){ List tdBelongOrgUnitCodes = new ArrayList(); if(null != tdParameterDto.getBelongOrgUnitCodes()){ tdBelongOrgUnitCodes = tdParameterDto.getBelongOrgUnitCodes(); } - belongOrgUintsLog = tousseDefinitionBelongDepartManager. - saveOrUpdateTousseDefinitionBelongOrgUnits(tousseDefinition,tdBelongOrgUnitCodes); + //设置所属科室 + if(CssdUtils.getSystemSetConfigByNameBool("enableTousseDefinitionBelongDepart", false)){ + belongOrgUintsLog = tousseDefinitionBelongDepartManager. + saveOrUpdateTousseDefinitionBelongOrgUnits(tousseDefinition,tdBelongOrgUnitCodes); + } + //添加包所属科室的科室库存 + JSONObject BelongOrgUnitArr = tdParameterDto.getBelongOrgUnitArr(); + if(BelongOrgUnitArr != null && BelongOrgUnitArr.size() > 0){ + departmentStockManager.addDepartMentStockByDepartsAndTousseDefinition(BelongOrgUnitArr, tousseDefinition); + } } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentstock/DepartmentStock.java =================================================================== diff -u -r26602 -r26717 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentstock/DepartmentStock.java (.../DepartmentStock.java) (revision 26602) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentstock/DepartmentStock.java (.../DepartmentStock.java) (revision 26717) @@ -3,18 +3,23 @@ */ package com.forgon.disinfectsystem.entity.departmentstock; +import java.util.Date; import java.util.List; import javax.persistence.Entity; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.tools.hibernate.ObjectDao; @@ -83,6 +88,14 @@ * 新的已使用数量,与原来的逻辑不同(包状态为已使用,无固定条码,非聚合包的器械包的数量) */ private Integer newUsedAmount; + /** + * 关联包定义 + */ + private TousseDefinition tousseDefinition; + /** + * 开始查询时间 + */ + private Date startTime; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -231,5 +244,22 @@ public void setUsedCardinalNum(Integer usedCardinalNum) { this.usedCardinalNum = usedCardinalNum; } + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "tousseDefinition_id") + public TousseDefinition getTousseDefinition() { + return tousseDefinition; + } + + public void setTousseDefinition(TousseDefinition tousseDefinition) { + this.tousseDefinition = tousseDefinition; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } } Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js =================================================================== diff -u -r26603 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js (.../departmentStockNumberDetails.js) (revision 26603) +++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js (.../departmentStockNumberDetails.js) (revision 26717) @@ -49,10 +49,10 @@ ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, - {header : "回收时间",width : 80,dataIndex : 'recyclingTime',menuDisabled:true}, + {header : "回收时间",width : 120,dataIndex : 'recyclingTime',menuDisabled:true}, {header : "回收人",width : 80,dataIndex : 'recyclingUser',menuDisabled:true}, - {header : "手术间",width : 110,dataIndex : 'operationRoomName',menuDisabled:true}, - {header : "回收数量",width : 110,dataIndex : 'recyclingAmount',menuDisabled:true} + {header : "手术间",width : 50,dataIndex : 'operationRoomName',menuDisabled:true}, + {header : "回收数量",width : 50,dataIndex : 'recyclingAmount',menuDisabled:true} ) }else if(type == STATUS_DISINFECTED){//已清洗数量 title = "已清洗数量"+ v + "("+tousseName+")"; @@ -76,25 +76,29 @@ {name : 'id'}, {name : 'operationTime'}, {name : 'operator'}, - {name : 'packageType'} + {name : 'packageType'}, + {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, {header : "装配时间",width :90,dataIndex : 'operationTime',menuDisabled:true}, {header : "装配员",width : 90,dataIndex : 'operator',menuDisabled:true}, - {header : "包装方式",width :120,dataIndex : 'packageType',menuDisabled:true} + {header : "包装方式",width :120,dataIndex : 'packageType',menuDisabled:true}, + {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) }else if(type == STATUS_REVIEWED){//已审核数量 title = "已审核数量"+ v + "("+tousseName+")"; names.push( {name : 'id'}, {name : 'reviewTime'}, - {name : 'reviewer'} + {name : 'reviewer'}, + {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, {header : "审核时间",width :90,dataIndex : 'reviewTime',menuDisabled:true}, - {header : "审核员",width : 90,dataIndex : 'reviewer',menuDisabled:true} + {header : "审核员",width : 90,dataIndex : 'reviewer',menuDisabled:true}, + {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) }else if(type == STATUS_STERILING){//灭菌中数量 title = "灭菌中数量"+ v + "("+tousseName+")"; @@ -103,14 +107,16 @@ {name : 'sterileStartTime'}, {name : 'sterilizerName'}, {name : 'sterilizationUser'}, - {name : 'validUntil'} + {name : 'validUntil'}, + {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, - {header : "灭菌时间",width : 80,dataIndex : 'sterileStartTime',menuDisabled:true}, + {header : "灭菌时间",width : 90,dataIndex : 'sterileStartTime',menuDisabled:true}, {header : "灭菌炉",width : 80,dataIndex : 'sterilizerName',menuDisabled:true}, - {header : "灭菌员",width : 110,dataIndex : 'sterilizationUser',menuDisabled:true}, - {header : "失效期 ",width : 90,dataIndex : 'validUntil',menuDisabled:true} + {header : "灭菌员",width : 50,dataIndex : 'sterilizationUser',menuDisabled:true}, + {header : "失效期 ",width : 90,dataIndex : 'validUntil',menuDisabled:true}, + {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) }else if(type == STATUS_STERILED){//待发货数量 title = "待发货数量"+ v + "("+tousseName+")"; @@ -120,27 +126,31 @@ {name : 'sterileEndTime'}, {name : 'sterilizerName'}, {name : 'sterilizationUser'}, - {name : 'validUntil'} + {name : 'validUntil'}, + {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, - {header : "灭菌开始时间",width : 100,dataIndex : 'sterileStartTime',menuDisabled:true}, - {header : "灭菌结束时间",width :100,dataIndex : 'sterileEndTime',menuDisabled:true}, + {header : "灭菌开始时间",width : 120,dataIndex : 'sterileStartTime',menuDisabled:true}, + {header : "灭菌结束时间",width :120,dataIndex : 'sterileEndTime',menuDisabled:true}, {header : "灭菌炉",width : 80,dataIndex : 'sterilizerName',menuDisabled:true}, {header : "灭菌员",width : 50,dataIndex : 'sterilizationUser',menuDisabled:true}, - {header : "失效期 ",width :100,dataIndex : 'validUntil',menuDisabled:true} + {header : "失效期 ",width :120,dataIndex : 'validUntil',menuDisabled:true}, + {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) }else if(type == STATUS_SHIPPED){//待签收数量 title = "待签收数量"+ v + "("+tousseName+")"; names.push( {name : 'id'}, {name : 'invoiceSendTime'}, - {name : 'invoiceSender'} + {name : 'invoiceSender'}, + {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, {header : "发货时间",width :90,dataIndex : 'invoiceSendTime',menuDisabled:true}, - {header : "发货员",width : 90,dataIndex : 'invoiceSender',menuDisabled:true} + {header : "发货员",width : 90,dataIndex : 'invoiceSender',menuDisabled:true}, + {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) } @@ -194,7 +204,7 @@ numberDetailWin = new top.Ext.Window( { id : 'numberDetailWin', layout : 'fit', - width : 600, + width : 650, //title :'库存数量', border : false, modal : true, Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js =================================================================== diff -u -r26603 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js (.../departmentStockInputView.js) (revision 26603) +++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js (.../departmentStockInputView.js) (revision 26717) @@ -11,8 +11,11 @@ function reloadGrid(){ if(currentClickNode){ Ext.getCmp("tousseName2").setValue(""); + Ext.getCmp("tousseGroupName").setValue(""); + Ext.getCmp("tousseGroupName").setRawValue(""); $Id("parm_s_currentOrgUnitCoding").value = currentClickNode.attributes.keyId; $Id("parm_s_tousseName").value = ""; + $Id("parm_s_tousseGroupName").value = ""; grid.dwrReload(); } } @@ -38,8 +41,10 @@ function queryDepartmentTousse(){ var tousseName2 = Ext.getCmp("tousseName2").getValue(); var queryMode = Ext.getCmp("queryMode").getValue(); + var tousseGroupName = Ext.getCmp("tousseGroupName").getValue(); $Id("parm_s_queryType").value = queryMode; $Id("parm_s_tousseName").value = tousseName2; + $Id("parm_s_tousseGroupName").value = tousseGroupName; grid.dwrReload(); } function search(searchField){ @@ -129,7 +134,34 @@ {name : 'tousseName'}, {name : 'amount'} ]); - + function onAllChoosedOrNot(combo, record,index,nameOfFiled){ + var choose = record.get(combo.checkField); + var fristRecord = combo.store.getAt(0); + if(index != 0){ + if(!choose) { + fristRecord.set(combo.checkField, false); + combo.setValue(combo.getCheckedValue()); + }else{ + var isAllChoosed = true; + combo.store.each(function (thisRecord) + { + if(thisRecord.get(nameOfFiled) != ('全部') && !thisRecord.get(combo.checkField)){ + isAllChoosed = false; + } + }); + if(isAllChoosed){ + fristRecord.set(combo.checkField, true); + combo.setValue(combo.getCheckedValue()); + } + } + return; + } + if(choose){ + combo.selectAll(); + }else{ + combo.deselectAll(); + } + } function addDepartmentStockItem(id,tousseName,amount){ var rowNum = departmentStockStore.find("tousseName",tousseName); if(rowNum >= 0){ @@ -431,6 +463,33 @@ fields : ['queryMode'], data : [[preciseQuery],[fuzzyQuery]] }) + },{ + text: "器械包分组:" + },{ + xtype : 'multiSelect', + id : 'tousseGroupName', + name : 'tousseGroupName', + valueField : 'tousseGroupName', + displayField : 'tousseGroupName', + allowBlank : true, + editable : false, + fieldLabel:'器械包分组', + listeners : { + select : function(combo, record, index){ + onAllChoosedOrNot(combo, record,index,'tousseGroupName'); + } + }, + triggerAction : 'all', + store : new Ext.data.JsonStore({ + url : WWWROOT + '/disinfectSystem/baseData/tousseGroupAction!getAllTousseGroup.do', + fields : ['tousseGroupName'], + listeners : { + beforeload : function(_this, options) { + _this.baseParams.needAll = '是'; + } + } + }), + anchor : '95%' }, { xtype : 'button', @@ -440,6 +499,8 @@ handler : function() { Ext.getCmp('tousseName2').setValue(""); $Id("parm_s_tousseName").value = ""; + Ext.getCmp("tousseGroupName").setValue(""); + $Id("parm_s_tousseGroupName").value = ""; } },{ xtype : 'button', Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/setDepartOrgUnitForm.js =================================================================== diff -u -r26179 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/setDepartOrgUnitForm.js (.../setDepartOrgUnitForm.js) (revision 26179) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/setDepartOrgUnitForm.js (.../setDepartOrgUnitForm.js) (revision 26717) @@ -13,7 +13,7 @@ * @param extComboElementId 控件id,即下拉框的id * @param departsCodes 页面上传回来的科室编码,多个情况用"," */ -function setDepartOrgUnit(extHiddenElementId, extComboElementId, departsCodes) { +function setDepartOrgUnit(extHiddenElementId, extComboElementId, departsCodes,belongOrgUnit) { //科室的窗口 var formWindowDeparts; //确定保存 @@ -27,6 +27,7 @@ // obj['departName'] = record.get('departName'); valueArr.push(record.get('departCode')); showArr.push(record.get('departName')); + belongOrgUnit[record.get('departCode')] = {'departCode':record.get('departCode'),'departName':record.get('departName')}; } if (valueArr.length != 0) { // top.Ext.getCmp(extHiddenElementId).setValue(JSON.stringify(valueArr)); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r26667 -r26717 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26667) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26717) @@ -5983,7 +5983,7 @@ */ private String buildSqlOfGetRelevantInfoByStatus(String departCode, String tousseName, String status){ String sql = null; - StringBuffer joinSql = new StringBuffer(""); + String joinSql = " inner join barcodeDevice bd on ti.id=bd.id inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id "; StringBuffer querySql = new StringBuffer(""); //各条语句的时间查询条件 StringBuffer tiDateSql = new StringBuffer();//各种状态下的包实例数量,不包括聚合包、状态为已消毒、已回收、已使用的包数量的数量的时间查询条件 @@ -5992,42 +5992,44 @@ StringBuffer usedDateSql = new StringBuffer();//已使用未回收的数量的时间查询条件 setDateSql(tiDateSql, recyDateSql, disinfectedDateSql, usedDateSql); if(TousseInstance.STATUS_SIGNED.equals(status)){ - joinSql.append(" inner join barcodeDevice bd on ti.id=bd.id "); - querySql.append(" ti.id,signedDate,signedUser,barcode "); + querySql.append(" ti.id,signedDate,signedUser,bd.barcode "); }else if(TousseInstance.STATUS_PACKED.equals(status)){ - querySql.append(" ti.id,operationTime,operator,packageType "); + querySql.append(" ti.id,operationTime,operator,packageType,bd.barcode "); }else if(TousseInstance.STATUS_REVIEWED.equals(status)){ - querySql.append(" ti.id,reviewTime,reviewer "); + querySql.append(" ti.id,reviewTime,reviewer,bd.barcode "); }else if(TousseInstance.STATUS_STERILING.equals(status)){ - querySql.append(" ti.id,sterileStartTime,sterilizerName,sterilizationUser,validUntil "); + querySql.append(" ti.id,sterileStartTime,sterilizerName,sterilizationUser,validUntil,bd.barcode "); }else if(TousseInstance.STATUS_STERILED.equals(status)){ - querySql.append(" ti.id,sterileStartTime,sterileEndTime,sterilizerName,sterilizationUser,validUntil "); + querySql.append(" ti.id,sterileStartTime,sterileEndTime,sterilizerName,sterilizationUser,validUntil,bd.barcode "); }else if(TousseInstance.STATUS_SHIPPED.equals(status)){ - querySql.append(" ti.id,invoiceSendTime,invoiceSender "); + querySql.append(" ti.id,invoiceSendTime,invoiceSender,bd.barcode "); } if(TousseInstance.STATUS_USED.equals(status)){ sql = String.format("select ti.id,useTime,ti.patientName,barcode,operationRoomName from TousseInstance ti " + " join UseRecord ur on ur.id=ti.useRecord_id " + " inner join barcodeDevice bd on bd.id=ti.id " - + " where ti.useRecord_id is not null and ti.departCoding='%s' and tousseName='%s' and ti.recyclingItemId is null %s" + + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + + " where ti.departCoding=ds.departCoding and ti.useRecord_id is not null and ds.departCoding='%s' and tousseName='%s' and ti.recyclingItemId is null %s" , departCode, tousseName, usedDateSql); }else if(TousseInstance.STATUS_RECYCLED.equals(status)){ sql = String.format("select rr.id,rr.recyclingTime,rr.recyclingUser,ip.operationRoom operationRoomName,ri.amount recyclingAmount " + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " + " inner join invoicePlan ip on ip.id=rr.recyclingApplication_id inner join ClassifiedItem ci on ci.recyclingRecordId= rr.id inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " - + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ri.tousseName='%s' and departCoding='%s' and cb.washStartTime is null %s", tousseName, departCode, recyDateSql); + + " inner join DepartmentStock ds on ds.tousseDefinition_id=ri.tousseDefinitionId " + + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s", tousseName, departCode, recyDateSql); }else if(TousseInstance.STATUS_DISINFECTED.equals(status)){ - sql = String.format("select wr.id ,wr.startDate washStartTime,wr.endDate washEndTime,wr.disinfectIdentification,ci.amount washedAmount from ClassifiedItem ci " + sql = String.format("select wr.id ,wr.startDate washStartTime,wr.endDate washEndTime,wr.disinfectIdentification,unPackAmount washedAmount from ClassifiedItem ci " + " inner join TousseDefinition td on td.id=ci.tousseDefinitionID " + " inner join invoicePlan ip on ip.id=ci.invoicePlanID " + " inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " - + " left join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " - + " left join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " - + " where td.name='%s' and departCoding='%s' and wr.id is not null and not exists" - + "(select pc.id from PackingRecord_ClassifyBasket pc where pc.classifyBasketId=cb.id) %s", tousseName, departCode, disinfectedDateSql); + + " inner join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " + + " inner join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " inner join DepartmentStock ds on ds.tousseDefinition_id=td.id " + + " inner join PackingTask pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " + + " where td.name='%s' and ip.departCoding=ds.departCoding and ds.departCoding='%s' and wr.id is not null %s ", tousseName, departCode, disinfectedDateSql); }else{ sql = String.format("select %s from TousseInstance ti %s " - + " where status = '%s' and tousseFixedBarcode=0 and departCoding='%s' and tousseName='%s' and comboTousseInstanceId is null %s", + + " where status = '%s' and tousseFixedBarcode=0 and ti.departCoding=ds.departCoding and ti.departCoding='%s' and ti.tousseName='%s' and comboTousseInstanceId is null %s", querySql, joinSql, status, departCode, tousseName, tiDateSql); } return sql; @@ -6045,10 +6047,10 @@ if(StringUtils.isNotBlank(startDateStr)){ startDateStr = dateQueryAdapter.dateAdapter(startDateStr); endDateStr = dateQueryAdapter.dateAdapter(new Date()); - tiDateSql.append(String.format(" and operationTime between %s and %s ", startDateStr, endDateStr)); - recyDateSql.append(String.format(" and rr.recyclingTime between %s and %s ", startDateStr, endDateStr)); - disinfectedDateSql.append(String.format(" and washStartTime between %s and %s ", startDateStr, endDateStr)); - usedDateSql.append(String.format(" and useTime between %s and %s ", startDateStr, endDateStr)); + tiDateSql.append(String.format(" and operationTime between %s and %s and (ds.startTime is null or ds.startTime < operationTime) ", startDateStr, endDateStr)); + recyDateSql.append(String.format(" and rr.recyclingTime between %s and %s and (ds.startTime is null or ds.startTime < rr.recyclingTime) ", startDateStr, endDateStr)); + disinfectedDateSql.append(String.format(" and washStartTime between %s and %s and (ds.startTime is null or ds.startTime < washStartTime) ", startDateStr, endDateStr)); + usedDateSql.append(String.format(" and useTime between %s and %s and (ds.startTime is null or ds.startTime < useTime) ", startDateStr, endDateStr)); } } /** @@ -6063,7 +6065,7 @@ obj.put("id", id); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(TousseInstance.STATUS_SIGNED.equals(status)){ - Date signedDate = rs.getDate("signedDate"); + Date signedDate = rs.getTimestamp("signedDate"); String signedUser = rs.getString("signedUser"); String barcode = rs.getString("barcode"); if(signedDate != null){ @@ -6072,7 +6074,7 @@ obj.put("signedUser", signedUser); obj.put("barcode", barcode); }else if(TousseInstance.STATUS_USED.equals(status)){ - Date useTime = rs.getDate("useTime"); + Date useTime = rs.getTimestamp("useTime"); String patientName = rs.getString("patientName"); String barcode = rs.getString("barcode"); String operationRoomName = rs.getString("operationRoomName"); @@ -6083,44 +6085,56 @@ obj.put("barcode", barcode); obj.put("operationRoomName", operationRoomName); }else if(TousseInstance.STATUS_RECYCLED.equals(status)){ - String recyclingTime = rs.getString("recyclingTime"); + Date recyclingTime = rs.getTimestamp("recyclingTime"); String recyclingUser = rs.getString("recyclingUser"); String operationRoomName = rs.getString("operationRoomName"); int recyclingAmount = rs.getInt("recyclingAmount"); - obj.put("recyclingTime", recyclingTime); + if(recyclingTime != null){ + obj.put("recyclingTime", sdf.format(recyclingTime)); + } obj.put("recyclingUser", recyclingUser); obj.put("operationRoomName", operationRoomName); obj.put("recyclingAmount", recyclingAmount); }else if(TousseInstance.STATUS_DISINFECTED.equals(status)){ String disinfectIdentification = rs.getString("disinfectIdentification");//清洗机 - String washStartTime = rs.getString("washStartTime"); - String washEndTime = rs.getString("washEndTime"); + Date washStartTime = rs.getTimestamp("washStartTime"); + Date washEndTime = rs.getTimestamp("washEndTime"); int washedAmount = rs.getInt("washedAmount"); obj.put("disinfectIdentification", disinfectIdentification); - obj.put("washStartTime", washStartTime); - obj.put("washEndTime", washEndTime); + if(washStartTime != null){ + obj.put("washStartTime", sdf.format(washStartTime)); + } + if(washEndTime != null){ + obj.put("washEndTime", sdf.format(washEndTime)); + } obj.put("washedAmount", washedAmount); }else if(TousseInstance.STATUS_PACKED.equals(status)){ - Date operationTime = rs.getDate("operationTime"); + Date operationTime = rs.getTimestamp("operationTime"); String operator = rs.getString("operator"); String packageType = rs.getString("packageType"); if(operationTime != null){ obj.put("operationTime", sdf.format(operationTime)); } + String barcode = rs.getString("barcode"); + obj.put("barcode", barcode); obj.put("operator", operator); obj.put("packageType", packageType); }else if(TousseInstance.STATUS_REVIEWED.equals(status)){ - Date reviewTime = rs.getDate("reviewTime"); + Date reviewTime = rs.getTimestamp("reviewTime"); String reviewer = rs.getString("reviewer"); if(reviewTime != null){ obj.put("reviewTime", sdf.format(reviewTime)); } + String barcode = rs.getString("barcode"); + obj.put("barcode", barcode); obj.put("reviewer", reviewer); }else if(TousseInstance.STATUS_STERILING.equals(status)){ String sterileStartTime = rs.getString("sterileStartTime"); String sterilizerName = rs.getString("sterilizerName"); String sterilizationUser = rs.getString("sterilizationUser"); - Date validUntil = rs.getDate("validUntil"); + Date validUntil = rs.getTimestamp("validUntil"); + String barcode = rs.getString("barcode"); + obj.put("barcode", barcode); obj.put("sterileStartTime", sterileStartTime); obj.put("sterilizerName", sterilizerName); obj.put("sterilizationUser", sterilizationUser); @@ -6132,7 +6146,9 @@ String sterileEndTime = rs.getString("sterileEndTime"); String sterilizerName = rs.getString("sterilizerName"); String sterilizationUser = rs.getString("sterilizationUser"); - Date validUntil = rs.getDate("validUntil"); + Date validUntil = rs.getTimestamp("validUntil"); + String barcode = rs.getString("barcode"); + obj.put("barcode", barcode); obj.put("sterileStartTime", sterileStartTime); obj.put("sterileEndTime", sterileEndTime); obj.put("sterilizerName", sterilizerName); @@ -6141,8 +6157,10 @@ obj.put("validUntil", sdf.format(validUntil)); } }else if(TousseInstance.STATUS_SHIPPED.equals(status)){ - Date invoiceSendTime = rs.getDate("invoiceSendTime"); + Date invoiceSendTime = rs.getTimestamp("invoiceSendTime"); String invoiceSender = rs.getString("invoiceSender"); + String barcode = rs.getString("barcode"); + obj.put("barcode", barcode); if(invoiceSendTime != null){ obj.put("invoiceSendTime", sdf.format(invoiceSendTime)); } @@ -6187,26 +6205,32 @@ StringBuffer usedDateSql = new StringBuffer("");//已使用未回收的数量的时间查询条件 setDateSql(tiDateSql, recyDateSql, disinfectedDateSql, usedDateSql); //各种状态下的包实例数量,不包括聚合包、状态为已消毒、已回收、已使用的包数量的数量 - String tiSql = String.format("select count(*) amount ,status from TousseInstance where departCoding='%s' and tousseFixedBarcode=0 and tousseName='%s' and comboTousseInstanceId is null and status<>'%s' and status<>'%s' and status <> '%s' %s group by status ", + String tiSql = String.format("select count(*) amount ,status from TousseInstance ti " + + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + + " where ti.departCoding=ds.departCoding and ti.departCoding='%s' and tousseFixedBarcode=0 and ti.tousseName='%s' and comboTousseInstanceId is null and status<>'%s' and status<>'%s' and status <> '%s' %s group by status ", departCode, tousseName, TousseInstance.STATUS_RECYCLED, TousseInstance.STATUS_DISINFECTED, TousseInstance.STATUS_USED, tiDateSql); //已回收未清洗的包数量(非包实例数量) String recySql = String.format("select sum(ci.amount) amount,'%s' status from RecyclingItem ri " + " inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " + " inner join invoicePlan ip on ip.id=rr.recyclingApplication_id " + " inner join ClassifiedItem ci on ci.recyclingRecordId= rr.id " + " inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " - + " where ri.tousseDefinitionId=ci.tousseDefinitionid and tousseName='%s' and departCoding='%s' and cb.washStartTime is null %s ", TousseInstance.STATUS_RECYCLED, tousseName, departCode, recyDateSql); + + " inner join DepartmentStock ds on ds.tousseDefinition_id=ri.tousseDefinitionId " + + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s ", TousseInstance.STATUS_RECYCLED, tousseName, departCode, recyDateSql); //已消毒未装配的包数量(非包实例数量) - String disinfectedSql = String.format("select sum(ci.amount) amount,'%s' status from ClassifiedItem ci " + String disinfectedSql = String.format("select sum(unPackAmount) amount,'%s' status from ClassifiedItem ci " + " inner join TousseDefinition td on td.id=ci.tousseDefinitionID inner join invoicePlan ip on ip.id=ci.invoicePlanID inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " + " inner join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " + " inner join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " - + " where td.name='%s' and departCoding='%s' and wr.id is not null and not exists (select pc.id from PackingRecord_ClassifyBasket pc where pc.classifyBasketId=cb.id) %s", + + " inner join DepartmentStock ds on ds.tousseDefinition_id=td.id " + + " inner join PackingTask pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " + + " where td.name='%s' and ip.departCoding=ds.departCoding and ds.departCoding='%s' and wr.id is not null %s", TousseInstance.STATUS_DISINFECTED, tousseName, departCode, disinfectedDateSql); //已使用未回收数量(目前只统计了由使用记录转过来的申请单) String usedSql = String.format("select count(*) amount,'%s' status from TousseInstance ti" + " join UseRecord ur on ur.id=ti.useRecord_id " - + " where ti.useRecord_id is not null and ti.departCoding='%s' and tousseName='%s' " + + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + + " where ti.useRecord_id is not null and ti.departCoding=ds.departCoding and ds.departCoding='%s' and ti.tousseName='%s' " + " and ti.recyclingItemId is null %s", TousseInstance.STATUS_USED, departCode, tousseName, usedDateSql); String sql = String.format("%s union all %s union all %s union all %s ", tiSql, recySql, disinfectedSql, usedSql); Index: ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/dwr/table/DepartmentStockTableManager.java =================================================================== diff -u -r26602 -r26717 --- ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/dwr/table/DepartmentStockTableManager.java (.../DepartmentStockTableManager.java) (revision 26602) +++ ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/dwr/table/DepartmentStockTableManager.java (.../DepartmentStockTableManager.java) (revision 26717) @@ -10,6 +10,7 @@ import com.forgon.component.grid.GridManager; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; +import com.forgon.tools.util.SqlUtils; /** * @author WangYi @@ -29,16 +30,20 @@ if(StringUtils.isBlank(currentOrgUnitCoding)){ return "{\"selectSqlWhereCondition\":\"\",\"totalResults\":0,\"rows\":[]}"; } - String sql = "po.departCoding = '"+currentOrgUnitCoding+"'"; + String sql = String.format(" po.departCoding ='%s' and po.tousseDefinition.isDisable='否' ", currentOrgUnitCoding); String tousseName = sqlWhereParamMap.get("tousseName"); String queryType = sqlWhereParamMap.get("queryType"); + String tousseGroupName = sqlWhereParamMap.get("tousseGroupName"); if(StringUtils.isNotBlank(tousseName)){ if(DepartmentStock.QUERYTYPE_ACCURATEQUERY.equals(queryType)){//默认精确查询 sql = String.format(" %s and po.tousseName = '%s' ", sql, tousseName); }else{ sql += " and po.tousseName like '%"+ tousseName +"%'"; } } + if(StringUtils.isNotBlank(tousseGroupName) && tousseGroupName.indexOf("全部") == -1){ + sql += String.format(" %s ", SqlUtils.get_InSql("po.tousseDefinition.tousseGroupName", tousseGroupName.split(","))); + } return gridManager.renderGrid(parameterMap, DepartmentStock.class .getSimpleName(), sql, new String[] {"tousseInstances"}); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r26602 -r26717 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 26602) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 26717) @@ -359,6 +359,11 @@ String belongCodesStr = StrutsParamUtils.getPraramValue("belongOrgUnitCodes", ""); //设置参数dto TousseDefinitionParameterDto tdParameterDto = new TousseDefinitionParameterDto(); + String belongOrgUnit = StrutsParamUtils.getPraramValue("belongOrgUnit", ""); + if(StringUtils.isNotBlank(belongOrgUnit)){ + JSONObject belongOrgUnitArr = JSONObject.fromObject(belongOrgUnit); + tdParameterDto.setBelongOrgUnitArr(belongOrgUnitArr); + } tdParameterDto.setMaterialDefinitionConfigResult(materialDefinitionConfigResult); List belongCodes = (List) StringTools.toCollectionIgnoreNullAndBlank(belongCodesStr,Constants.IDS_SEPARATOR_COMMA); tdParameterDto.setBelongOrgUnitCodes(belongCodes); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js =================================================================== diff -u -r26603 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 26603) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 26717) @@ -5,7 +5,7 @@ var eventEdit = null; //上一次编辑所在行(开始编辑下一行之前) var lastEventEditRow = null; - +var belongOrgUnit = {}; var configStore; var materialsPanel; var materialConfig; @@ -2307,7 +2307,7 @@ msgTarget:'side', readOnly:true, onTriggerClick : function(){ - setDepartOrgUnit('belongDepartCodes' , 'belongDepartNames' , top.Ext.getCmp('belongDepartCodes').getValue()); + setDepartOrgUnit('belongDepartCodes' , 'belongDepartNames' , top.Ext.getCmp('belongDepartCodes').getValue(),belongOrgUnit); }, triggerClass : 'x-form-search-trigger', anchor : '100%' @@ -2719,7 +2719,8 @@ waitTitle : '提交表单', params : { materialDefinitionConfigResult : JSON.stringify(materials), - belongOrgUnitCodes : belongOrgUnitCodes + belongOrgUnitCodes : belongOrgUnitCodes, + belongOrgUnit : JSON.stringify(belongOrgUnit) }, success : function(form, action) { tousseWin.close(); @@ -2860,6 +2861,7 @@ var orgUnit = data[i]; belongDepartCodes.push(orgUnit.departCode); belongDepartNames.push(orgUnit.departName); + belongOrgUnit[orgUnit.departCode] = orgUnit; } //所属科室编码 top.Ext.getCmp("belongDepartCodes").setValue(belongDepartCodes.join(",")); Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp =================================================================== diff -u -r26603 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp (.../departmentStockInputView.jsp) (revision 26603) +++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp (.../departmentStockInputView.jsp) (revision 26717) @@ -72,11 +72,15 @@ + + +
+
\ No newline at end of file Index: ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManagerImpl.java =================================================================== diff -u -r26602 -r26717 --- ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManagerImpl.java (.../DepartmentStockManagerImpl.java) (revision 26602) +++ ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManagerImpl.java (.../DepartmentStockManagerImpl.java) (revision 26717) @@ -1,11 +1,16 @@ package com.forgon.disinfectsystem.stockmanage.departmentstock.service; +import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; @@ -17,12 +22,15 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; import com.forgon.tools.MathTools; import com.forgon.tools.SqlBuilder; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; import com.forgon.treenode.ext.model.ExtTreeNode; import com.forgon.treenode.model.THTreeNode; @@ -256,4 +264,46 @@ String sql = String.format("select count(*) from DepartmentStock where departCoding='%s' and tousseName='%s'", departCode, tousseName); return objectDao.countBySql(sql) > 0? false:true; } + + @Override + public void addDepartMentStockByDepartsAndTousseDefinition(JSONObject orgUnitArr, TousseDefinition tousseDefinition) { + Collection needAddCode = getDepartmentsToBeAdded(orgUnitArr, tousseDefinition); + if(needAddCode == null || needAddCode.size() == 0){ + return; + } + for (String departCoding : needAddCode) { + JSONObject obj = (JSONObject)orgUnitArr.get(departCoding); + DepartmentStock ds = new DepartmentStock(); + ds.setDepartCoding(obj.getString("departCode")); + ds.setDepartName(obj.getString("departName")); + ds.setTousseName(tousseDefinition.getName()); + TousseDefinition td = new TousseDefinition(); + td.setId(tousseDefinition.getAncestorID()); + ds.setTousseDefinition(td); + saveOrUpdata(ds); + } + } + /** + * 获取需要添加的科室库存的科室编码 + * @param tdBelongOrgUnitCodes + */ + private Collection getDepartmentsToBeAdded(JSONObject orgUnitArr, TousseDefinition tousseDefinition){ + String sql = String.format(" select departCoding from DepartmentStock where (tousseDefinition_id=%s or tousseName='%s') and %s ", tousseDefinition.getAncestorID(),tousseDefinition.getName(), SqlUtils.getStringFieldInLargeCollectionsPredicate("departCoding", orgUnitArr.keySet())); + ResultSet rs = null; + Collection result = null; + try { + rs = objectDao.executeSql(sql); + Set hadCode = new HashSet(); + while (rs.next()) { + String departCoding = rs.getString("departCoding"); + hadCode.add(departCoding); + } + result = CollectionUtils.subtract(orgUnitArr.keySet(), hadCode); + } catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return result; + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dto/TousseDefinitionParameterDto.java =================================================================== diff -u -r26179 -r26717 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dto/TousseDefinitionParameterDto.java (.../TousseDefinitionParameterDto.java) (revision 26179) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dto/TousseDefinitionParameterDto.java (.../TousseDefinitionParameterDto.java) (revision 26717) @@ -2,6 +2,8 @@ import java.util.List; +import net.sf.json.JSONObject; + /** * 用于记录前端保存器械包定义需要的额外参数Dto * @author YanWeiNing @@ -19,6 +21,7 @@ */ private List belongOrgUnitCodes; + private JSONObject belongOrgUnitArr; public String getMaterialDefinitionConfigResult() { return materialDefinitionConfigResult; } @@ -35,4 +38,13 @@ public void setBelongOrgUnitCodes(List belongOrgUnitCodes) { this.belongOrgUnitCodes = belongOrgUnitCodes; } + + public JSONObject getBelongOrgUnitArr() { + return belongOrgUnitArr; + } + + public void setBelongOrgUnitArr(JSONObject belongOrgUnitArr) { + this.belongOrgUnitArr = belongOrgUnitArr; + } + } Index: ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManager.java =================================================================== diff -u -r26602 -r26717 --- ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManager.java (.../DepartmentStockManager.java) (revision 26602) +++ ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/service/DepartmentStockManager.java (.../DepartmentStockManager.java) (revision 26717) @@ -6,6 +6,9 @@ import java.util.List; import java.util.Map; +import net.sf.json.JSONObject; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; @@ -44,5 +47,10 @@ * @return */ public boolean validationTousseName(String departCode, String tousseName); - + /** + * 根据所属科室,添加包指定部门的部门库存 + * @param orgUnitArr 所属科室 + * @param tousseDefinition 包定义 + */ + public void addDepartMentStockByDepartsAndTousseDefinition(JSONObject orgUnitArr, TousseDefinition tousseDefinition); } Index: ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/action/DepartmentStockAction.java =================================================================== diff -u -r26604 -r26717 --- ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/action/DepartmentStockAction.java (.../DepartmentStockAction.java) (revision 26604) +++ ssts-stockmanage/src/main/java/com/forgon/disinfectsystem/stockmanage/departmentstock/action/DepartmentStockAction.java (.../DepartmentStockAction.java) (revision 26717) @@ -6,6 +6,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -25,6 +26,7 @@ import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; import com.forgon.disinfectsystem.stockmanage.departmentstock.service.DepartmentStockManager; @@ -118,12 +120,15 @@ StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); JsonConfig config = new JsonConfig(); PropertyFilter propertyFilter = new JsonPropertyFilter(new String[] { - "handler", "hibernateLazyInitializer", "tousseInstances" }); + "handler", "hibernateLazyInitializer", "tousseInstances","tousseDefinition" }); config.setJsonPropertyFilter(propertyFilter); Map map = new HashMap(); map.put("success", true); map.put("data", departmentStock); + if(departmentStock.getTousseDefinition() != null){ + map.put("tousseDefinitionId", departmentStock.getTousseDefinition().getId()); + } JSONObject jsonObject = JSONObject.fromObject(map, config); String jsonStr = jsonObject.toString(); try { @@ -165,6 +170,12 @@ StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); try { if (departmentStock != null) { + Long tousseDefinitionId = StrutsParamUtils.getPraramLongValue("tousseDefinitionId", null); + if(tousseDefinitionId != null){ + TousseDefinition td = new TousseDefinition(); + td.setId(tousseDefinitionId); + departmentStock.setTousseDefinition(td); + } departmentStockManager.saveOrUpdata(departmentStock); } obj.put("success", true); Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputForm.js =================================================================== diff -u -r26603 -r26717 --- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputForm.js (.../departmentStockInputForm.js) (revision 26603) +++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputForm.js (.../departmentStockInputForm.js) (revision 26717) @@ -10,8 +10,9 @@ totalProperty : 'totalCount', root : 'data' }, [ - {name : 'id',mapping : 'id'}, - {name : 'spelling',mapping : 'spelling'}, + {name : 'id',mapping : 'id'}, + {name : 'ancestorID',mapping : 'ancestorID'}, + {name : 'spelling',mapping : 'spelling'}, {name : 'name',mapping : 'name'}, {name : 'displayName',mapping : 'displayName'}, {name : 'price',mapping : 'price'}, @@ -20,7 +21,7 @@ }); function addOrEditeDepartmentStock(id,departCoding,departName,tousseName){ - var departStockDetailStore = new top.Ext.data.Store({ + /*var departStockDetailStore = new top.Ext.data.Store({ proxy : new top.Ext.data.HttpProxy({ url : WWWROOT + '/disinfectSystem/departmentStockAction!loadDepartTousseInstance.do', method : 'POST' @@ -54,7 +55,7 @@ autoExpandColumn : 'status', frame : false, viewConfig: {forceFit:true} - }); + });*/ formObj = new top.Ext.FormPanel( { id : 'departmentStockForm', frame : true, @@ -73,6 +74,10 @@ name : 'departCoding', id : 'departCoding' }, { + xtype : 'hidden', + name : 'tousseDefinitionId', + id : 'tousseDefinitionId' + },{ layout : 'column', items : [{ columnWidth : 0.5, @@ -96,7 +101,7 @@ name : 'tousseName', queryParam : 'spell', minChars : 0, - valueField : 'id', + valueField : 'ancestorID', displayField : 'displayName', store : tousseAndDiposableGoodsStore, forceSelection : true, @@ -105,7 +110,13 @@ hideTrigger : true, typeAhead : false, allowBlank : true, - anchor : '100%' + anchor : '100%', + listeners: { + select: function (combo, record, index) { + var ids = record.get('ancestorID'); + top.Ext.getCmp("tousseDefinitionId").setValue(ids); + } + } } ] },/*{ columnWidth : 0.5, @@ -162,7 +173,35 @@ }, anchor : '95%' }] - } ] + },{ + layout:'form', + columnWidth:0.5, + labelWidth:80, + items:[{ + xtype : 'datefieldWithMin', + fieldLabel : '开始查询日期', + id : 'startTime', + name : 'startTime', + editable : false, + format : 'Y-m-d H:i:s', + 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 : true, + anchor : '100%', + theHours : 0, + theMinutes : 0, + listeners : { + specialkey : function(field, e) { + if (e.getKey() == Ext.EventObject.ENTER) { + var isOK = field.validate(); + if(isOK){ + var value = field.getValue(); + field.setValue(value); + } + } + } + } + }] + }] }/*,departStockDetailGrid*/ ], buttons : [{ id : 'saveBtn', @@ -176,14 +215,18 @@ }); //修改 if(id != 0){ - departStockDetailStore.load(); - formObj.add(departStockDetailGrid); + //departStockDetailStore.load(); + //formObj.add(departStockDetailGrid); formObj.form .load( { url : WWWROOT + '/disinfectSystem/departmentStockAction!loadDepartmentStock.do', method : 'GET', waitMsg : '正在加载数据,请稍候', success : function(form, action) { + top.Ext.getCmp("tousseDefinitionId").setValue(action.result.tousseDefinitionId); + if(action.result.data.startTime != null){ + top.Ext.getCmp("startTime").setValue(new Date(action.result.data.startTime.time)); + } }, failure : function(form, action) { }, @@ -199,7 +242,7 @@ id : 'departmentStockWin', layout : 'fit', title : '科室库存信息', - width : 600, + width : 650, border : false, modal : true, autoHeight : true,