Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManager.java =================================================================== diff -u -r14773 -r15348 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManager.java (.../ForeignProxyDisinfectionManager.java) (revision 14773) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManager.java (.../ForeignProxyDisinfectionManager.java) (revision 15348) @@ -11,6 +11,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyItem; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; /** * @@ -31,9 +32,8 @@ public void createForeignProxyDisinfectionTousseInstances( TousseDefinition tousseDefinition, String packageType, String sterilingType, int count, String basketBarcode, - Calendar validUntil, Calendar warningUntil, - List tousseInstances, Long foreignProxyItemId, - ForeignProxyDisinfection foreignProxyDisinfection, Long tousseItemId) throws Exception; + Calendar validUntil, Calendar warningUntil, List tousseInstances,ForeignProxyItem foreignProxyItem, + ForeignProxyDisinfection foreignProxyDisinfection,TousseItem tousseItem) throws Exception; public void saveOrUpdate(ForeignProxyItem foreignProxyItem); Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/foreignProxyDisinfectionView.js =================================================================== diff -u -r15335 -r15348 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/foreignProxyDisinfectionView.js (.../foreignProxyDisinfectionView.js) (revision 15335) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/foreignProxyDisinfectionView.js (.../foreignProxyDisinfectionView.js) (revision 15348) @@ -412,6 +412,7 @@ {name : 'packageType'}, {name : 'tousseType'}, {name : 'sterilingType'}, + {name : 'sterileStartDate'}, {name : 'basketName'}, {name : 'basketBarcode'}, {name : 'count'}, @@ -454,7 +455,11 @@ obj.sterilingType = record.get('sterilingType'); obj.basketName = record.get('basketName'); obj.basketBarcode = record.get('basketBarcode'); - + var sterileStartDate = record.get('sterileStartDate'); + if(typeof sterileStartDate == 'object'){ + sterileStartDate = sterileStartDate.format('Y-m-d') + } + obj.sterileStartDate = sterileStartDate; array.push(obj); } top.Ext.getCmp('itemIds').setValue(JSON.stringify(array)); @@ -466,6 +471,7 @@ var tousseType = top.Ext.getCmp('tousseType1').getValue(); var packageType = top.Ext.getCmp('packageType1').getValue(); var sterilingType = top.Ext.getCmp('sterilingType1').getValue(); + var sterileStartDate = top.Ext.getCmp('sterileStartDate1').getValue(); var basketName = top.Ext.getCmp('basketName').getValue(); if(mustScanBasketForForeignProxy && basketName!=null && basketName.trim().length==0){ showResult("请先扫描灭菌筐!"); @@ -485,7 +491,7 @@ showResult("请输入数量,数量必须大于0!"); top.Ext.getCmp('count1').focus(); }else{ - addItemToGrid(top.Ext.getCmp('package1').getRawValue(),count,packageType,sterilingType,top.Ext.getCmp('basketName').getValue(),top.Ext.getCmp('basketBarcode1').getValue(),top.Ext.getCmp('tousseType1').getValue()); + addItemToGrid(top.Ext.getCmp('package1').getRawValue(),count,packageType,sterilingType,sterileStartDate,top.Ext.getCmp('basketName').getValue(),top.Ext.getCmp('basketBarcode1').getValue(),top.Ext.getCmp('tousseType1').getValue()); //光标操作 top.Ext.getCmp('package1').setValue(""); top.Ext.getCmp('tousseType1').setValue(""); @@ -576,229 +582,6 @@ }); } -function reSetPackagePrintInfo(tousseStore){ - var resetForm = new top.Ext.form.FormPanel({ - labelAlign : 'right', - buttonAlign : 'center', - split : true, - border : 0, - frame : true, - layout: 'column', - bodyStyle : 'padding:0px auto;margin:0px',// padding:1px;padding-top:5px; - items : [/*{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - items : [ { - xtype : 'textfield', - fieldLabel : "配包者条码", - name : "operatorBarcode", - id : "operatorBarcode2", - allowBlank : true, - listeners : { - specialkey : function(thiz, e){ - if(e.getKey() == 13){ - loadUserByBarcode2(thiz,'jobType_pack'); - } - } - }, - anchor : '100%' - }] - },{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - items : [{ - xtype : 'textfield', - fieldLabel : '配包者', - maxLength : '16', - id : 'operator2', - name : 'operator', - allowBlank : false, - readOnly : true, - anchor : '100%', - cls:'x-item-disabled' - }] - },*/ { - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - items : [{ - xtype : 'combo', - fieldLabel : "灭菌程序", - valueField : 'typeName', - displayField : 'typeName', - store : sterilizerTypeStore, - forceSelection : true, - editable : false, - triggerAction : 'all', - name : "sterilingType", - id : "sterilingType2", - anchor : '100%', - allowBlank : false - }] - },{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - items : [ { - xtype : 'combo', - fieldLabel : "包装类型", - valueField : 'typeName', - displayField : 'typeName', - store : packageTypeStore, - forceSelection : true, - editable : false, - triggerAction : 'all', - name : "packageType", - id : "packageType2", - anchor : '100%', - allowBlank : false - }] - },{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - hidden : !sstsConfig.showSterilizer, - items : [{ - xtype : 'combo', - fieldLabel : '灭菌炉', - id : 'sterilizer2', - name : 'sterilizer', - valueField : 'sterilizerName', - displayField : 'sterilizerName', - store : sterilizerJsonStore, - triggerAction : 'all', - mode : 'remote', - forceSelection : true, - allowBlank : true, - anchor : '100%', - listeners : { - select : function(combo, record, index) { - var sterilingType = top.Ext.getCmp('sterilingType2').getRawValue(); - SterilizationRecordTableManager.getMaxFrequency(combo.value,0,function(frequency){ - top.Ext.getCmp('frequency2').setValue(frequency); - }); - } - } - }] - },{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - hidden : !sstsConfig.showSterilizer, - items : [{ - xtype : 'numberfield', - fieldLabel : '炉次', - allowDecimals : false, - allowNegative : false, - minValue : 1, - id : 'frequency2', - name : 'frequency', - allowBlank : true, - value : 1, - anchor : '100%' - }] - },{ - columnWidth : .5, - layout : 'form', - cls:'edit-5char-labelwidth', - items : [{ - xtype : 'datefieldWithMin', - fieldLabel : '配包时间', - id : 'packingTime2', - name : 'packingTime', - editable : false, - format : 'Y-m-d H:i', - allowBlank : true, - anchor : '100%', - readOnly :true - }] - }], - buttons : [{ - text : '确定', - handler : function() { - var operator2 = top.Ext.getCmp('operator2').getRawValue(); - var sterilingType2 = top.Ext.getCmp('sterilingType2').getValue(); - var packageType2 = top.Ext.getCmp('packageType2').getValue(); - var sterilizer2 = top.Ext.getCmp('sterilizer2').getValue(); - var frequency2 = top.Ext.getCmp('frequency2').getRawValue(); - var packingTime = top.Ext.getCmp('packingTime2').getRawValue(); - - var records = top.Ext.getCmp('tousseGrid').getSelectionModel().getSelections(); - for ( var i = 0, len = records.length; i < len; i++) { - - var change = false; - var needUpdateValidDate = false; - var operator = records[i].get('packer'); - if(operator2.length >0 && operator != operator2){ - records[i].set('packer',operator2); - change = true; - } - var sterilizer = records[i].get('sterilizer'); - if(sterilizer2.length >0 && sterilizer != sterilizer2){ - records[i].set('sterilizer',sterilizer2); - change = true; - } - var packType = records[i].get('packType'); - if(packageType2.length >0 && packType != packageType2){ - records[i].set('packType',packageType2); - needUpdateValidDate = true; - }else{ - packageType2 = packType; - } - var sterilization = records[i].get('sterilization'); - if(sterilingType2.length >0 && sterilization != sterilingType2){ - records[i].set('sterilization',sterilingType2); - needUpdateValidDate = true; - }else{ - sterilingType2 = sterilization; - } - var frequency = records[i].get('frequency'); - if(frequency2.length >0 && frequency != frequency2){ - records[i].set('frequency',frequency2); - change = true; - } - - if(packingTime.length >0 && packingTime != records[i].get('packTime')){ - records[i].set('packTime',packingTime); - needUpdateValidDate = true; - }else{ - packingTime = records[i].get('packTime'); - } - if(needUpdateValidDate){ - //修改失效期 - DWREngine.setAsync(false); - ExpirationDateInfoTableManager.getExpirationDateStrArr(packageType2,packingTime,function(result){ - if(result != null && result.length > 1){ - records[i].set('validUntilStr',result[0]); - records[i].set('warningDateStr',result[1]); - } - }); - DWREngine.setAsync(true); - } - if(change || needUpdateValidDate){ - records[i].set('isChange',"true"); - } - - } - top.Ext.getCmp('reSetWin').close(); - } - }] - }); - - var reSetWin = new top.Ext.Window({ - id : 'reSetWin', - layout : 'fit', - title : '修改器械包信息', - modal : true, - border : false, - width : 500, - height : 170, - items : [resetForm] - }); - reSetWin.show(); -} function validateForSubmit(){ if(!form.getForm().isValid()){ @@ -935,6 +718,35 @@ } }) },{ +// id : 'sterileDateCM', + header : "灭菌日期", + dataIndex : 'sterileStartDate', + width : 200, + menuDisabled: true, + renderer: function(v){ + if(typeof v == 'object'){ + v = v.format('Y-m-d') + } + return v; + }, +// hidden : sstsConfig.hiddenForeignProxyPartElement, + editor : new top.Ext.form.DateExtensiableField({ + xtype : 'dateextensiablefield', +// id : 'sterileStartDate', +// name : 'sterileStartDate', + width: 200, + minWidth : 190, +// hidden : sstsConfig.printLabelWhenReviewing, +// emptyText : '2016-02-01', +// inputAttrTpl: " data-qtip='空白表示灭菌日期为今天' ", + editable : false, + 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', +// selectOnFocus :true, + format : 'Y-m-d', + allowBlank : true, + anchor : '97%' + }) + },{ id : 'basketName1', header : "灭菌筐", hidden : sstsConfig.hiddenForeignProxyPartElement, @@ -1372,7 +1184,7 @@ store : foreignItemStore, bodyStyle : 'border:1px solid #afd7af', cm : cm, - width :720, + width :974, height : 315, viewConfig: { forceFit: true @@ -1472,6 +1284,24 @@ } } },{ + text : '灭菌日期:', + hidden : false + },{ + xtype : 'dateextensiablefield', + id : 'sterileStartDate1', + name : 'sterileStartDate1', + width: 200, + minWidth : 190, +// hidden : sstsConfig.printLabelWhenReviewing, +// emptyText : '2016-02-01', +// inputAttrTpl: " data-qtip='空白表示灭菌日期为今天' ", + editable : false, + 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', +// selectOnFocus :true, + format : 'Y-m-d', + allowBlank : true, + anchor : '97%' + },{ text : '数量:' },{ xtype : 'numberfield', @@ -1687,7 +1517,7 @@ id : 'foreignProxyDisinfectionWin', layout : 'fit', title : entityName + '单信息', - width : 780, + width : 1024, modal : true, border : false, autoHeight : true, @@ -1713,6 +1543,9 @@ top.Ext.getCmp('saveBtn').disable(); }else{ top.Ext.getCmp('printBtn').disable(); + if(isUndefinedOrNullOrEmpty(action.result.data.sterilizationUser)){ + top.Ext.getCmp('sterilizationUser').setValue($Id('userName').value); + } } }, failure : function(form, action) { @@ -1738,7 +1571,6 @@ top.Ext.getCmp('applicationTimeStr').setValue(Ext.util.Format.date(new Date(), 'Y-m-d H:i')); top.Ext.getCmp('arrivedTimeStr').setValue(Ext.util.Format.date(new Date(), 'Y-m-d H:i')); } - } function disableButtonsAfterPacking(){ @@ -2153,7 +1985,7 @@ return isExist; } -function addItemToGrid(tousseName,count,packageType,sterilingType,basketName,basketBarcode,tousseType){ +function addItemToGrid(tousseName,count,packageType,sterilingType,sterileStartDate,basketName,basketBarcode,tousseType){ if(checkItemIsRepeat(tousseName, packageType, sterilingType, '')){ showResult("此记录项在"+entityName+"单明细中已存在"); return; @@ -2167,6 +1999,7 @@ basketBarcode : basketBarcode, tousseType : tousseType, sterilingType : sterilingType, + sterileStartDate : sterileStartDate, packageType : packageType }); foreignItemStore.add(tousseInstance); Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java =================================================================== diff -u -r15259 -r15348 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 15259) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/service/ForeignProxyDisinfectionManagerImpl.java (.../ForeignProxyDisinfectionManagerImpl.java) (revision 15348) @@ -58,6 +58,7 @@ import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.ForgonDateUtils; /** * @@ -472,12 +473,11 @@ } - @Override public void createForeignProxyDisinfectionTousseInstances( TousseDefinition tousseDefinition, String packageType, String sterilingType, int count, String basketBarcode, - Calendar validUntil, Calendar warningUntil, List tousseInstances,Long foreignProxyItemId, - ForeignProxyDisinfection foreignProxyDisinfection,Long tousseItemId) { + Calendar validUntil, Calendar warningUntil, List tousseInstances,ForeignProxyItem foreignProxyItem, + ForeignProxyDisinfection foreignProxyDisinfection,TousseItem tousseItem) { int tousseAmount = count; // logger.debug("Thread " + Thread.currentThread().getName() // + " 外部代理灭菌保存,器械包数量=" + tousseAmount); @@ -496,8 +496,18 @@ double fPrice = supplyRoomConfigManager.getTousseFluctuationPrice(price); Date currentTime = new Date(); - String sterileStartTime = TousseInstanceUtils.buildSterileStartTime(currentTime); + String sterileStartDate = foreignProxyItem.getSterileStartDate(); + Date stDate = null; + if(StringUtils.isNotBlank(sterileStartDate)){ + stDate = ForgonDateUtils.safelyParseDate( + sterileStartDate, + Constants.DATEFORMAT_YYYYMMDD); + } + if(stDate == null){ + stDate = currentTime; + } + String sterileStartTime = TousseInstanceUtils.buildSterileStartTime(stDate); synchronized(serialNumManager){ // 避免并发配包时数据库死锁 ReviewedBasket basket = null; if(StringUtils.isNotBlank(basketBarcode)){ @@ -554,8 +564,8 @@ if(basket != null){ tousseInstance.setReviewBasket_id(basket.getId()); } - tousseInstance.setForeignProxyItem_id(foreignProxyItemId); - tousseInstance.setApplicationTousseItemId(tousseItemId); + tousseInstance.setForeignProxyItem_id(foreignProxyItem.getId()); + tousseInstance.setApplicationTousseItemId(tousseItem.getId()); tousseInstance.setInvoicePlanID(foreignProxyDisinfection.getId()); tousseInstance.setDepart(foreignProxyDisinfection.getDepart()); tousseInstance.setDepartCoding(foreignProxyDisinfection.getDepartCoding()); @@ -690,8 +700,8 @@ createForeignProxyDisinfectionTousseInstances(tousseDefinition, packageType, sterilingType, proxyItem.getCount(), proxyItem.getBasketBarcode(), validUntil, warningUntil, - tousseInstances,proxyItem.getId(), - foreignProxyDisinfection,tousseItem.getId()); + tousseInstances,proxyItem, + foreignProxyDisinfection,tousseItem); if(tousseInstances.isEmpty()){ throw new RuntimeException("创建包实例失败!"); } @@ -777,6 +787,7 @@ foreignProxyDisinfection.setMaker(modifiedForeignProxyDisinfection.getMaker()); foreignProxyDisinfection.setAssistant(modifiedForeignProxyDisinfection.getAssistant()); foreignProxyDisinfection.setSterilizer(modifiedForeignProxyDisinfection.getSterilizer()); + foreignProxyDisinfection.setSterilizationUser(modifiedForeignProxyDisinfection.getSterilizationUser()); foreignProxyDisinfection.setFrequency(modifiedForeignProxyDisinfection.getFrequency()); foreignProxyDisinfection.setRemark(modifiedForeignProxyDisinfection.getRemark()); } @@ -845,6 +856,7 @@ foreignProxyItem.setTousseType(obj.optString("tousseType")); foreignProxyItem.setPackageType(packageType); foreignProxyItem.setSterilingType(obj.optString("sterilingType")); + foreignProxyItem.setSterileStartDate(obj.optString("sterileStartDate")); foreignProxyItem.setBasketName(obj.optString("basketName")); foreignProxyItem.setBasketBarcode(obj.optString("basketBarcode")); newItems.add(foreignProxyItem); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/foreignproxydisinfection/ForeignProxyItem.java =================================================================== diff -u -r14750 -r15348 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/foreignproxydisinfection/ForeignProxyItem.java (.../ForeignProxyItem.java) (revision 14750) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/sterilizationmanager/foreignproxydisinfection/ForeignProxyItem.java (.../ForeignProxyItem.java) (revision 15348) @@ -35,6 +35,8 @@ private String sterilingType;//灭菌程序 + private String sterileStartDate;//灭菌开始日期 + private Integer count; private String basketName; @@ -99,6 +101,14 @@ this.sterilingType = sterilingType; } + public String getSterileStartDate() { + return sterileStartDate; + } + + public void setSterileStartDate(String sterileStartDate) { + this.sterileStartDate = sterileStartDate; + } + public List getTousseInstanceList(ObjectDao dao) { return dao.findByProperty(TousseInstance.class.getSimpleName(), "foreignProxyItem_id", ""+id); }