Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoicePrintVo.java =================================================================== diff -u -r23581 -r26359 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoicePrintVo.java (.../InvoicePrintVo.java) (revision 23581) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/vo/InvoicePrintVo.java (.../InvoicePrintVo.java) (revision 26359) @@ -19,6 +19,15 @@ /** * 器械包类型。值为tousseDefinition中的tousseType或者是一次性物品 */ + + /** + * 器械包定义ID + */ + private Long tousseDefinitionId; + /** + * 材料所属器械包名称 + */ + private String tousseName; private String tousseType; private String name = ""; private int serialNumber = 1; @@ -76,6 +85,22 @@ private String expensiveGoodsModelName = ""; private String expensiveGoodsType = ""; + public Long getTousseDefinitionId() { + return tousseDefinitionId; + } + + public void setTousseDefinitionId(Long tousseDefinitionId) { + this.tousseDefinitionId = tousseDefinitionId; + } + + public String getTousseName() { + return tousseName; + } + + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public String getTousseType() { return tousseType; } Index: ssts-web/src/main/webapp/disinfectsystem/config/gzsdbrmyy/print/printConfig.js =================================================================== diff -u -r25436 -r26359 --- ssts-web/src/main/webapp/disinfectsystem/config/gzsdbrmyy/print/printConfig.js (.../printConfig.js) (revision 25436) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzsdbrmyy/print/printConfig.js (.../printConfig.js) (revision 26359) @@ -1,4 +1,4 @@ -var appropriationInListConfig = { +var appropriationInListConfig = { headerFooter : [ // 页眉名称 {label : "广州市第八人民医院调拨入库单", dataIndex : '', fontSize : 15, position : ["0.3cm","37%","99%",5]}, @@ -237,7 +237,8 @@ columns : [ {header : "序号", dataIndex : 'serialNumber', width : '100', align : 'center', fontSize : 11}, {header : "编码", dataIndex : 'externalCode', width : '150', align : 'center', fontSize : 11}, - {header : "名称", dataIndex : 'name', width : '150', align : 'center', fontSize : 11}, + {header : "器械包名称", dataIndex : 'tousseName', width : '150', align : 'center', fontSize : 11}, + {header : "材料名称", dataIndex : 'name', width : '150', align : 'center', fontSize : 11}, {header : "规格", dataIndex : 'specification', width : '150', align : 'center', fontSize : 11}, // {header : "包装规格", dataIndex : 'packageSpec', width : '15%', align : 'center', fontSize : 11}, {header : "单位", dataIndex : 'unit', width : '100', align : 'center', fontSize : 11}, Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/MaterialInvoiceAction.java =================================================================== diff -u -r25216 -r26359 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/MaterialInvoiceAction.java (.../MaterialInvoiceAction.java) (revision 25216) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/MaterialInvoiceAction.java (.../MaterialInvoiceAction.java) (revision 26359) @@ -108,6 +108,7 @@ //材料发货单明细 for (MaterialInvoiceItem mInvoiceItem : materialInvoiceItemList) { JSONObject mInvoiceJson = new JSONObject(); + mInvoiceJson.put("tousseName", mInvoiceItem.getTousseName()); mInvoiceJson.put("id", mInvoiceItem.getId()); mInvoiceJson.put("materialDefinitionId", mInvoiceItem.getMaterialDefinitionId()); mInvoiceJson.put("materialName", mInvoiceItem.getMaterialName()); @@ -193,7 +194,20 @@ MaterialInvoiceItem item = new MaterialInvoiceItem(); Long id = jsonData.optLong("id"); item.setId(id == null || id == 0 ? null : id); - item.setMaterialDefinitionId(jsonData.optLong("materialDefinitionId")); + Long materialDefinitionId = jsonData.optLong("materialDefinitionId"); + if (materialDefinitionId.longValue() != 0) { + item.setMaterialDefinitionId(materialDefinitionId); + } + // 增加器械包名称 + String tousseName = jsonData.optString("tousseName"); + if (StringUtils.isNotBlank(tousseName)) { + item.setTousseName(tousseName); + } + // 器械包定义ID + String tousseDefinitionId = jsonData.optString("tousseDefinitionId"); + if (StringUtils.isNotBlank(tousseDefinitionId)) { + item.setTousseDefinitionId(Long.parseLong(tousseDefinitionId)); + } item.setMaterialName(jsonData.optString("materialName")); item.setAmount(jsonData.optInt("amount")); item.setUserecordId(jsonData.optLong("userecordId")); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.js =================================================================== diff -u -r26354 -r26359 --- ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.js (.../materialInvoiceView.js) (revision 26354) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.js (.../materialInvoiceView.js) (revision 26359) @@ -27,13 +27,15 @@ var MaterialInvoiceItemRecord = Ext.data.Record.create([ {name : 'id'}, + {name : 'tousseDefinitionId'}, {name : 'materialDefinitionId'}, {name : 'materialName'}, {name : 'amount'}, {name : 'storage'}, {name : 'userecordId'}, {name : 'userecordName'}, - {name : 'userecordDepartCoding'} + {name : 'userecordDepartCoding'}, + {name : 'tousseName'} ]); var departRecord = Ext.data.Record.create([ @@ -159,8 +161,7 @@ {name : 'cost',mapping : 'cost'}, {name : 'displayName',mapping : 'displayName'}, {name : 'spelling',mapping : 'spelling'}, - {name : 'storage',mapping : 'storage'}, - {name : 'type',mapping : 'type'} + {name : 'storage',mapping : 'storage'} ]), listeners : { beforeload : function(store,option) { @@ -212,12 +213,23 @@ showResult("发货数量不能大于库存数量!"); return false; } - for(var i = 0;i < top.Ext.getCmp('materialInvoiceItemGrid').getStore().getCount();i++){ - if(top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.materialDefinitionId == materialDefinitionId - && top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.userecordDepartCoding == userecordDepartCoding){ - showResult("该物品以及关联的使用记录已经存在,不能重复添加!"); - return false; + // + if (!top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.tousseDefinitionId + || top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.tousseDefinitionId == '') { + if(top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.materialDefinitionId == materialDefinitionId + && top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.userecordId == userecordId){ + showResult("该物品以及关联的使用记录已经存在,不能重复添加!"); + top.Ext.getCmp('name1').setValue(''); + top.Ext.getCmp('cost').setValue(''); + top.Ext.getCmp('amount1').setValue(''); + top.Ext.getCmp('materialDefinitionId').setValue(''); + top.Ext.getCmp('userecordId').setValue(''); + top.Ext.getCmp('userecordName').setValue(''); + top.Ext.getCmp('userecordDepartCoding').setValue(''); + top.Ext.getCmp('name1').focus(); + return false; + } } } @@ -262,8 +274,17 @@ for(var i = 0;i < top.Ext.getCmp('materialInvoiceItemGrid').getStore().getCount();i++){ if(top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.tousseDefinitionId == tousseDefinitionId - && top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.userecordDepartCoding == userecordDepartCoding){ - showResult("该物品以及关联的使用记录已经存在,不能重复添加!"); + && top.Ext.getCmp('materialInvoiceItemGrid').getStore().getAt(i).data.userecordId == userecordId){ + showResult("该器械包物品以及关联的使用记录已经存在,不能重复添加!"); + top.Ext.getCmp('toussedefinitionId').setValue(''); + top.Ext.getCmp('name2').setValue(''); + top.Ext.getCmp('cost').setValue(''); + top.Ext.getCmp('amount1').setValue(''); + top.Ext.getCmp('materialDefinitionId').setValue(''); + top.Ext.getCmp('userecordId').setValue(''); + top.Ext.getCmp('userecordName').setValue(''); + top.Ext.getCmp('userecordDepartCoding').setValue(''); + top.Ext.getCmp('name2').focus(); return false; } } @@ -303,7 +324,6 @@ } }); top.Ext.getCmp('toussedefinitionId').setValue(''); - top.Ext.getCmp('type').setValue(''); top.Ext.getCmp('name2').setValue(''); top.Ext.getCmp('cost').setValue(''); top.Ext.getCmp('amount1').setValue(''); @@ -502,7 +522,6 @@ cm : new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {header : "id",dataIndex : 'id',hidden : true}, {header : "materialDefinitionId",dataIndex : 'materialDefinitionId',hidden : true}, - {header : "tousseDefinitionId",dataIndex : 'tousseDefinitionId',hidden : true}, {header : "器械包名称",dataIndex : 'tousseName',width : 50}, {header : "材料名称",dataIndex : 'materialName',width : 50,menuDisabled : true, editor : new top.Ext.form.ComboBox({ @@ -545,8 +564,8 @@ } })*/ }, - {header : "单价",width : 20,menuDisabled : true,dataIndex : 'singlePrice', id:'singlePrice'}, - {header : " 数量",dataIndex : 'amount',width : 20,menuDisabled : true, + {header : "单价",width : 20,menuDisabled : true,dataIndex : 'singlePrice', id:'singlePrice', align:'center'}, + {header : " 数量",dataIndex : 'amount',width : 20,menuDisabled : true, align:'center', editor : new Ext.form.TextField({ regex: /^\d+$/, regexText:'只能输入数字', @@ -568,10 +587,6 @@ id : 'toussedefinitionId' },{ xtype : 'hidden', - name : 'type', - id : 'type' - },{ - xtype : 'hidden', name : 'tousseName', id : 'tousseName' },{ @@ -608,7 +623,6 @@ width : 150, listeners : { select : function(combo, record, index) { - top.Ext.getCmp('type').setValue(record.data.type); // 器械包 top.Ext.getCmp('toussedefinitionId').setValue(record.data.id); top.Ext.getCmp('tousseName').setValue(record.data.name); @@ -707,10 +721,9 @@ text : '添加', iconCls : 'btn_ext_add', handler : function() { - var type = top.Ext.getCmp('type').getValue(); - if (type !== '') { + var toussedefinitionId = top.Ext.getCmp('toussedefinitionId').getValue(); + if (toussedefinitionId !== '') { // 器械包材料 - var toussedefinitionId = top.Ext.getCmp('toussedefinitionId').getValue(); var tousseName = top.Ext.getCmp('tousseName').getValue(); var amount = top.Ext.getCmp('amount1').getValue(); var userecordId = top.Ext.getCmp('userecordId').getValue(); @@ -768,6 +781,8 @@ jsonArray[len].materialName = record.data.materialName; jsonArray[len].amount = record.data.amount; jsonArray[len].userecordId = record.data.userecordId; + jsonArray[len].tousseName = record.data.tousseName; + jsonArray[len].tousseDefinitionId = record.data.tousseDefinitionId; } top.Ext.getCmp("materialInvoiceItem").setValue(Ext.encode(jsonArray)); @@ -1009,6 +1024,7 @@ var materialInvoiceItem = new MaterialInvoiceItemRecord({ id : action.result.data.materialInvoiceItemList[i].id, materialDefinitionId : action.result.data.materialInvoiceItemList[i].materialDefinitionId, + tousseName : action.result.data.materialInvoiceItemList[i].tousseName, materialName : materialName, singlePrice : action.result.data.materialInvoiceItemList[i].price, amount : action.result.data.materialInvoiceItemList[i].amount, Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java =================================================================== diff -u -r18137 -r26359 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java (.../MaterialInvoiceManagerImpl.java) (revision 18137) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java (.../MaterialInvoiceManagerImpl.java) (revision 26359) @@ -344,19 +344,24 @@ List materialItemList = invoice.getMaterialItemList(); for (MaterialItem goodsItem : materialItemList) { //String batchNumber = goodsItem.getBatch();// 批次 + Long materialInvoiceItemID = goodsItem.getMaterialInvoiceItemID(); + // 材料发货明细(打印单增加器械包名称显示) + MaterialInvoiceItem materialInvoiceItem= (MaterialInvoiceItem) objectDao.getById(MaterialInvoiceItem.class.getSimpleName(), materialInvoiceItemID); + // 打印材料发货单,显示材料所属器械包名称 + String tousseName = materialInvoiceItem != null ? materialInvoiceItem.getTousseName() : ""; String specification = "";// 规格 String goodsName = goodsItem.getName(); if (goodsName.lastIndexOf("[") > 0) { specification = goodsName.substring( goodsName.lastIndexOf("[") + 1, goodsName.length() - 1); } - List voList = map.get(goodsItem.getName()); + List voList = map.get(goodsItem.getName() + tousseName); Double totalPrice = MathTools.mul(goodsItem.getPrice(),goodsItem.getAmount()).doubleValue(); // 合并名称相同的物品,名称和单价一样就合并 if(voList == null){ voList = new ArrayList(); - map.put(goodsItem.getName(), voList); + map.put(goodsItem.getName() + tousseName, voList); } InvoicePrintVo tempVo = CollectionUtils.find(voList, new Predicate(){ @Override @@ -380,6 +385,7 @@ tempVo.setExternalCode(md.getExternalCode()); tempVo.setSpecification(specification); tempVo.setUnit(md.getUnit()); + tempVo.setTousseName(tousseName); voList.add(tempVo); }else{ tempVo.setAmount(tempVo.getAmount()+ goodsItem.getAmount()); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/MaterialInvoiceItem.java =================================================================== diff -u -r23492 -r26359 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/MaterialInvoiceItem.java (.../MaterialInvoiceItem.java) (revision 23492) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/MaterialInvoiceItem.java (.../MaterialInvoiceItem.java) (revision 26359) @@ -25,6 +25,14 @@ public class MaterialInvoiceItem { private Long id; + /** + * 器械包定义id + */ + private Long tousseDefinitionId; + /** + * 器械包名称 + */ + private String tousseName; /** * 材料定义id @@ -77,7 +85,23 @@ public void setId(Long id) { this.id = id; } + + public Long getTousseDefinitionId() { + return tousseDefinitionId; + } + public void setTousseDefinitionId(Long tousseDefinitionId) { + this.tousseDefinitionId = tousseDefinitionId; + } + + public String getTousseName() { + return tousseName; + } + + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public Long getMaterialDefinitionId() { return materialDefinitionId; }