Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillForm.js =================================================================== diff -u -r21932 -r22097 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillForm.js (.../expensiveGoodsBillForm.js) (revision 21932) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillForm.js (.../expensiveGoodsBillForm.js) (revision 22097) @@ -148,8 +148,8 @@ items : [{ xtype : 'combo', fieldLabel : '供应商', - id : 'supplier1', - name : 'supplier1', + id : 'supplierName', + name : 'supplierName', maxLength : '100', queryParam : 'supplierName', minChars : 0, @@ -173,7 +173,7 @@ top.Ext.getCmp('price').setValue(''); top.Ext.getCmp('amount1').setValue(''); top.Ext.getCmp('name1').enable(); - top.Ext.getCmp('supplier1').setValue(r.data.name); + top.Ext.getCmp('supplierName').setValue(r.data.name); top.Ext.getCmp('supplierId').setValue(r.data.id); authorizedExpensiveGoodsStore.baseParams.supplierId = r.data.id; authorizedExpensiveGoodsStore.load(); @@ -464,7 +464,7 @@ var items = buildJSONStringFromStore(top.Ext.getCmp('goodBillItemGrid').getStore()); var instanceItems = buildJSONStringFromStore(top.Ext.getCmp('expensiveGoodsInstanceGrid').getStore()); // 设置formParams表单参数json - setFormParams(form,['id','serialNumber','supplierId','supplier1','remark','operator']); + setFormParams(form,['id','serialNumber','supplierId','supplierName','remark','operator']); var FormParams = top.Ext.getCmp("formParams").getValue(); //String转为json对象 var json = JSON.parse(FormParams); @@ -515,7 +515,7 @@ var instanceItems = buildJSONStringFromStore(top.Ext.getCmp('expensiveGoodsInstanceGrid').getStore()); // console.log(instanceItems); // 设置表单参数json - setFormParams(form,['id','serialNumber','supplierId','supplier1','remark','operator']); + setFormParams(form,['id','serialNumber','supplierId','supplierName','remark','operator']); var FormParams = top.Ext.getCmp("formParams").getValue(); //String转为json对象 var json = JSON.parse(FormParams); @@ -583,16 +583,18 @@ function addExpensiveGoodsInstanceItem(expensiveGoodsBillItem){ var expensiveGoodsId = expensiveGoodsBillItem.data.expensiveGoodsId; var amount = expensiveGoodsBillItem.data.amount; + var supplierId = top.Ext.getCmp('supplierId').getValue(); var settledTime = top.Ext.getCmp('settledTime').getValue().format('Y-m-d H:i:s'); -// console.log(expensiveGoodsBillItem); -// console.log(expensiveGoodsId); -// console.log(amount); + var data ={"expensiveGoodsId":expensiveGoodsId, + "amount" : amount, + "supplierId" : supplierId, + "settledTime" : settledTime}; + var jsonstr = JSON.stringify(data); + console.log(data); Ext.Ajax.request({ url : WWWROOT + '/disinfectSystem/expensiveGoodsBillAction!loadExpensiveGoodsInstanceByExpensiveGoodsId.do', params : { - expensiveGoodsId : expensiveGoodsId, - amount : amount, - settledTime : settledTime + data : jsonstr }, success : function(response) { var result = Ext.decode(response.responseText).data; Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManagerImpl.java =================================================================== diff -u -r22047 -r22097 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManagerImpl.java (.../ExpensiveGoodsBillManagerImpl.java) (revision 22047) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManagerImpl.java (.../ExpensiveGoodsBillManagerImpl.java) (revision 22097) @@ -125,7 +125,7 @@ @Override public void updateExpensiveGoodsBill(ExpensiveGoodsBill original, - ExpensiveGoodsBill bill, Map returnMsg) { + ExpensiveGoodsBill bill,boolean committedStatus, Map returnMsg) { // 锁定并获取发票单 ExpensiveGoodsBill curExpensiveGoodsBill = getExpensiveGoodsBillById_ForUpdate(original.getId().toString()); @@ -142,6 +142,9 @@ List billItemList = bill.getItems();//修改的发票单明细 List curItemList = curExpensiveGoodsBill.getItems();//未修改的发票明细,用于更新 + // 更新发票单属性 + updateExpensiveGoodsBillProperties(original, bill, curExpensiveGoodsBill); + // 处理数量,价格修改 for (int i = 0; i < billItemList.size(); ++i) { ExpensiveGoodsBillItem expensiveGoodsBillItem = billItemList.get(i); @@ -189,10 +192,6 @@ if(itemID != null){// 有id就不是新增项 continue; } -// //核对发票明细 -// checkExpensiveGoodsBillItem(expensiveGoodsBillItem); -// //若核对成功修改高值耗材实例 -// changeExpensiveGoodsInstance(expensiveGoodsBillItem,curExpensiveGoodsBill.getId()); // 保存expensiveGoodsBillItem expensiveGoodsBillItem.setExpensiveGoodsbBill(curExpensiveGoodsBill); curItemList.add(expensiveGoodsBillItem); @@ -217,35 +216,38 @@ } // 删除godownEntryItem curItemList.remove(curExpensiveGoodsBillItem); -// //需要改高值耗材实例状态吗? -// objectDao.delete(curExpensiveGoodsBillItem); + objectDao.delete(curExpensiveGoodsBillItem); } - //处理页面的高值耗材实例集合 - List> expensiveGoodsInstanceList = billItemList.stream().map(ExpensiveGoodsBillItem::getExpensiveGoodsInstanceList).collect(Collectors.toList()); - if(CollectionUtils.isNotEmpty(expensiveGoodsInstanceList)){ - //获得页面高值耗材id集合 - List billIExpensiveGoodsIds = billItemList.stream().map(ExpensiveGoodsBillItem::getExpensiveGoodsId).collect(Collectors.toList()); - Map> expensiveGoodsIdToInstanceList = new HashMap>(); - for (ExpensiveGoodsBillItem expensiveGoodsBillItem : billItemList) { - expensiveGoodsIdToInstanceList.put(expensiveGoodsBillItem.getExpensiveGoodsId(),expensiveGoodsBillItem.getExpensiveGoodsInstanceList()); - } - for (ExpensiveGoodsBillItem expensiveGoodsBillItem : curItemList) { - Long expensiveGoodsId = expensiveGoodsBillItem.getExpensiveGoodsId(); - if(billIExpensiveGoodsIds.contains(expensiveGoodsId)){ - expensiveGoodsBillItem.setExpensiveGoodsInstanceList(expensiveGoodsIdToInstanceList.get(expensiveGoodsId)); + //若是提交发票则处理页面的高值耗材实例集合 + if(committedStatus){ + List> expensiveGoodsInstanceList = billItemList.stream().map(ExpensiveGoodsBillItem::getExpensiveGoodsInstanceList).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(expensiveGoodsInstanceList)){ + //获得页面高值耗材id集合 + List billIExpensiveGoodsIds = billItemList.stream().map(ExpensiveGoodsBillItem::getExpensiveGoodsId).collect(Collectors.toList()); + Map> expensiveGoodsIdToInstanceList = new HashMap>(); + for (ExpensiveGoodsBillItem expensiveGoodsBillItem : billItemList) { + expensiveGoodsIdToInstanceList.put(expensiveGoodsBillItem.getExpensiveGoodsId(),expensiveGoodsBillItem.getExpensiveGoodsInstanceList()); } + for (ExpensiveGoodsBillItem expensiveGoodsBillItem : curItemList) { + Long expensiveGoodsId = expensiveGoodsBillItem.getExpensiveGoodsId(); + if(billIExpensiveGoodsIds.contains(expensiveGoodsId)){ + expensiveGoodsBillItem.setExpensiveGoodsInstanceList(expensiveGoodsIdToInstanceList.get(expensiveGoodsId)); + } + } + }else{ + throw new RuntimeException("获取不到页面高值耗材实例集合!"); } + } + //总价修改 + curExpensiveGoodsBill.calculateTotalPrice(); + //若是提交发票则结算 + if(committedStatus){ + saveAndBillExpensiveGoodsBill(curExpensiveGoodsBill,returnMsg); }else{ - throw new RuntimeException("获取不到页面高值耗材实例集合!"); + // 更新发票单对象 + saveOrUpdate(curExpensiveGoodsBill); } - - // 更新发票单属性 - updateExpensiveGoodsBillProperties(original, bill, curExpensiveGoodsBill); - // 更新发票单对象 - //saveOrUpdate(curExpensiveGoodsBill); - // 保存并结算发票 - saveAndBillExpensiveGoodsBill(curExpensiveGoodsBill,returnMsg); } private void updateExpensiveGoodsBillProperties(ExpensiveGoodsBill original, @@ -266,13 +268,13 @@ Date originalSettledTime = original.getSettledTime(); Date settledTime = bill.getSettledTime(); if(originalSettledTime != null && !originalSettledTime.equals(settledTime)){ - curExpensiveGoodsBill.setTime(settledTime); + curExpensiveGoodsBill.setSettledTime(settledTime); } // 供应商id - String originalSupplierId = original.getSupplierId(); - String SupplierId = bill.getSupplierId(); + Long originalSupplierId = original.getSupplierId(); + Long SupplierId = bill.getSupplierId(); if(originalSupplierId != null && !originalSupplierId.equals(SupplierId)){ - curExpensiveGoodsBill.setTime(settledTime); + curExpensiveGoodsBill.setSupplierId(SupplierId); } // 供应商名 String originalSupplierName = original.getSupplierName(); @@ -292,8 +294,8 @@ //保存并结算发票 saveAndBillExpensiveGoodsBill(expensiveGoodsBill,result); }else{ - //保存发票单 - this.saveOrUpdate(expensiveGoodsBill); + //暂存发票 + saveOrUpdate(expensiveGoodsBill); } }else{ throw new IllegalArgumentException("发票明细不能为空!"); @@ -323,8 +325,8 @@ //根据高值耗材id获得汇总的高值耗材实例对象 List GoodsInstanceList = idToExpensiveGoodsInstanceMap.get(expensiveGoodsId); for (ExpensiveGoodsInstance expensiveGoodsInstance : GoodsInstanceList) { - //高值耗材实例状态改为以结算 - expensiveGoodsInstance.setStatus(ExpensiveGoodsInstance.STATUS_SETTLED); + //高值耗材实例结算状态改为以结算 + expensiveGoodsInstance.setSettledStatus(ExpensiveGoodsInstance.STATUS_SETTLED); //高值耗材实例的发票单id赋值 expensiveGoodsInstance.setExpensiveGoodsBillId(expensiveGoodsBill.getId()); //高值耗材实例的发票明细id赋值 @@ -352,10 +354,11 @@ for (ExpensiveGoodsBillItem expensiveGoodsBillItem : billItemList){ String goodName = expensiveGoodsBillItem.getGoodsName();//拼接后的名字 Long expensiveGoodsId = expensiveGoodsBillItem.getExpensiveGoodsId();//高值耗材物品定义id + Long supplierId = expensiveGoodsBill.getSupplierId();//供应商id int billAmount = expensiveGoodsBillItem.getAmount().intValue();//结算数量 - //获得可结算的高值耗材实例 - List instanceList = canBillExpensiveGoodsInstanceList(expensiveGoodsId.toString()); + //获得物品可结算的高值耗材实例 + List instanceList = canBillExpensiveGoodsInstanceList(expensiveGoodsId,supplierId); //若查到的为空则返回信息 if(CollectionUtils.isEmpty(instanceList)){ @@ -428,8 +431,8 @@ String settledTimeStr = billInfo.optString("settledTime"); String operator = billInfo.optString("operator"); String serialNumber = billInfo.optString("serialNumber"); - String supplierId = billInfo.optString("supplierId"); - String supplierName = billInfo.optString("supplier1"); + Long supplierId = billInfo.optLong("supplierId"); + String supplierName = billInfo.optString("supplierName"); if(DatabaseUtil.isPoIdValid(id)){ bill.setId(id); @@ -454,11 +457,11 @@ } @Override - public void addItemToBill(ExpensiveGoodsBill bill, JSONObject itemObject,JSONArray instanceItemsArray) { + public void addItemToBill(ExpensiveGoodsBill bill, JSONObject itemObject,JSONArray instanceItemsArray,boolean committedStatus) { if(bill == null || itemObject == null){ throw new IllegalArgumentException("entry和itemObjec不能为空"); } - ExpensiveGoodsBillItem expensiveGoodsBillItem = parseExpensiveGoodsBillItem(bill,itemObject,instanceItemsArray); + ExpensiveGoodsBillItem expensiveGoodsBillItem = parseExpensiveGoodsBillItem(bill,itemObject,instanceItemsArray,committedStatus); expensiveGoodsBillItem.setExpensiveGoodsbBill(bill); bill.getItems().add(expensiveGoodsBillItem); } @@ -474,14 +477,15 @@ //新建发票明细 @SuppressWarnings("unchecked") - private ExpensiveGoodsBillItem parseExpensiveGoodsBillItem(ExpensiveGoodsBill bill,JSONObject itemObject,JSONArray instanceItemsArray) { + private ExpensiveGoodsBillItem parseExpensiveGoodsBillItem(ExpensiveGoodsBill bill,JSONObject itemObject, + JSONArray instanceItemsArray,boolean committedStatus) { if(itemObject == null){ throw new IllegalArgumentException("itemObjec不能为空"); } if(bill == null){ throw new IllegalArgumentException("entry不能为空"); } - if(CollectionUtils.isEmpty(instanceItemsArray)){ + if(CollectionUtils.isEmpty(instanceItemsArray) && committedStatus){ throw new IllegalArgumentException("页面的高值耗材实例不能为空"); } ExpensiveGoodsBillItem expensiveGoodsBillItem = new ExpensiveGoodsBillItem(); @@ -499,7 +503,7 @@ * 获得前台的高值耗材实例 * 保存并提交时才需要保存高值耗材实例集合 */ - if(bill.getCommittedStatus()){ + if(committedStatus){ List expensiveGoodsInstanceList = new ArrayList(); List expensiveGoodsInstanceIds = new ArrayList(); for (Object object : instanceItemsArray) { @@ -595,68 +599,73 @@ } @Override - public JSONArray getExpensiveGoodsInstanceDtailByExpensiveGoodsId(String settledTimeStr,String billAmount,String expensiveGoodsId,Map result) { - if(!DatabaseUtil.isPoIdValid(expensiveGoodsId)||!StringTools.isNumber(billAmount)){ + public JSONArray getExpensiveGoodsInstanceDtailByExpensiveGoodsId(JSONObject dataJson,Map result) { + if(dataJson == null){ return null; } try { - JSONArray jsonArray = new JSONArray(); - SimpleDateFormat format=new SimpleDateFormat(DateTools.COMMON_DATE_PATTEN); - List expensiveGoodsInstanceList = new ArrayList(); - int amount = Integer.valueOf(billAmount);//页面添加的数量 - List dateWarning = new ArrayList();//用于记录发票预警时间提示 - SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); - Long billDateWarning = 0L; - - //获得可结算的高值耗材实例 - expensiveGoodsInstanceList = canBillExpensiveGoodsInstanceList(expensiveGoodsId); - if(CollectionUtils.isNotEmpty(expensiveGoodsInstanceList)){ - List instanceList = new ArrayList(); - //前台结算数量是否大于可结算数量,若大于则获取可结算的全部实例集合 - if(expensiveGoodsInstanceList.size() >= amount){ - instanceList.addAll(expensiveGoodsInstanceList.subList(0, amount)); - }else{ - instanceList = expensiveGoodsInstanceList; - } - if(supplyRoomConfig.getExpensiveGoodsBillWarningTime()!=null){ - //配置的开票时间大于入库时间的预警时间 - billDateWarning = supplyRoomConfig.getExpensiveGoodsBillWarningTime().longValue(); - } - for (ExpensiveGoodsInstance expensiveGoodsInstance : instanceList) { - //判断开票时间大于入库时间太长则提示 - if(billDateWarning>0 ){ - String entryDateStr = format.format(expensiveGoodsInstance.getEntryDate()); - //获得发票时间和入库时间的相差天数entryDateStr - Long day = DateTools.getCompareDate(entryDateStr,settledTimeStr,DateTools.COMMON_DATE_PATTEN); - if(day >= 0 ){ - if(day > billDateWarning){ - dateWarning.add(String.format("%s实例:开票时间大于入库时间太长%s天
",expensiveGoodsInstance.getShowName(),day)); + Long expensiveGoodsId = JSONUtil.optLong(dataJson, "expensiveGoodsId", null); + Long supplierId = JSONUtil.optLong(dataJson, "supplierId", null); + Long amountLong = JSONUtil.optLong(dataJson, "amount", null); + String settledTimeStr = JSONUtil.optString(dataJson, "settledTime", null); + if(DatabaseUtil.isPoIdValid(expensiveGoodsId) && DatabaseUtil.isPoIdValid(supplierId) && amountLong!=null && settledTimeStr!=null){ + int amount = amountLong.intValue(); + JSONArray jsonArray = new JSONArray(); + SimpleDateFormat format=new SimpleDateFormat(DateTools.COMMON_DATE_PATTEN); + List expensiveGoodsInstanceList = new ArrayList(); + List dateWarning = new ArrayList();//用于记录发票预警时间提示 + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + Long billDateWarning = 0L; + //获得可结算的高值耗材实例 + expensiveGoodsInstanceList = canBillExpensiveGoodsInstanceList(expensiveGoodsId,supplierId); + if(CollectionUtils.isNotEmpty(expensiveGoodsInstanceList)){ + List instanceList = new ArrayList(); + //前台结算数量是否大于可结算数量,若大于则获取可结算的全部实例集合 + if(expensiveGoodsInstanceList.size() >= amount){ + instanceList.addAll(expensiveGoodsInstanceList.subList(0, amount)); + }else{ + instanceList = expensiveGoodsInstanceList; + } + if(supplyRoomConfig.getExpensiveGoodsBillWarningTime()!=null){ + //配置的开票时间大于入库时间的预警时间 + billDateWarning = supplyRoomConfig.getExpensiveGoodsBillWarningTime().longValue(); + } + for (ExpensiveGoodsInstance expensiveGoodsInstance : instanceList) { + //判断开票时间大于入库时间太长则提示 + if(billDateWarning>0 ){ + String entryDateStr = format.format(expensiveGoodsInstance.getEntryDate()); + //获得发票时间和入库时间的相差天数entryDateStr + Long day = DateTools.getCompareDate(entryDateStr,settledTimeStr,DateTools.COMMON_DATE_PATTEN); + if(day >= 0 ){ + if(day > billDateWarning){ + dateWarning.add(String.format("%s实例:开票时间大于入库时间太长%s天
",expensiveGoodsInstance.getShowName(),day)); + } } } + JSONObject jsonObj = new JSONObject(); + jsonObj.put("id", expensiveGoodsInstance.getId()); + jsonObj.put("expensiveGoodsId", expensiveGoodsInstance.getExpensiveGoods().getId()); + jsonObj.put("showName", expensiveGoodsInstance.getShowName()); + jsonObj.put("entryDate", format.format(expensiveGoodsInstance.getEntryDate())); + jsonObj.put("expDate", format.format(expensiveGoodsInstance.getExpDate())); + jsonObj.put("entryType", expensiveGoodsInstance.getEntryType()); + jsonObj.put("price", expensiveGoodsInstance.getPrice()); + jsonObj.put("warehouseName", expensiveGoodsInstance.getWarehouseName()); + jsonObj.put("batchNumber", expensiveGoodsInstance.getBatchNumber()); + jsonObj.put("model", expensiveGoodsInstance.getModel()); + if(expensiveGoodsInstance.getUseRecord()!=null){ + jsonObj.put("patientName", expensiveGoodsInstance.getUseRecord().getPatientName()); + } + jsonArray.add(jsonObj); + if(CollectionUtils.isNotEmpty(dateWarning)){ + result.put("warning", dateWarning); + } } - JSONObject jsonObj = new JSONObject(); - jsonObj.put("id", expensiveGoodsInstance.getId()); - jsonObj.put("expensiveGoodsId", expensiveGoodsInstance.getExpensiveGoods().getId()); - jsonObj.put("showName", expensiveGoodsInstance.getShowName()); - jsonObj.put("entryDate", format.format(expensiveGoodsInstance.getEntryDate())); - jsonObj.put("expDate", format.format(expensiveGoodsInstance.getExpDate())); - jsonObj.put("entryType", expensiveGoodsInstance.getEntryType()); - jsonObj.put("price", expensiveGoodsInstance.getPrice()); - jsonObj.put("warehouseName", expensiveGoodsInstance.getWarehouseName()); - jsonObj.put("batchNumber", expensiveGoodsInstance.getBatchNumber()); - jsonObj.put("model", expensiveGoodsInstance.getModel()); - if(expensiveGoodsInstance.getUseRecord()!=null){ - jsonObj.put("patientName", expensiveGoodsInstance.getUseRecord().getPatientName()); - } - jsonArray.add(jsonObj); - if(CollectionUtils.isNotEmpty(dateWarning)){ - result.put("warning", dateWarning); - } + return jsonArray; + }else{ + ExpensiveGoods expensiveGoods = expensiveGoodsManager.get(expensiveGoodsId); + result.put("warning",String.format("物品:%s的可结算数量为0", expensiveGoods.getShowName())); } - return jsonArray; - }else{ - ExpensiveGoods expensiveGoods = expensiveGoodsManager.get(expensiveGoodsId); - result.put("warning",String.format("物品:%s的可结算数量为0", expensiveGoods.getShowName())); } } catch (Exception e) { e.printStackTrace(); @@ -665,26 +674,33 @@ } /** - * 根据高值耗材id获得可结算的高值耗材实例 + * 根据高值耗材id,供应商id获得可结算的高值耗材实例 * 优先获得已验收,自购入库的实例 * 获得已验收,已使用,预入库的实例 * @param expensiveGoodsId * @return */ - private List canBillExpensiveGoodsInstanceList(String expensiveGoodsId){ + private List canBillExpensiveGoodsInstanceList(Long expensiveGoodsId,Long supplierId){ if(DatabaseUtil.isPoIdValid(expensiveGoodsId)){ - //根据高值耗材id获得'已验收','自购入库'的高值耗材实例 + //根据高值耗材id,供应商id获得'已验收','未结算','自购入库'的高值耗材实例 String sql1 = String.format(" po.expensiveGoods.id = '%s'" +" and po.checkStatus = '%s'" - +" and po.entryType = '%s'", - expensiveGoodsId,ExpensiveGoodsInstance.CHECK_STATUS_CHECKED,ExpensiveGoodsInstance.ENTRY_TYPE_PURCHASE) ; + +" and po.settledStatus = '%s'" + +" and po.entryType = '%s'" + +" and po.supplierId = '%s'", + expensiveGoodsId,ExpensiveGoodsInstance.CHECK_STATUS_CHECKED, + ExpensiveGoodsInstance.STATUS_NOSETTLED,ExpensiveGoodsInstance.ENTRY_TYPE_PURCHASE, + supplierId) ; - //根据高值耗材id获得状态为'已使用','已验收'且入库类型为‘预入库’的高值耗材实例 + //根据高值耗材id,供应商id获得状态为'已验收','已使用','未结算','预入库'的高值耗材实例 String sql2 = String.format(" po.expensiveGoods.id = '%s' " + " and po.status = '%s' and po.checkStatus = '%s'" - + " and po.entryType = '%s' ", + + " and po.settledStatus = '%s'" + + " and po.entryType = '%s' " + +" and po.supplierId = '%s'", expensiveGoodsId,ExpensiveGoodsInstance.STATUS_USED,ExpensiveGoodsInstance.CHECK_STATUS_CHECKED, - ExpensiveGoodsInstance.ENTRY_TYPE_PREPARE); + ExpensiveGoodsInstance.STATUS_NOSETTLED,ExpensiveGoodsInstance.ENTRY_TYPE_PREPARE, + supplierId); String sql = String.format(" where (%s) or (%s) order by po.entryType desc, po.entryDate desc", sql1,sql2); @SuppressWarnings("unchecked") Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveGoodsBill.java =================================================================== diff -u -r21962 -r22097 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveGoodsBill.java (.../ExpensiveGoodsBill.java) (revision 21962) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveGoodsBill.java (.../ExpensiveGoodsBill.java) (revision 22097) @@ -71,7 +71,7 @@ /** * 供应商id */ - private String supplierId; + private Long supplierId; /** * 发票明细 @@ -164,11 +164,11 @@ this.supplierName = supplierName; } - public String getSupplierId() { + public Long getSupplierId() { return supplierId; } - public void setSupplierId(String supplierId) { + public void setSupplierId(Long supplierId) { this.supplierId = supplierId; } Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/action/ExpensiveGoodsBillAction.java =================================================================== diff -u -r21932 -r22097 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/action/ExpensiveGoodsBillAction.java (.../ExpensiveGoodsBillAction.java) (revision 21932) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/action/ExpensiveGoodsBillAction.java (.../ExpensiveGoodsBillAction.java) (revision 22097) @@ -138,19 +138,20 @@ // true :保存并结算发票(默认值),false:暂存发票 boolean committedStatus = "true".equals(StrutsParamUtils.getPraramValue("committedStatus", "true").trim()); ExpensiveGoodsBill NewBill = expensiveGoodsBill; - if(StringUtils.isBlank(id)&&committedStatus){//保存并结算 - NewBill = expensiveGoodsBill; - buildExpensiveGoodsBillParamsForSave(NewBill); + buildExpensiveGoodsBillParamsForSave(NewBill,committedStatus); expensiveGoodsBillManager.saveExpensiveGoodsBill(NewBill, returnMsg); }else if(StringUtils.isNotBlank(id)&&committedStatus){//暂存后再保存并结算 ExpensiveGoodsBill original = new ExpensiveGoodsBill(); - buildExpensiveGoodsBillParamsForUpdate(original, NewBill); - expensiveGoodsBillManager.updateExpensiveGoodsBill(original, NewBill, returnMsg); - }else if(!committedStatus){//暂存 - NewBill = expensiveGoodsBill; - buildExpensiveGoodsBillParamsForJustSave(NewBill); + buildExpensiveGoodsBillParamsForUpdate(original, NewBill,committedStatus); + expensiveGoodsBillManager.updateExpensiveGoodsBill(original, NewBill,committedStatus, returnMsg); + }else if(!committedStatus && StringUtils.isBlank(id)){//第一次暂存 + buildExpensiveGoodsBillParamsForSave(NewBill,committedStatus); expensiveGoodsBillManager.saveExpensiveGoodsBill(NewBill, returnMsg); + }else if(StringUtils.isNotBlank(id)&& !committedStatus){//暂存后再暂存 + ExpensiveGoodsBill original = new ExpensiveGoodsBill(); + buildExpensiveGoodsBillParamsForUpdate(original, NewBill,committedStatus); + expensiveGoodsBillManager.updateExpensiveGoodsBill(original, NewBill,committedStatus, returnMsg); } success = true; message = "保存成功"; @@ -165,42 +166,35 @@ } //新建发票对象 - private void buildExpensiveGoodsBillParamsForSave(ExpensiveGoodsBill bill) { + private void buildExpensiveGoodsBillParamsForSave(ExpensiveGoodsBill bill,boolean committedStatus) { String items = StrutsParamUtils.getPraramValue("items", ""); String formParams = StrutsParamUtils.getPraramValue("formParams", ""); String instanceItems = StrutsParamUtils.getPraramValue("instanceItems", ""); - setBillPropertiesFromParams(bill,formParams,items,instanceItems); + setBillPropertiesFromParams(bill,formParams,items,instanceItems,committedStatus); } //更新发票对象 private void buildExpensiveGoodsBillParamsForUpdate(ExpensiveGoodsBill original, - ExpensiveGoodsBill bill) { + ExpensiveGoodsBill bill,boolean committedStatus) { String originalFormParams = StrutsParamUtils.getPraramValue("originalFormParams", ""); String originalItems = StrutsParamUtils.getPraramValue("originalItems", ""); String items = StrutsParamUtils.getPraramValue("items", ""); String instanceItems = StrutsParamUtils.getPraramValue("instanceItems", ""); - setBillPropertiesFromParamsNoInstanceItems(original,originalFormParams,originalItems); - setBillPropertiesFromParams(bill,null,items,instanceItems); +// setBillPropertiesFromParamsNoInstanceItems(original,originalFormParams,originalItems); + + //暂存的发票不用设置页面实例集合 + setBillPropertiesFromParams(original,originalFormParams,originalItems,instanceItems, false); + setBillPropertiesFromParams(bill,null,items,instanceItems, committedStatus); } - //暂存发票对象 - private void buildExpensiveGoodsBillParamsForJustSave(ExpensiveGoodsBill bill) { - String items = StrutsParamUtils.getPraramValue("items", ""); - String formParams = StrutsParamUtils.getPraramValue("formParams", ""); - setBillPropertiesFromParamsNoInstanceItems(bill,formParams,items); - } // 根据前台传入参数构造发票单及发票明细对象 - private void setBillPropertiesFromParams(ExpensiveGoodsBill bill,String formParams,String items,String instanceItems){ - // 如果为true,则为提交发票(默认值),否则暂存发票 - boolean committedStatus = "true".equals(StrutsParamUtils.getPraramValue("committedStatus", "true").trim()); + private void setBillPropertiesFromParams(ExpensiveGoodsBill bill,String formParams,String items,String instanceItems,boolean committedStatus){ // 表单参数 if(StringUtils.isNotBlank(formParams)){ JSONObject formParamsObj = JSONObject.fromObject(formParams); expensiveGoodsBillManager.updateBillInfo(bill, formParamsObj,committedStatus); - }else if(StringUtils.isBlank(formParams)&&committedStatus){//暂存后再保存 - bill.setCommittedStatus(committedStatus); } // items列表 JSONArray itemsArray = JSONArray.fromObject(items); @@ -210,29 +204,37 @@ for (int i = 0; i < size; ++i) { JSONObject obj = itemsArray.optJSONObject(i); if (obj != null) { - expensiveGoodsBillManager.addItemToBill(bill, obj,instanceItemsArray); + expensiveGoodsBillManager.addItemToBill(bill, obj,instanceItemsArray,committedStatus); } } } + //暂存发票对象 +// private void buildExpensiveGoodsBillParamsForJustSave(ExpensiveGoodsBill bill) { +// String items = StrutsParamUtils.getPraramValue("items", ""); +// String formParams = StrutsParamUtils.getPraramValue("formParams", ""); +//// setBillPropertiesFromParamsNoInstanceItems(bill,formParams,items); +// setBillPropertiesFromParams(bill,formParams,items,n, committedStatus); +// } + //根据前台传入参数构造发票单及发票明细对象,不设置页面实例集合 - private void setBillPropertiesFromParamsNoInstanceItems(ExpensiveGoodsBill bill,String formParams,String items){ - // 如果为true,则为提交发票(默认值),否则暂存发票 - boolean committedStatus = "true".equals(StrutsParamUtils.getPraramValue("committedStatus", "true").trim()); - // 表单参数 - if(StringUtils.isNotBlank(formParams)){ - JSONObject formParamsObj = JSONObject.fromObject(formParams); - expensiveGoodsBillManager.updateBillInfo(bill, formParamsObj,committedStatus); - } - // items列表 - JSONArray itemsArray = JSONArray.fromObject(items); - int size = itemsArray.size(); - for (int i = 0; i < size; ++i) { - JSONObject obj = itemsArray.optJSONObject(i); - if (obj != null) { - expensiveGoodsBillManager.addItemToBillNoInstanceItems(bill, obj); - } - } - } +// private void setBillPropertiesFromParamsNoInstanceItems(ExpensiveGoodsBill bill,String formParams,String items){ +// // 如果为true,则为提交发票(默认值),否则暂存发票 +// boolean committedStatus = "true".equals(StrutsParamUtils.getPraramValue("committedStatus", "true").trim()); +// // 表单参数 +// if(StringUtils.isNotBlank(formParams)){ +// JSONObject formParamsObj = JSONObject.fromObject(formParams); +// expensiveGoodsBillManager.updateBillInfo(bill, formParamsObj,committedStatus); +// } +// // items列表 +// JSONArray itemsArray = JSONArray.fromObject(items); +// int size = itemsArray.size(); +// for (int i = 0; i < size; ++i) { +// JSONObject obj = itemsArray.optJSONObject(i); +// if (obj != null) { +// expensiveGoodsBillManager.addItemToBillNoInstanceItems(bill, obj); +// } +// } +// } /** * 读取高值耗材发票单 @@ -254,7 +256,7 @@ obj.put("price", item.getPrice()); obj.put("totalPrice", item.getAmount()*item.getPrice()); obj.put("supplierName", expensiveGoodsBill.getSupplierName()); - + obj.put("supplierId", expensiveGoodsBill.getSupplierId()); jsonArray.add(obj); } @@ -346,17 +348,16 @@ StrutsResponseUtils.output(jsonArr); } /** - * 根据高值耗材id获得可结算的高值耗材实例详细 + * 根据前台数据获得可结算的高值耗材实例详细 */ public void loadExpensiveGoodsInstanceByExpensiveGoodsId() { - String expensiveGoodsId = StrutsParamUtils.getPraramValue("expensiveGoodsId", ""); - String amount = StrutsParamUtils.getPraramValue("amount", ""); - String settledTime = StrutsParamUtils.getPraramValue("settledTime", ""); + String data = StrutsParamUtils.getPraramValue("data", ""); Map returnMsg = new HashMap(); JSONArray jsonArray = new JSONArray(); - if (StringUtils.isNotBlank(expensiveGoodsId)) { + if (StringUtils.isNotBlank(data)) { try { - jsonArray = expensiveGoodsBillManager.getExpensiveGoodsInstanceDtailByExpensiveGoodsId(settledTime,amount,expensiveGoodsId,returnMsg); + JSONObject dataJson = JSONObject.fromObject(data); + jsonArray = expensiveGoodsBillManager.getExpensiveGoodsInstanceDtailByExpensiveGoodsId(dataJson,returnMsg); } catch (Exception e) { e.printStackTrace(); } Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManager.java =================================================================== diff -u -r21932 -r22097 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManager.java (.../ExpensiveGoodsBillManager.java) (revision 21932) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsBillManager.java (.../ExpensiveGoodsBillManager.java) (revision 22097) @@ -16,6 +16,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.GoodPurchasePlan; import com.forgon.tools.hibernate.BasePoManager; import com.google.gson.JsonArray; +import com.google.gson.JsonObject; /** * 高值耗材发票管理manager @@ -69,7 +70,7 @@ * @param returnMsg */ public void updateExpensiveGoodsBill(ExpensiveGoodsBill original, - ExpensiveGoodsBill entry, Map returnMsg); + ExpensiveGoodsBill entry,boolean committedStatus,Map returnMsg); /** * 根据发票id获得相应的已结算高值耗材实例 @@ -81,13 +82,11 @@ /** * 根据页面数据获得可结算的高值耗材实例集合 * 若发票时间大于入库时间太长提示信息 - * @param settledTimeStr 页面的发票时间 - * @param billAmount 页面的添加数量 - * @param id 高值耗材id + * @param dataJson 前台的数据 * @param result * @return */ - public JSONArray getExpensiveGoodsInstanceDtailByExpensiveGoodsId(String settledTimeStr,String billAmount,String expensiveGoodsId,Map result); + public JSONArray getExpensiveGoodsInstanceDtailByExpensiveGoodsId(JSONObject dataJson,Map result); /** * 根据前台传入数据创建发票单 @@ -102,7 +101,7 @@ * @param entry * @param itemObject */ - public void addItemToBill(ExpensiveGoodsBill entry, JSONObject itemObject,JSONArray instanceItemsArray); + public void addItemToBill(ExpensiveGoodsBill entry, JSONObject itemObject,JSONArray instanceItemsArray,boolean committedStatus); /** * 根据前台传入数据创建发票单明细,不传页面的高值耗材实例 * @param entry Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillView.js =================================================================== diff -u -r21932 -r22097 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillView.js (.../expensiveGoodsBillView.js) (revision 21932) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBill/expensiveGoodsBillView.js (.../expensiveGoodsBillView.js) (revision 22097) @@ -60,20 +60,6 @@ return 3; }} -////供应商 -//var expensiveGoodsSupplierStore = new Ext.data.Store({ -// proxy : new Ext.data.HttpProxy({ -// url : WWWROOT + '/disinfectSystem/baseData/expensiveGoodsSupplierAction!getSupplierData.do?supplierType='+encodeURI(expensiveGoodsSupplier), -// method : 'POST' -// }), -// reader : new Ext.data.JsonReader({ -// totalProperty : 'totalCount', -// root : 'data' -// }, [ -// {name : 'id',mapping : 'id'}, -// {name : 'name',mapping : 'name'} -// ]) -//}); //(被授权的)高值耗材供应商数据源 var authorizedExpensiveGoodsSupplierStore = new Ext.data.Store({ @@ -98,7 +84,8 @@ {name : 'price'}, {name : 'totalPrice'}, {name : 'supplierName'}, - {name : 'expensiveGoodsId'} + {name : 'expensiveGoodsId'}, + {name : 'supplierId'}, ]); //高值耗材实例明细对象 @@ -191,9 +178,9 @@ return false; } - if(top.Ext.getCmp('supplier1').getValue() == null || top.Ext.getCmp('supplier1').getValue() == ''){ + if(top.Ext.getCmp('supplierName').getValue() == null || top.Ext.getCmp('supplierName').getValue() == ''){ showResult("请填写供应商!"); - top.Ext.getCmp('supplier1').focus(false,100); + top.Ext.getCmp('supplierName').focus(false,100); return false; } return true; @@ -206,14 +193,14 @@ } //添加发票 -function addItems(name,amount,price,supplierName,expensiveGoodsId){ +function addItems(name,amount,price,supplierName,expensiveGoodsId,supplierId){ for(var i = 0;i < top.Ext.getCmp('goodBillItemGrid').getStore().getCount();i++){ //console.log(top.Ext.getCmp('goodBillItemGrid').getStore().getAt(i).data); if(top.Ext.getCmp('goodBillItemGrid').getStore().getAt(i).data.name == name){ showResult("该物品已经存在,不能重复添加!"); return false; } - if(top.Ext.getCmp('goodBillItemGrid').getStore().getAt(i).data.supplierName != supplierName){ + if(top.Ext.getCmp('goodBillItemGrid').getStore().getAt(i).data.supplierId != supplierId){ showResult("一张发票只能有一个供应商!"); return false; } @@ -243,7 +230,8 @@ price : price, totalPrice:totalPrice, supplierName : supplierName, - expensiveGoodsId : expensiveGoodsId + expensiveGoodsId : expensiveGoodsId, + supplierId : supplierId }); //显示高值耗材实例 addExpensiveGoodsInstanceItem(expensiveGoodsBillItem); @@ -364,10 +352,11 @@ var name = top.Ext.getCmp('name1').getValue(); var amount1 = top.Ext.getCmp('amount1').getValue(); var price = top.Ext.getCmp('price').getValue(); - var supplierName = top.Ext.getCmp('supplier1').getValue(); + var supplierName = top.Ext.getCmp('supplierName').getValue(); + var supplierId = top.Ext.getCmp('supplierId').getValue(); // console.log(amount1); // console.log(price); - return addItems(name,amount1,price,supplierName,expensiveGoodsId); + return addItems(name,amount1,price,supplierName,expensiveGoodsId,supplierId); } // 删除 @@ -443,15 +432,13 @@ //console.log(data); var time = Ext.util.Format.date(new Date(data.time.time), 'Y-m-d H:i'); var settledTime = Ext.util.Format.date(new Date(data.settledTime.time), 'Y-m-d H:i'); + var supplierId = data.supplierId; top.Ext.getCmp("time").setValue(time); top.Ext.getCmp("settledTime").setValue(settledTime); -// top.Ext.getCmp("supplier1").setValue(data.supplierName); -// top.Ext.getCmp("supplierId").setValue(data.supplierId); -// top.Ext.getCmp('supplier1').disable(); + top.Ext.getCmp("supplierId").setValue(supplierId); + top.Ext.getCmp("supplierName").setValue(data.supplierName); top.Ext.getCmp('operator').disable(); top.Ext.getCmp('serialNumber').disable(); -// top.Ext.getCmp('name1').enable(); - //top.Ext.getCmp('name1').setDisabled(true); for(var i = 0 ;i < data.itemsList.length ;i++){ var amount = data.itemsList[i].amount; if(amount == null || amount == 'null'){ @@ -467,7 +454,8 @@ price : price, totalPrice:parseFloat(Ext.util.Format.usMoney(amount*price)), supplierName : data.itemsList[i].supplierName, - expensiveGoodsId : expensiveGoodsId + expensiveGoodsId : expensiveGoodsId, + supplierId : supplierId }); //若未提交则添加可结算的实例 if(committedStatus==false){ @@ -477,7 +465,7 @@ } setTotalMoney(top.Ext.getCmp('goodBillItemGrid')); // 保存原始数据,只需要保存需要修改的属性 - setOriginalFormParams(form,['id','serialNumber','supplierId','supplier1','remark']); + setOriginalFormParams(form,['id','serialNumber','supplierId','supplierName','remark']); var originalFormParams = top.Ext.getCmp("originalFormParams").getValue(); //String转为json对象 var json = JSON.parse(originalFormParams); @@ -490,6 +478,12 @@ top.Ext.getCmp("originalFormParams").setValue(jsonstr); var originalItems = buildJSONStringFromStore(top.Ext.getCmp('goodBillItemGrid').getStore()); top.Ext.getCmp("originalItems").setValue(originalItems); + //若未提交则可修改物品 + if(committedStatus==false){ + top.Ext.getCmp('name1').enable(); + authorizedExpensiveGoodsStore.baseParams.supplierId = supplierId; + authorizedExpensiveGoodsStore.load(); + } }, failure : function(form, action) { }