Index: ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceView.js =================================================================== diff -u -r17168 -r17184 --- ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceView.js (.../deviceMaintenanceView.js) (revision 17168) +++ ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceView.js (.../deviceMaintenanceView.js) (revision 17184) @@ -230,7 +230,7 @@ layout : 'form', labelWidth : 70, items : [{ - xtype : 'textfield', + xtype : 'numberfield', fieldLabel : '总价', id : 'totalPrice', name : 'totalPrice', Index: ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManager.java =================================================================== diff -u -r17168 -r17184 --- ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManager.java (.../DeviceMaintenanceManager.java) (revision 17168) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManager.java (.../DeviceMaintenanceManager.java) (revision 17184) @@ -27,4 +27,8 @@ * @param deviceMaintenance */ public void saveConsumptiveInstances(DeviceMaintenance deviceMaintenance,List instancs); + /** + * 计算耗材总价 + */ + public void countTotalPrice(DeviceMaintenance deviceMaintenance); } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/action/DeviceMaintenanceAction.java =================================================================== diff -u -r17179 -r17184 --- ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/action/DeviceMaintenanceAction.java (.../DeviceMaintenanceAction.java) (revision 17179) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/action/DeviceMaintenanceAction.java (.../DeviceMaintenanceAction.java) (revision 17184) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.devicemaintenance.action; import java.io.IOException; +import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -34,6 +35,7 @@ import com.forgon.systemsetting.model.HttpOption; import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.opensymphony.xwork2.ModelDriven; /** @@ -122,16 +124,17 @@ } String datas = StrutsParamUtils.getPraramValue("datas", ""); List consumptiveInsstanceList = new ArrayList(); - Double totalPrice = 0.0; + Double totalPrice = 0d; + if(datas.length() > 0){ String [] dataArray = datas.split(";"); for (int i = 0; i < dataArray.length; i++) { String data = dataArray[i]; if(StringUtils.isNotBlank(data) && data.split("_").length > 2){ String[] arr = data.split("_"); String id = arr[0]; - int amount = 0; - Double price = 0.0; + Integer amount = 0; + Double price = 0d; if(StringUtils.isNumeric(arr[1])){ amount = Integer.parseInt(arr[1]); } @@ -148,9 +151,11 @@ } } } + // 总价保留两位小数 + BigDecimal bg = new BigDecimal(totalPrice); + totalPrice = bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); deviceMaintenanceManager.saveConsumptiveInstances(deviceMaintenance,consumptiveInsstanceList); deviceMaintenance.setTotalPrice(totalPrice); -// deviceMaintenance.setConsumptiveInstances(consumptiveInsstanceList); deviceMaintenanceManager.saveOrUpdate(deviceMaintenance); } return null; @@ -179,6 +184,7 @@ String id = StrutsParamUtils.getPraramValue("id", null); deviceMaintenance = deviceMaintenanceManager .getDeviceMaintenanceById(id); + deviceMaintenanceManager.countTotalPrice(deviceMaintenance); Map map = new HashMap(); map.put("success", true); map.put("data", deviceMaintenance); @@ -286,14 +292,7 @@ } } } - - HttpServletResponse response = StrutsParamUtils.getResponse(); - try { - response.setCharacterEncoding("utf-8"); - response.getWriter().println(array.toString()); - } catch (IOException e) { - e.printStackTrace(); - } + StrutsResponseUtils.output(array); } public void getDetectionItem(){ Index: ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManagerImpl.java =================================================================== diff -u -r17168 -r17184 --- ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManagerImpl.java (.../DeviceMaintenanceManagerImpl.java) (revision 17168) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/devicemaintenance/service/DeviceMaintenanceManagerImpl.java (.../DeviceMaintenanceManagerImpl.java) (revision 17184) @@ -1,11 +1,19 @@ package com.forgon.disinfectsystem.devicemaintenance.service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; + +import com.forgon.disinfectsystem.basedatamanager.rinser.service.RinserManager; +import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.ConsumptiveConfig; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.ConsumptiveInstance; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; import com.forgon.disinfectsystem.entity.devicemaintenance.DeviceMaintenance; @@ -25,7 +33,19 @@ public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } + + private SterilizerManager sterilizerManager; + + private RinserManager rinserManager; + public void setSterilizerManager(SterilizerManager sterilizerManager) { + this.sterilizerManager = sterilizerManager; + } + + public void setRinserManager(RinserManager rinserManager) { + this.rinserManager = rinserManager; + } + public void saveOrUpdate(DeviceMaintenance deviceMaintenance) { objectDao.saveOrUpdate(deviceMaintenance); } @@ -78,4 +98,53 @@ } deviceMaintenance.setConsumptiveInstances(instancs); } + /** + * 计算耗材总价 + */ + public void countTotalPrice(DeviceMaintenance deviceMaintenance){ + if(deviceMaintenance == null){ + return ; + } + String devName = deviceMaintenance.getDeviceName(); + // 获取配置耗材定义id的集合 + List conConfigIds = new ArrayList(); + if(StringUtils.isNotBlank(devName)){ + Sterilizer sterilizer = sterilizerManager.getSterilizerByName(devName); + if(sterilizer != null){ + List configList = sterilizer.getConsumptives(); + for (int i = 0 ; i < configList.size() ; i++) { + Long id = configList.get(i).getId(); + conConfigIds.add(id); + } + }else{ + Rinser rinser= rinserManager.getRinserByName(devName); + if(rinser != null){ + List configList = rinser.getConsumptives(); + for (int i = 0 ; i < configList.size() ; i++) { + Long id = configList.get(i).getId(); + conConfigIds.add(id); + } + } + } + } + + List consumpInstances = deviceMaintenance.getConsumptiveInstances(); + if( consumpInstances != null){ + Double totalPrice = 0.0; + for(ConsumptiveInstance ci : consumpInstances){ + Integer amount = ci.getAmount(); + Double price = ci.getPrice(); + ConsumptiveConfig conConfig = ci.getConConfig(); + if(conConfig != null && amount != null && price != null){ + if(conConfigIds.contains(conConfig.getId())){ + totalPrice += (amount*price); + } + } + BigDecimal bg = new BigDecimal(totalPrice); + totalPrice = bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); + } + deviceMaintenance.setTotalPrice(totalPrice); + objectDao.save(deviceMaintenance); + } + } }