Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml
===================================================================
diff -u -r26632 -r26635
--- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 26632)
+++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 26635)
@@ -1217,6 +1217,11 @@
class="com.forgon.disinfectsystem.diposablegoods.dwr.table.GodownEntryTableManager">
+
+
+
+
@@ -1300,6 +1305,16 @@
+
+
+
+
+
+
+
+
+
@@ -1310,6 +1325,16 @@
class="com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManagerImpl">
+
+
+
+
+
+
+
+
+
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/ChargeRecordTableManager.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/ChargeRecordTableManager.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/ChargeRecordTableManager.java (revision 26635)
@@ -0,0 +1,65 @@
+package com.forgon.disinfectsystem.diposablegoods.dwr.table;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.forgon.component.grid.GridManager;
+import com.forgon.databaseadapter.service.DateQueryAdapter;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+
+public class ChargeRecordTableManager {
+
+ private GridManager gridManager;
+
+ private DateQueryAdapter dateQueryAdapter;
+
+ public void setGridManager(GridManager gridManager) {
+ this.gridManager = gridManager;
+ }
+
+ public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) {
+ this.dateQueryAdapter = dateQueryAdapter;
+ }
+
+ /**
+ * 收费记录单
+ *
+ * @param parameterMap
+ * @return
+ */
+ public String findChargeRecordTableList(
+ Map> parameterMap) {
+ Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap);
+ String orgUnitName = sqlWhereParamMap.get("orgUnitName"); // 交费科室
+ String startDate = sqlWhereParamMap.get("startDate");
+ String endDate = sqlWhereParamMap.get("endDate");
+ String chargeItem = sqlWhereParamMap.get("chargeItem"); // 交费项目
+ if (StringUtils.isNotBlank(startDate)) {
+ startDate += " 00:00:00";
+ }
+ if (StringUtils.isNotBlank(endDate)) {
+ endDate += " 23:59:59";
+ }
+ String sql = "where (1=1)";
+ String itemSql = "select cri.chargeRecord.id from ChargeRecordItem cri where (1=1)";
+ sql += " and " + dateQueryAdapter.dateAreaSql("po.chargeTime", startDate, endDate);
+ if (StringUtils.isNotBlank(orgUnitName)) {
+ // 查询收费明细中缴费科室为orgUnitName的收费记录
+ itemSql += " and cri.orgUnitName like '%" + orgUnitName + "%'";
+ }
+ if (StringUtils.isNotBlank(chargeItem)) {
+ // 查询收费明细中收费项目为chargeItem的收费记录
+ itemSql += " and cri.chargeItem like '%" + chargeItem + "%'";
+ }
+ if (StringUtils.isNotBlank(orgUnitName) || StringUtils.isNotBlank(chargeItem)) {
+ sql += " and po.id in (" + itemSql + ")";
+ }
+ String json = gridManager.renderGrid(parameterMap,
+ ChargeRecord.class.getSimpleName(), sql,
+ new String[] { "itemsList" });
+ return json;
+ }
+
+}
Index: forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java
===================================================================
diff -u -r26123 -r26635
--- forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java (.../HttpOption.java) (revision 26123)
+++ forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java (.../HttpOption.java) (revision 26635)
@@ -201,6 +201,11 @@
*/
public final static String SYSTEMSETTING_FOREIGN_TOUSSE_PROCESS_TYPE = "foreignTousseProcessType";
+ /**
+ * 收费项目设置
+ */
+ public final static String SYSTEMSETTING_CHARGEITEM = "chargeItem";
+
private Long id;
private String optionText;
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecordItem.java
===================================================================
diff -u
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecordItem.java (revision 0)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecordItem.java (revision 26635)
@@ -0,0 +1,116 @@
+package com.forgon.disinfectsystem.entity.chargerecord;
+
+import java.math.BigDecimal;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+/**
+ * 收费记录明细
+ * @author zhoupeimian
+ *
+ */
+@Entity
+@DynamicInsert(false)
+@DynamicUpdate(true)
+@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+public class ChargeRecordItem {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 关联的收费记录
+ */
+ private ChargeRecord chargeRecord;
+
+ /**
+ * 缴费科室名称
+ */
+ private String orgUnitName;
+
+ /**
+ * 缴费科室编码
+ */
+ private String orgUnitCode;
+
+ /**
+ * 缴费金额
+ */
+ private BigDecimal price;
+
+ /**
+ * 收费项目
+ */
+ private String chargeItem;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @Cascade(value = { CascadeType.MERGE })
+ @JoinColumn(name = "chargeRecord_id")
+ public ChargeRecord getChargeRecord() {
+ return chargeRecord;
+ }
+
+ public void setChargeRecord(ChargeRecord chargeRecord) {
+ this.chargeRecord = chargeRecord;
+ }
+
+ public String getOrgUnitName() {
+ return orgUnitName;
+ }
+
+ public void setOrgUnitName(String orgUnitName) {
+ this.orgUnitName = orgUnitName;
+ }
+
+ public String getOrgUnitCode() {
+ return orgUnitCode;
+ }
+
+ public void setOrgUnitCode(String orgUnitCode) {
+ this.orgUnitCode = orgUnitCode;
+ }
+
+ @Column(precision = 19, scale = 8)
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public String getChargeItem() {
+ return chargeItem;
+ }
+
+ public void setChargeItem(String chargeItem) {
+ this.chargeItem = chargeItem;
+ }
+
+}
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManagerImpl.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManagerImpl.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManagerImpl.java (revision 26635)
@@ -0,0 +1,114 @@
+package com.forgon.disinfectsystem.diposablegoods.service;
+
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang.StringUtils;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecordItem;
+import com.forgon.serialnumber.model.SerialNum;
+import com.forgon.serialnumber.service.SerialNumManager;
+import com.forgon.tools.hibernate.ObjectDao;
+
+public class ChargeRecordManagerImpl implements ChargeRecordManager {
+
+ private ObjectDao objectDao;
+
+ private SerialNumManager serialNumManager;
+
+ private ChargeRecordItemManager chargeRecordItemManager;
+
+ public void setSerialNumManager(SerialNumManager serialNumManager) {
+ this.serialNumManager = serialNumManager;
+ }
+
+ public void setChargeRecordItemManager(
+ ChargeRecordItemManager chargeRecordItemManager) {
+ this.chargeRecordItemManager = chargeRecordItemManager;
+ }
+
+ public void setObjectDao(ObjectDao objectDao) {
+ this.objectDao = objectDao;
+ }
+
+ @Override
+ public ChargeRecord getChargeRecordById(String id) {
+ return (ChargeRecord) objectDao.getByProperty(
+ ChargeRecord.class.getSimpleName(), "id", Long.valueOf(id));
+ }
+
+ @Override
+ public void addItemToChargeRecord(ChargeRecord record, JSONArray itemObject) {
+ if(record == null || itemObject == null){
+ throw new IllegalArgumentException("record和itemObject都不能为空");
+ }
+ for (int i = 0; i < itemObject.size(); i++) {
+ ChargeRecordItem chargeRecordItem = chargeRecordItemManager.parseChargeRecordItem(itemObject.getJSONObject(i));
+ chargeRecordItem.setChargeRecord(record);
+ record.getItemList().add(chargeRecordItem);
+ }
+ }
+
+ @Override
+ public void updateItemToChargeRecord(ChargeRecord record, JSONArray itemsArray) {
+ if(record == null || itemsArray == null){
+ throw new IllegalArgumentException("record和itemsArray都不能为空");
+ }
+ // 删除所有和当前收费记录对应的收费明细记录
+ List itemList = record.getItemList();
+ objectDao.deleteAll(itemList);
+ record.getItemList().removeAll(itemList);
+ for (int i = 0; i < itemsArray.size(); ++i) {
+ JSONObject obj = itemsArray.getJSONObject(i);
+ if (obj != null) {
+ // 更新收费记录明细
+ ChargeRecordItem newItem = chargeRecordItemManager.parseChargeRecordItem(obj);
+ newItem.setId(null);
+ newItem.setChargeRecord(record);
+ record.getItemList().add(newItem);
+ }
+ }
+
+ }
+
+ @Override
+ public void saveChargeRecord(ChargeRecord record, Map returnMsg) {
+ // 计算总收费金额
+ record.calculateTotalPrice();
+ if(StringUtils.isBlank(record.getSerialNumber())){
+ record.setSerialNumber(serialNumManager
+ .getSerialNumberStr(SerialNum.TYPE_INSERT_GODOWN));
+ }
+ // 保存收费明细记录
+ List itemList = record.getItemList();
+ JSONArray jsonArray = new JSONArray();
+ for (ChargeRecordItem chargeRecordItem : itemList) {
+ objectDao.saveOrUpdate(chargeRecordItem);
+ JSONObject printItemObj = new JSONObject();
+ printItemObj.put("id", chargeRecordItem.getId());
+ printItemObj.put("orgUnitCode", chargeRecordItem.getOrgUnitCode());
+ printItemObj.put("orgUnitName", chargeRecordItem.getOrgUnitName());
+ printItemObj.put("chargeItem", chargeRecordItem.getChargeItem());
+ printItemObj.put("price", chargeRecordItem.getPrice());
+ jsonArray.add(printItemObj);
+ }
+ // 保存收费记录
+ objectDao.saveOrUpdate(record);
+ returnMsg.put("itemsDetails", jsonArray);
+ }
+
+ @Override
+ public void deleteChargeRecordById(String id) {
+ ChargeRecord chargeRecord = getChargeRecordById(id);
+ if (chargeRecord == null) {
+ // 收费单已被删除
+ throw new RuntimeException("收费单已被删除!");
+ }
+ // 删除收费记录明细
+ objectDao.deleteAll(chargeRecord.getItemList());
+ // 删除收费记录
+ objectDao.delete(chargeRecord);
+ }
+
+}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java
===================================================================
diff -u -r24805 -r26635
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 24805)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/systemsetting/service/HttpOptionManagerSSTSImpl.java (.../HttpOptionManagerSSTSImpl.java) (revision 26635)
@@ -315,6 +315,8 @@
return "责任环节分组";
}else if(optionId.equals(HttpOption.SYSTEMSETTING_DEFECTIVEMESSAGEREGISTER_TYPE)){
return "缺陷信息登记类型";
+ }else if(optionId.equals(HttpOption.SYSTEMSETTING_CHARGEITEM)){
+ return "收费项目";
}
return "常用参数";
}
Index: ssts-web/src/main/webapp/WEB-INF/dwr.xml
===================================================================
diff -u -r25533 -r26635
--- ssts-web/src/main/webapp/WEB-INF/dwr.xml (.../dwr.xml) (revision 25533)
+++ ssts-web/src/main/webapp/WEB-INF/dwr.xml (.../dwr.xml) (revision 26635)
@@ -344,6 +344,10 @@
+
+
+
+
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecord.java
===================================================================
diff -u
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecord.java (revision 0)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/chargerecord/ChargeRecord.java (revision 26635)
@@ -0,0 +1,166 @@
+package com.forgon.disinfectsystem.entity.chargerecord;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+/**
+ * 收费记录
+ * @author zhoupeimian
+ *
+ */
+@Entity
+@DynamicInsert(false)
+@DynamicUpdate(true)
+@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+public class ChargeRecord {
+
+ /**
+ * ID
+ */
+ private Long id;
+
+ /**
+ * 单号
+ */
+ private String serialNumber;
+
+ /**
+ * 收费科室编码(默认为当前登陆科室)
+ */
+ private String orgUnitCode;
+
+ /**
+ * 收费科室名称(默认为当前登陆科室)
+ */
+ private String orgUnitName;
+
+ /**
+ * 操作员
+ */
+ private String operator;
+
+ /**
+ * 收费时间
+ */
+ private Date chargeTime;
+
+ /**
+ * 收费金额
+ */
+ private BigDecimal totalPrice;
+
+ /**
+ * 收费记录明细
+ */
+ @JsonIgnore
+ private List itemList = new ArrayList();
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getOrgUnitCode() {
+ return orgUnitCode;
+ }
+
+ public void setOrgUnitCode(String orgUnitCode) {
+ this.orgUnitCode = orgUnitCode;
+ }
+
+ public String getOrgUnitName() {
+ return orgUnitName;
+ }
+
+ public void setOrgUnitName(String orgUnitName) {
+ this.orgUnitName = orgUnitName;
+ }
+
+ public String getOperator() {
+ return operator;
+ }
+
+ public void setOperator(String operator) {
+ this.operator = operator;
+ }
+
+ public String getSerialNumber() {
+ return serialNumber;
+ }
+
+ public void setSerialNumber(String serialNumber) {
+ this.serialNumber = serialNumber;
+ }
+
+ public Date getChargeTime() {
+ return chargeTime;
+ }
+
+ public void setChargeTime(Date chargeTime) {
+ this.chargeTime = chargeTime;
+ }
+
+ @Column(precision = 19, scale = 8)
+ public BigDecimal getTotalPrice() {
+ return totalPrice;
+ }
+
+ public void setTotalPrice(BigDecimal totalPrice) {
+ this.totalPrice = totalPrice;
+ }
+
+ @OneToMany(fetch = FetchType.LAZY)
+ @Cascade(value = { CascadeType.ALL })
+ @JoinColumn(name = "chargeRecord_id")
+ public List getItemList() {
+ return itemList;
+ }
+
+ public void setItemList(List itemList) {
+ this.itemList = itemList;
+ }
+
+ /**
+ * 根据收费明细记录计算收费总收费金额
+ */
+ public void calculateTotalPrice() {
+ totalPrice = new BigDecimal(0);
+ List items = getItemList();
+ if (items != null && items.size() > 0) {
+ for (ChargeRecordItem chargeRecordItem : items) {
+ if(chargeRecordItem.getPrice() == null){
+ continue;
+ }
+ BigDecimal price = chargeRecordItem.getPrice();
+ totalPrice = totalPrice.add(price);
+ }
+ }
+ setTotalPrice(totalPrice);
+ }
+
+}
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManager.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManager.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordManager.java (revision 26635)
@@ -0,0 +1,39 @@
+package com.forgon.disinfectsystem.diposablegoods.service;
+
+import java.util.Map;
+import net.sf.json.JSONArray;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+
+public interface ChargeRecordManager {
+
+ /**
+ * 根据ID获取收费记录及明细
+ * @param id
+ * @return
+ */
+ public ChargeRecord getChargeRecordById(String id);
+ /**
+ * 给收费记录设置收费记录明细
+ * @param record
+ * @param obj
+ */
+ public void addItemToChargeRecord(ChargeRecord record, JSONArray objArray);
+ /**
+ * 保存收费记录
+ * @param record
+ * @param returnMsg
+ */
+ public void saveChargeRecord(ChargeRecord record, Map returnMsg);
+ /**
+ * 根据ID删除收费记录
+ * @param id
+ */
+ public void deleteChargeRecordById(String id);
+ /**
+ * 更新收费记录明细
+ * @param record
+ * @param itemsArray
+ */
+ public void updateItemToChargeRecord(ChargeRecord record, JSONArray itemsArray);
+
+}
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManager.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManager.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManager.java (revision 26635)
@@ -0,0 +1,23 @@
+package com.forgon.disinfectsystem.diposablegoods.service;
+
+
+import net.sf.json.JSONObject;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecordItem;
+
+public interface ChargeRecordItemManager {
+
+ /**
+ * 根据ID查找收费记录
+ * @param id
+ * @return
+ */
+ public ChargeRecord getChargeRecordById(String id);
+ /**
+ * 从前台获取收费记录明细
+ * @param itemObject
+ * @return
+ */
+ public ChargeRecordItem parseChargeRecordItem(JSONObject itemObject);
+
+}
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/ChargeRecordAction.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/ChargeRecordAction.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/ChargeRecordAction.java (revision 26635)
@@ -0,0 +1,248 @@
+package com.forgon.disinfectsystem.diposablegoods.action;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JsonConfig;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.Namespace;
+import org.apache.struts2.convention.annotation.ParentPackage;
+
+import com.forgon.Constants;
+import com.forgon.directory.acegi.tools.AcegiHelper;
+import com.forgon.disinfectsystem.diposablegoods.service.ChargeRecordManager;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecordItem;
+import com.forgon.tools.StrutsParamUtils;
+import com.forgon.tools.json.JsonPropertyFilter;
+import com.opensymphony.xwork2.ModelDriven;
+
+@ParentPackage(value = "default")
+@Namespace(value = "/disinfectSystem")
+@Action(value = "chargeRecordAction")
+public class ChargeRecordAction implements ModelDriven {
+
+ private ChargeRecord chargeRecord = new ChargeRecord();
+
+ private ChargeRecordManager chargeRecordManager;
+
+ public void setChargeRecordManager(ChargeRecordManager chargeRecordManager) {
+ this.chargeRecordManager = chargeRecordManager;
+ }
+
+ /**
+ * @param out
+ * :输出流
+ * @param result
+ * :显示的文本信息
+ */
+ private void printMsgToClient(boolean success, PrintWriter out,
+ String result, JSONArray jsonArray) {
+ JSONObject jsonObj = new JSONObject();
+ jsonObj.put("success", success);
+ jsonObj.put("message", result);
+ if(jsonArray != null){
+ JSONObject data = new JSONObject();
+ data.put("items", jsonArray);
+ jsonObj.put("data", data);
+ }
+ out.print(jsonObj.toString());
+ out.close();
+ }
+
+ /**
+ * 设置ChargeRecordItem
+ * @param record
+ * @param items
+ */
+ private void setChargeRecordItemsFromParams(ChargeRecord record,String items){
+ JSONArray itemsArray = JSONArray.fromObject(items);
+ int size = itemsArray.size();
+ if(size == 0){
+ throw new RuntimeException("收费记录明细不能为空!");
+ }
+ if (record.getId() == null) {
+ // 收费记录明细设置
+ chargeRecordManager.addItemToChargeRecord(record, itemsArray);
+ } else {
+ // 更新收费明细
+ chargeRecordManager.updateItemToChargeRecord(record, itemsArray);
+ }
+ }
+
+ /**
+ * 保存或更新收费记录
+ * @return
+ */
+ public String saveOfUpdateChargeRecordAction() {
+ HttpServletResponse response = StrutsParamUtils.getResponse();
+ PrintWriter out = null;
+ String result = "保存成功";
+ response.setCharacterEncoding("UTF-8");
+ Map returnMsg = new HashMap();
+ returnMsg.put("success", false);
+ returnMsg.put("errMsg", "保存失败");
+ try {
+ out = response.getWriter();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ boolean saveResult = false;
+ try {
+ String id = StrutsParamUtils.getPraramValue("id", "");
+ String items = StrutsParamUtils.getPraramValue("items", "");
+
+ ChargeRecord record = chargeRecord;
+
+ if (StringUtils.isNotBlank(id)) {
+ // 更新
+ ChargeRecord chargeRecord = chargeRecordManager.getChargeRecordById(id);
+ if (chargeRecord != null) record = chargeRecord;
+ } else {
+ // 保存
+ record.setChargeTime(new Date());
+ record.setOperator(AcegiHelper.getLoginUserFullName());
+ record.setOrgUnitCode(AcegiHelper.getCurrentOrgUnitCode());
+ record.setOrgUnitName(AcegiHelper.getCurrentOrgUnitName());
+ }
+ // 设置收费记录明细
+ setChargeRecordItemsFromParams(record, items);
+ // 保存收费记录
+ chargeRecordManager.saveChargeRecord(record, returnMsg);
+ saveResult = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ saveResult = false;
+ result = e.getMessage();
+ }
+ JSONArray itemsDetails = (JSONArray)returnMsg.get("itemsDetails");
+
+ printMsgToClient(saveResult, out, result.toString(), itemsDetails);
+ return null;
+ }
+
+ /**
+ * 根据收费记录ID查找收费记录明细
+ */
+ public String getChargeRecordItemById() {
+ String id = StrutsParamUtils.getPraramValue("id", "");
+ if (StringUtils.isNotBlank(id) && StringUtils.isNumeric(id)) {
+ chargeRecord = chargeRecordManager.getChargeRecordById(id);
+ }
+ List itemList = chargeRecord.getItemList();
+ if (itemList != null && itemList.size() > 0) {
+ StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8");
+ JSONObject jsonObject = new JSONObject();
+ JSONArray data = new JSONArray();
+ for (ChargeRecordItem chargeRecordItem : itemList) {
+ JSONObject itemObject = new JSONObject();
+ BigDecimal price = chargeRecordItem.getPrice();
+ itemObject.put("id", chargeRecordItem.getId());
+ itemObject.put("chargeItem", chargeRecordItem.getChargeItem());
+ itemObject.put("orgUnitCode", chargeRecordItem.getOrgUnitCode());
+ itemObject.put("orgUnitName", chargeRecordItem.getOrgUnitName());
+ itemObject.put("price", price);
+ data.add(itemObject);
+ }
+ jsonObject.put("data", data);
+ jsonObject.put("success", true);
+ String jsonStr = jsonObject.toString();
+ try {
+ StrutsParamUtils.getResponse().getWriter().println(jsonStr);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据ID获取ChargeRecord表数据
+ */
+ public String getChargeRecordById() {
+ String id = StrutsParamUtils.getPraramValue("id", "");
+ if (StringUtils.isNotBlank(id) && StringUtils.isNumeric(id)) {
+ chargeRecord = chargeRecordManager.getChargeRecordById(id);
+ }
+ if(chargeRecord!=null){
+ StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8");
+ Map map = new HashMap();
+ map.put("data", chargeRecord);
+ map.put("success", true);
+ JsonConfig config = new JsonConfig();
+ config.setJsonPropertyFilter(new JsonPropertyFilter(new String[] {
+ "chargeRecord"}));
+ JSONObject jsonObject = JSONObject.fromObject(map, config);
+ String jsonStr = jsonObject.toString();
+ try {
+ StrutsParamUtils.getResponse().getWriter().println(jsonStr);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据ID批量删除收费记录
+ */
+ public void deleteChargeRecordByIds() {
+ String idStr = StrutsParamUtils.getPraramValue("ids", "");
+ String message = "";
+ try {
+ if (StringUtils.isNotBlank(idStr)) {
+ Map result = new HashMap();
+ int deletedCount = 0;
+ int totalCount = 0;
+ result.put("deletedCount", deletedCount);
+ result.put("totalCount", totalCount);
+ result.put("failureCount", totalCount - deletedCount);
+ try {
+ String[] idsArray = idStr.split(Constants.IDS_SEPARATOR);
+ totalCount = idsArray.length;
+ for (String id : idsArray) {
+ try {
+ chargeRecordManager.deleteChargeRecordById(id);
+ deletedCount++;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ int failureCount = totalCount-deletedCount;
+ message = "成功删除"+deletedCount+"条收费单信息,失败"+failureCount+"条";
+ }
+ } catch (Exception e) {
+ message = "删除失败!";
+ e.printStackTrace();
+ }
+ HttpServletResponse httpServletResponse = StrutsParamUtils
+ .getResponse();
+ httpServletResponse.setCharacterEncoding("UTF-8");
+ try {
+ httpServletResponse.getWriter().print("{success:true,message:'" + message + "'}");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public ChargeRecord getModel() {
+ return chargeRecord;
+ }
+
+}
+
Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManagerImpl.java
===================================================================
diff -u
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManagerImpl.java (revision 0)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/ChargeRecordItemManagerImpl.java (revision 26635)
@@ -0,0 +1,39 @@
+package com.forgon.disinfectsystem.diposablegoods.service;
+
+import java.math.BigDecimal;
+
+import net.sf.json.JSONObject;
+
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecord;
+import com.forgon.disinfectsystem.entity.chargerecord.ChargeRecordItem;
+import com.forgon.tools.json.JSONUtil;
+
+public class ChargeRecordItemManagerImpl implements ChargeRecordItemManager {
+
+ @Override
+ public ChargeRecord getChargeRecordById(String id) {
+ return null;
+ }
+
+ @Override
+ public ChargeRecordItem parseChargeRecordItem(JSONObject itemObject) {
+ if(itemObject == null){
+ return null;
+ }
+ Long itemId = JSONUtil.optLong(itemObject,"id",null);
+ String orgUnitName = itemObject.optString("orgUnitName");
+ String orgUnitCode = itemObject.optString("orgUnitCode");
+ String price = itemObject.optString("price");
+ String chargeItem = itemObject.optString("chargeItem");
+
+ ChargeRecordItem chargeRecordItem = new ChargeRecordItem();
+ chargeRecordItem.setId(itemId);
+ chargeRecordItem.setOrgUnitCode(orgUnitCode);
+ chargeRecordItem.setOrgUnitName(orgUnitName);
+ chargeRecordItem.setPrice(new BigDecimal(price));
+ chargeRecordItem.setChargeItem(chargeItem);
+
+ return chargeRecordItem;
+ }
+
+}