Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryExpensiveGoodsForm.js =================================================================== diff -u -r21054 -r21060 --- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryExpensiveGoodsForm.js (.../inventoryExpensiveGoodsForm.js) (revision 21054) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryExpensiveGoodsForm.js (.../inventoryExpensiveGoodsForm.js) (revision 21060) @@ -32,7 +32,9 @@ {name : 'expDate'} ] ),listeners:{ - 'load':function(){ + 'beforeload':function(){ + //开启进度条 + },'load':function(){ for ( var i = 0; i < itemsStore.getCount(); i++) { var record = itemsStore.getAt(i); var storage = record.get("amount"); @@ -42,6 +44,7 @@ record.set('inventoryAmount',storage); } } + //关闭进度条 } } }); @@ -76,6 +79,7 @@ {name : 'specification',mapping : 'specification'},//规格 {name : 'externalCode',mapping : 'externalCode'}, {name : 'sequence',mapping : 'sequence'}, + {name : 'referencePrice',mapping : 'referencePrice'}, {name : 'type',mapping : 'type'}, {name : 'unit',mapping : 'unit'} ]) @@ -493,6 +497,7 @@ top.Ext.getCmp('specification').setValue(record.data.specification); top.Ext.getCmp('unit').setValue(record.data.unit); top.Ext.getCmp('referencePrice').setValue(record.data.referencePrice); + top.Ext.getCmp('cost').setValue(record.data.referencePrice); //top.Ext.getCmp('externalCode').setValue(record.data.externalCode); //top.Ext.getCmp('sequence').setValue(record.data.sequence); } @@ -561,14 +566,14 @@ allowNegative : false, allowBlank:false, width : 60 - }/*,{ + },{ text : '添加', iconCls : 'btn_ext_add', id:'addBtn', handler : function() { insertIntoGrid(); } - }*/] + }] })], buttons : [/*{ text : '导出', @@ -641,7 +646,7 @@ var unit = top.Ext.getCmp('unit').getValue(); var amount = top.Ext.getCmp('amount').getValue(); var cost = top.Ext.getCmp('cost').getValue(); - var expDate = top.Ext.getCmp('expDate').getValue(); + var expDate = top.Ext.getCmp('expDate').getRawValue(); /*var supplierName = top.Ext.getCmp('supplierCombo').getRawValue(); var externalCode = top.Ext.getCmp('externalCode').getValue(); var sequence = top.Ext.getCmp('sequence').getValue();*/ @@ -675,25 +680,82 @@ var itemsStore = top.Ext.getCmp('inventoryRecordForm').getStore(); var dataCount = itemsStore.getCount(); //根据expensiveGoodsId查grid中是否存在(如果不存在,则在表格的头加上,并根据数量加上指定行数的高值耗材实例数据.如果存在则加定义这一行的下一行) - + if(dataCount > 0){ + //对应高值耗材定义所在的行 + var rowNumberForExpensiveGoodsId = 0; + var expensiveGoodsIdInventoryRow; + for(var i = 0;i < dataCount;i++){ + var record = itemsStore.getAt(i); + if(record.data["type"] == 'ExpensiveGoods' && record.data["expensiveGoodsId"] == expensiveGoodsId){ + expensiveGoodsIdInventoryRow = record; + rowNumberForExpensiveGoodsId = i; + break; + } + } + //1.如果grid表格里有数据,并且找到该高值耗材定义的数据行 + if(expensiveGoodsIdInventoryRow){ + expensiveGoodsIdInventoryRow.set('inventoryAmount',parseInt(expensiveGoodsIdInventoryRow.data["inventoryAmount"]) + amount); + expensiveGoodsIdInventoryRow.set('cost',parseFloat(expensiveGoodsIdInventoryRow.data["cost"]) + (cost * amount)); + //然后根据数量添加盘点物品的数据行 + for(var i = 0;i < amount;i++){ + //先添加高值耗材定义的盘点数据行 + var inventoryItem = new inventoryRecordItem({ + expensiveGoodsId:expensiveGoodsId, + name:name, + specification:specification, + amount : 0, + inventoryAmount : 1, + cost:cost, + expDate:expDate, + type : 'ExpensiveGoodsInstance', + unit : unit + }); + itemsStore.insert(++rowNumberForExpensiveGoodsId , inventoryItem); + } + }else{ + //2.如果grid表格里有数据,但未找到该高值耗材定义的数据行时 + newExpensiveGoodsInventoryItem(itemsStore , dataCount , expensiveGoodsId,name,specification,amount,referencePrice , cost, unit ,expDate); + } + }else{ + //3.如果整个grid没有数据时,则添加,索引位置为空 + newExpensiveGoodsInventoryItem(itemsStore , 0 , expensiveGoodsId,name,specification,amount,referencePrice , cost, unit ,expDate); + } + } + + /** + * 创建新的高值耗材盘点数据(定义与实例都需要创建) + */ + function newExpensiveGoodsInventoryItem(itemsStore , insertIndex ,expensiveGoodsId,name,specification,amount,referencePrice , cost, unit ,expDate){ + //先添加高值耗材定义的盘点数据行 var inventoryItem = new inventoryRecordItem({ - id:'', expensiveGoodsId:expensiveGoodsId, - expensiveGoodsInstanceId:expensiveGoodsInstanceId, - firstBodyCode:firstBodyCode, - secondBodyCode:secondBodyCode, - thirdBodyCode:thirdBodyCode, name:name, specification:specification, amount : 0, inventoryAmount : amount, - cost:cost, - externalCode:externalCode, - sequence : sequence, - type : type, + cost:cost * amount, + expDate:expDate, + type : 'ExpensiveGoods', unit : unit }); - itemsStore.insert(0 , inventoryItem); + itemsStore.insert(++rowNumberForExpensiveGoodsId , inventoryItem); + + //然后根据数量添加盘点物品的数据行 + for(var i = 0;i < amount;i++){ + //先添加高值耗材定义的盘点数据行 + var inventoryItem = new inventoryRecordItem({ + expensiveGoodsId:expensiveGoodsId, + name:name, + specification:specification, + amount : 0, + inventoryAmount : 1, + cost:cost, + expDate:expDate, + type : 'ExpensiveGoodsInstance', + unit : unit + }); + itemsStore.insert(++rowNumberForExpensiveGoodsId , inventoryItem); + } } } @@ -749,7 +811,7 @@ expensiveGoodsId:expensiveGoodsId, name:records[0].data["name"], specification:records[0].data["specification"], - amount : 1, + amount : 0, inventoryAmount : 1, cost:records[0].data["referencePrice"], expDate:records[0].data["expDate"], Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java =================================================================== diff -u -r21054 -r21060 --- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 21054) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 21060) @@ -54,7 +54,6 @@ import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; -import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntry; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryExpensiveGoodsItem; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryExpensiveItem; @@ -81,9 +80,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.excel.ExcelCellStyle; import com.forgon.tools.excel.ExcelHelper; -import com.forgon.tools.hibernate.BasePoManager; import com.forgon.tools.hibernate.BasePoManagerImpl; -import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; /** @@ -1090,8 +1087,14 @@ */ private void checkExistsNotUpdatedInventoryRecordByWarehouseId(Long warehouseId , String type){ String inventoryType = InventoryRecord.TYPE_DISPOSABLEGOOD; - if("material".equals(type)){ + if(InventoryRecord.TYPECODE_MATERIAL.equals(type)){ inventoryType = InventoryRecord.TYPE_MATERIALENTRY; + }else if(InventoryRecord.TYPECODE_DISPOSABLEGOODS.equals(type)){ + inventoryType = InventoryRecord.TYPE_DISPOSABLEGOOD; + }else if(InventoryRecord.TYPECODE_EXPENSIVEGOODS.equals(type)){ + inventoryType = InventoryRecord.TYPE_EXPENSIVEGOODS; + }else{ + throw new RuntimeException("盘点的物品类型【"+ type +"】非法"); } InventoryRecord notUpdatedInventoryRecord = (InventoryRecord)objectDao.getBySql(InventoryRecord.class.getSimpleName(),