Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DisposableGoodsStockAction.java =================================================================== diff -u --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DisposableGoodsStockAction.java (revision 0) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DisposableGoodsStockAction.java (revision 12812) @@ -0,0 +1,548 @@ +package com.forgon.disinfectsystem.diposablegoods.action; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +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.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; +import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; +import com.forgon.disinfectsystem.diposablegoods.service.DisposableGoodsStockManager; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.systemsetting.model.HttpOption; +import com.forgon.systemsetting.service.HttpOptionManager; +import com.forgon.tools.GB2Alpha; +import com.forgon.tools.GB2WB; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.json.JsonPropertyFilter; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; + +@ParentPackage(value = "default") +@Namespace(value = "/disinfectSystem") +@Action(value = "disposableGoodsStockAction") +public class DisposableGoodsStockAction implements ModelDriven, + Preparable { + + private DisposableGoodsStock disposableGoodsStock; + + private String spell; + + private DisposableGoodsStockManager disposableGoodsStockManager; + + private DiposableGoodsManager disposableGoodsManager; + + private HttpOptionManager httpOptionManager; + + private DiposableGoodBatchStockManager diposableGoodBatchStockManager; + + private final Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); + + public void setDiposableGoodBatchStockManager( + DiposableGoodBatchStockManager diposableGoodBatchStockManager) { + this.diposableGoodBatchStockManager = diposableGoodBatchStockManager; + } + + public void setDisposableGoodsManager( + DiposableGoodsManager disposableGoodsManager) { + this.disposableGoodsManager = disposableGoodsManager; + } + + public void setSpell(String spell) { + this.spell = spell; + } + + public void setDisposableGoodsStockManager( + DisposableGoodsStockManager disposableGoodsStockManager) { + this.disposableGoodsStockManager = disposableGoodsStockManager; + } + + public void setHttpOptionManager(HttpOptionManager httpOptionManager) { + this.httpOptionManager = httpOptionManager; + } + + /** + * 保存前检查是否重复 + * + * @return + */ + public String validate() { + String id = StrutsParamUtils.getPraramValue("validateId", null); + String name = StrutsParamUtils.getPraramValue("valifateName", null); + String specification = StrutsParamUtils.getPraramValue("specification", + null); + String message = "{success:true,message:'验证成功',stauts:1}"; + boolean result = disposableGoodsStockManager.verifyDiposableGoods(id, name, + specification); + if (!result) { + message = "{success:false,message:'一次性物品的名称不唯一',stauts:0}"; + ; + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setContentType("text/html;charset=UTF-8"); + try { + httpServletResponse.getWriter().print(message); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public String loadDisposableGoodsStock() { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + + Map map = new HashMap(); + map.put("success", true); + map.put("data", disposableGoodsStock); + try { + String jsonStr = JSONUtil.toJSONString(map, true); + StrutsParamUtils.getResponse().getWriter().println(jsonStr); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void loadGodownEntryItemByid() { + String disposableGoodsID = StrutsParamUtils.getPraramValue("id", ""); + if (StringUtils.isNotBlank(disposableGoodsID) && disposableGoodsID.equals("0") == false) {// 初始化加载的数据 + try { + List disposableGoodsBatchStocks = disposableGoodsManager.getDisposableGoodsBatchStocksByDisposableGoodsID(Long.valueOf(disposableGoodsID)); + + String jsonString = JSONUtil.toJSONString(disposableGoodsBatchStocks, true); + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + StrutsParamUtils.getResponse().getWriter() + .println(jsonString); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public void deleteDisposableGoods() { + String idStr = StrutsParamUtils.getPraramValue("ids", ""); + String message = ""; + try { + if (StringUtils.isNotBlank(idStr)) { + message = disposableGoodsManager + .deleteDiposableGoodsAndReturnMessage(idStr); + } + } catch (Exception e) { + message = "删除失败!"; + e.printStackTrace(); + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setCharacterEncoding("UTF-8"); + try { + httpServletResponse.getWriter().print(message); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void printBatchNumOfDiposableGoodsByIds() { + String idStr = StrutsParamUtils.getPraramValue("diposableIds", ""); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotBlank(idStr)) { + String[] ids = idStr.split(";"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + for (String id : ids) { + List disposableGoodsBatchStockList = diposableGoodBatchStockManager + .getDiposableGoodBatchInfoByDiposableGoodsId(id, false); + if (disposableGoodsBatchStockList != null) { + for (DisposableGoodsBatchStock batchStock : disposableGoodsBatchStockList) { + if (sb.length() > 0) { + sb.append(";"); + } + String expDate = ""; + if (batchStock.getExpDate() != null) { + expDate = sdf.format(batchStock.getExpDate()); + } + + String specification = ""; + if (batchStock.getDiposableGoods().getSpecification() != null) { + specification = batchStock.getDiposableGoods() + .getSpecification().trim(); + } + + sb.append(batchStock.getDiposableGoods().getName() + + "#&" + batchStock.getBarcode() + "#&" + + expDate + "#&" + batchStock.getSupplierName() + + "#&" + batchStock.getBatchNumber() + "#&" + + specification); + } + } + } + } + + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + + try { + PrintWriter out = response.getWriter(); + out.print("{success:true,value:'" + sb.toString() + "'}"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void printDiposableGoods() { + String items = StrutsParamUtils.getPraramValue("items", ""); + StringBuffer buffer = new StringBuffer(); + if (StringUtils.isNotBlank(items)) { + for (String item : items.split(";")) { + if (StringUtils.isNotBlank(item)) { + String goodsName = item.split(",")[0]; + String barcode = item.split(",")[1]; + String expDate = item.split(",")[2]; + String supplierName = item.split(",")[3]; + String batchNumber = item.split(",")[4]; + buffer.append(goodsName + "#&" + barcode + "#&" + expDate + + "#&" + supplierName + "#&" + batchNumber + ";"); + } + } + String printValue = ""; + if (buffer.length() > 0) { + String str = buffer.toString(); + printValue = str.substring(0, str.length() - 1); + } + + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + + try { + PrintWriter out = response.getWriter(); + out.print("{success:true,barcode:'" + printValue + "'}"); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public void getAllDiposableGoods() { + List goodsList = disposableGoodsManager + .getAllDiposableGoods(); + StringBuffer buff = new StringBuffer(); + for (int i = 0; i < goodsList.size(); i++) { + Long id = goodsList.get(i).getId(); + String name = goodsList.get(i).getName(); + String specification = goodsList.get(i).getSpecification(); + if (StringUtils.isNotBlank(specification)) { + name += "[" + specification + "]"; + } + String code = goodsList.get(i).getExternalCode(); + buff.append("{id:'").append(id).append("',code:'") + .append(code == null ? "" : code).append("',name:'") + .append(name).append("'}"); + if (i != goodsList.size() - 1) { + buff.append(","); + } + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print("[" + buff.toString() + "]"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public String treeLoad() { + HttpServletResponse response = StrutsParamUtils.getResponse(); + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print( + disposableGoodsManager.getDiposableGoodsTypeTreeJson()); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public void getDiposableGoodsType() { + List list = httpOptionManager + .getHttpOptionTextById(HttpOption.SYSTEMSETTING_DIPOSABLEGOODS_TYPE); + String str = ""; + if (list != null && list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + str = str + "[ '" + list.get(i) + "'],"; + + } + } + StringBuffer buff = new StringBuffer(); + if (str.length() > 0) { + buff.append("["); + buff.append(str.substring(0, str.length() - 1)); + buff.append("]"); + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print(buff.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 根据拼音简拼,获取一次性物品库存NAME和ID + * + * @return + * @throws Exception + */ + public String getDisposableGoodsStockData() { + spell = spell == null ? "" : spell; + if (spell != null) { + try { + spell = java.net.URLDecoder.decode(spell, "UTF-8"); + + Matcher m = pat.matcher(spell); + if (!m.find()) { + spell = spell.toUpperCase(); + } + String allItems = StrutsParamUtils.getPraramValue("allItems", + null); + String wareHouseId = StrutsParamUtils.getPraramValue("wareHouseId", + null); + + System.out.println("wareHouseId:" + wareHouseId); + JSONObject json = disposableGoodsStockManager.searchDisposableGoodsStockList( + spell, allItems,wareHouseId); + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out = response.getWriter(); + out.print(json); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + public String getDiposableGoodBatchStockByBarcode() { + String barcode = StrutsParamUtils.getPraramValue("barcode", ""); + String diposableGoodsStr = ""; + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager + .getByBarcode(barcode); + if (disposableGoodsBatchStock != null + && disposableGoodsBatchStock.getDiposableGoods() != null) { + diposableGoodsStr = JSONUtil.toJSONStringEx(disposableGoodsBatchStock,true,DisposableGoodsBatchStock.filterProperties); + } + try { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + StrutsParamUtils.getResponse().getWriter().print(diposableGoodsStr); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + public String getDiposableGoodBatchStockByNameAndBatchNumber() { + String diposableGoodsName = StrutsParamUtils.getPraramValue( + "diposableGoodsName", ""); + String batchNumber = StrutsParamUtils.getPraramValue("batchNumber", ""); + String diposableGoodsStr = null; + String specification = null; + if (StringUtils.isNotBlank(diposableGoodsName) + && diposableGoodsName.lastIndexOf("[") != -1) { + specification = diposableGoodsName.substring( + diposableGoodsName.lastIndexOf("[") + 1, + diposableGoodsName.length() - 1); + diposableGoodsName = diposableGoodsName.substring(0, + diposableGoodsName.lastIndexOf("[")).trim(); + } + + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager + .getDiposableGoodBatchStockByNameAndBatchNum( + diposableGoodsName, specification, batchNumber); + if (disposableGoodsBatchStock != null) { + diposableGoodsStr = "{id:" + disposableGoodsBatchStock.getId() + + ",name:'" + diposableGoodsName + "',batchNumber:'" + + batchNumber + "',storage:" + + disposableGoodsBatchStock.getStorage() + "}"; + } + try { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + StrutsParamUtils.getResponse().getWriter().print(diposableGoodsStr); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * 获取一次性物品的批次信息 + * + * @return + */ + public String getBatchNumbersByDiposableGood() { + String diposableGoodsId = StrutsParamUtils.getPraramValue( + "diposableGoodsId", ""); + List stockList = diposableGoodBatchStockManager + .getDiposableGoodBatchStockByDiposableGoodsId(diposableGoodsId); + JsonConfig jsonConfig = new JsonConfig(); + JsonPropertyFilter filter = new JsonPropertyFilter(new String[] { + "diposableGoods", "barcode", "type" }); + jsonConfig.setJsonPropertyFilter(filter); + JSONArray jsonArray = JSONArray.fromObject(stockList, jsonConfig); + try { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + StrutsParamUtils.getResponse().getWriter() + .print(jsonArray.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + // 获取一次性物品批次 + public String getBatchesByDiposableGoodsID() { + String diposableGoodsID = StrutsParamUtils.getPraramValue( + "diposableGoodsID", ""); + + List batchStocks = diposableGoodBatchStockManager + .getDiposableGoodBatchInfoByDiposableGoodsId(diposableGoodsID, false); + String batchs = "[]"; + if(batchStocks != null){ + batchs = JSONUtil.toJSONStringEx(batchStocks,true,DisposableGoodsBatchStock.filterProperties); + } + + try { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + StrutsParamUtils.getResponse().getWriter() + .print(batchs); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 根据一次性物品Id返回该物品的所有入库批次号列表 + * + * @return + */ + public String getBatchNumData() { + String diposableGoodsID = StrutsParamUtils.getPraramValue( + "diposableGoodsID", ""); + String spelling = StrutsParamUtils.getPraramValue("spell", null); + if (StringUtils.isBlank(diposableGoodsID)) + return null; + try { + List stockList = diposableGoodBatchStockManager + .getDiposableGoodBatchInfoByDiposableGoodsId( + diposableGoodsID, false); + List temList = null; + if (spelling != null) { + temList = new ArrayList(); + if (stockList != null && stockList.size() > 0) { + for (DisposableGoodsBatchStock stock : stockList) { + if (stock.getBatchNumber().contains(spelling)) { + temList.add(stock); + } + } + } + } else { + temList = stockList; + } + JsonConfig jsonConfig = new JsonConfig(); + JsonPropertyFilter filter = new JsonPropertyFilter(new String[] { + "diposableGoods", "barcode", "type", "identifications" }); + jsonConfig.setJsonPropertyFilter(filter); + JSONArray jsonArray = JSONArray.fromObject(temList, jsonConfig); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String displayName = jsonObject.getString("batchNumber") + + "(库存量:" + jsonObject.getString("storage") + ")"; + jsonObject.element("displayName", displayName); + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out; + try { + out = response.getWriter(); + out.print(jsonArray.toString()); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public void prepare() { + String id = StrutsParamUtils.getPraramValue("id", ""); + if (DatabaseUtil.isPoIdValid(id)) { + disposableGoodsStock = disposableGoodsManager.getDiposableGoodsStockById(id); + } else { + disposableGoodsStock = new DisposableGoodsStock(); + } + } + + @Override + public DisposableGoodsStock getModel() { + return disposableGoodsStock; + } + + public void updateDiposableGoodsPrice(){ + disposableGoodsManager.updateDiposableGoodsPriceFromExcelFile(); + } + + public void loadDiposablegoods(){ + StringBuffer buff = new StringBuffer(); + List list = disposableGoodsManager.getAllDiposableGoods(); + if(list != null){ + for (DisposableGoodsStock goods : list) { + if(buff.length() > 0){ + buff.append(","); + } + buff.append("{id:").append(goods.getId()).append(","); + String goodName = goods.getName(); + if(StringUtils.isNotBlank(goods.getSpecification())){ + goodName += "[" + goods.getSpecification() + "]"; + } + buff.append("tousseName:'").append(goodName).append("'}"); + } + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out; + try { + out = response.getWriter(); + out.print("[" + buff.toString() + "]"); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +}