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; + } + +}