Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java
===================================================================
diff -u -r13165 -r13522
--- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java (.../GodownEntryAction.java) (revision 13165)
+++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java (.../GodownEntryAction.java) (revision 13522)
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -22,14 +23,23 @@
import com.forgon.Constants;
import com.forgon.component.grid.GridManager;
import com.forgon.databaseadapter.service.DateQueryAdapter;
+import com.forgon.directory.model.BarcodeDevice;
+import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
+import com.forgon.disinfectsystem.common.CssdUtils;
import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager;
import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager;
import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager;
import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryManager;
import com.forgon.disinfectsystem.diposablegoods.service.IdentificationOfDiposableGoodsManager;
+import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods;
import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch;
+import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock;
+import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods;
import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry;
import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.tousseitem.TousseItem;
import com.forgon.tools.MapTools;
import com.forgon.tools.StrutsParamUtils;
import com.forgon.tools.json.JsonPropertyFilter;
@@ -54,6 +64,8 @@
private DateQueryAdapter dateQueryAdapter;
private IdentificationOfDiposableGoodsManager identificationOfDiposableGoodsManager;
+ private BarcodeManager barcodeManager;
+
public IdentificationOfDiposableGoodsManager getIdentificationOfDiposableGoodsManager() {
return identificationOfDiposableGoodsManager;
}
@@ -90,6 +102,10 @@
this.gridManager = gridManager;
}
+ public void setBarcodeManager(BarcodeManager barcodeManager) {
+ this.barcodeManager = barcodeManager;
+ }
+
@SuppressWarnings("unchecked")
public String viewGodownEntryList() {
HttpServletRequest request = StrutsParamUtils.getRequest();
@@ -159,6 +175,127 @@
}
printMsgToClient(saveResult, out, result.toString(), null);
}
+
+ /**
+ * 扫描高值耗材条码加载一次性物品定义及库存
+ */
+ public void loadScanedGoods(){
+ String barcode = StrutsParamUtils.getPraramValue("barcode", null);
+ String warehouseID = StrutsParamUtils.getPraramValue("warehouseID", null);
+ JSONObject obj = new JSONObject();
+ HttpServletResponse response = StrutsParamUtils.getResponse();
+ response.setCharacterEncoding("UTF-8");
+ PrintWriter out = null;
+ try {
+ out = response.getWriter();
+ obj.put("success", true);
+ if (StringUtils.isNotBlank(barcode)) {
+ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode);
+ if (bd != null && bd instanceof ExpensiveDisposablegoods) {
+ // 高值耗材
+ ExpensiveDisposablegoods expensiveDisposablegoods = (ExpensiveDisposablegoods) bd;
+
+ //判断该高值耗材关联的一次性物品定义的物品类型是否为高值耗材(防止入库时定义为高值耗材,后来修改定义为非高值耗材)
+ if(expensiveDisposablegoods.getDisposableGoodsID() == null){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材未找到一次性物品定义", barcode));
+ return;
+ }
+ DisposableGoods disposableGoods =
+ diposableGoodsManager.getDisposableGoodsById(String.valueOf(expensiveDisposablegoods.getDisposableGoodsID()));
+ if(disposableGoods == null){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材一次性物品定义已被删除", barcode));
+ return;
+ }
+
+ if(!DisposableGoods.TYPE_EXPENSIVEDIPOSABLEGOODS.equals(disposableGoods.getGoodsType())){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材对应一次性物品不为高值耗材", barcode));
+ return;
+ }
+
+ //判断高值耗材状态是否为已入库
+ if(!ExpensiveDisposablegoods.STATUS_IN_WAREHOUSE.equals(expensiveDisposablegoods.getStatus())){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材状态为%s", barcode,expensiveDisposablegoods.getStatus()));
+ return;
+ }
+
+ //判断高值耗材是否属于所选仓库
+ if(!StringUtils.equals(warehouseID, String.valueOf(expensiveDisposablegoods.getWarehouseID()))){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材不属于所选仓库", barcode));
+ return;
+ }
+
+ if(!ExpensiveDisposablegoods.STATUS_IN_WAREHOUSE.equals(expensiveDisposablegoods.getStatus())){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材的状态为%s,不能进行调拨", barcode,expensiveDisposablegoods.getStatus()));
+ return;
+ }
+
+ if(!StringUtils.equals(warehouseID, String.valueOf(expensiveDisposablegoods.getWarehouseID()))){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材不属于所选仓库", barcode));
+ return;
+ }
+
+ Long disposableGoodsBatchId = expensiveDisposablegoods.getDisposableGoodsBatchID();
+ if(disposableGoodsBatchId == null){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材数据异常,批次定义id为空", barcode));
+ return;
+ }
+ DisposableGoodsBatch batch = diposableGoodsManager.getDisposableGoodsBatchById(disposableGoodsBatchId);
+ if(batch == null){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材批次定义已被删除", barcode));
+ return;
+ }
+
+ DisposableGoodsBatchStock disposableGoodsBatchStock = expensiveDisposablegoods.getDisposableGoodsBatchStock();
+ if(disposableGoodsBatchStock == null){
+ obj.put("success", false);
+ obj.put("error", String.format("条码为[%s]的高值耗材批次库存已被删除", barcode));
+ return;
+ }
+
+ obj.put("name", CssdUtils.getDiposableGoodsName(disposableGoods));
+ obj.put("disposableGoodsID", expensiveDisposablegoods.getDisposableGoodsID());
+ obj.put("disposableGoodsStockID", expensiveDisposablegoods.getDisposableGoodsStockID());
+ obj.put("disposableGoodsBatchID", disposableGoodsBatchId);
+ obj.put("disposableGoodsBatchStockID", disposableGoodsBatchStock.getId());
+ obj.put("batchNumber", disposableGoodsBatchStock.getBatchNumber());
+ obj.put("cost", disposableGoodsBatchStock.getCost());
+ obj.put("externalCode", disposableGoods.getExternalCode());
+ obj.put("minApplyAmount", disposableGoods.getMinApplyAmount());
+ obj.put("unit", disposableGoods.getUnit());
+ obj.put("tousseType", TousseItem.TYPE_DIPOSABLE_GOODS);
+ obj.put("goodsType", DisposableGoods.TYPE_EXPENSIVEDIPOSABLEGOODS);
+ obj.put("packageSpec", disposableGoods.getPackageSpec());
+ obj.put("spelling", disposableGoods.getSpelling());
+
+ obj.put("supplierName", disposableGoodsBatchStock.getSupplierName());
+ obj.put("expDate", disposableGoodsBatchStock.getExpDateStr());
+ obj.put("sterileBatchNumber", disposableGoodsBatchStock.getSterileBatchNumber());
+ obj.put("manufacturer", disposableGoodsBatchStock.getManufacturer());
+ obj.put("producingArea", disposableGoodsBatchStock.getProducingArea());
+ }else{
+ obj.put("success", false);
+ obj.put("error", "只能扫描高值耗材的条码。");
+ }
+ }else{
+ obj.put("success", false);
+ obj.put("error", "条码不能为空");
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally{
+ out.print(obj.toString());
+ out.close();
+ }
+ }
/**
* 保存调拨单
Index: ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.jsp
===================================================================
diff -u -r13125 -r13522
--- ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.jsp (.../materialInvoiceView.jsp) (revision 13125)
+++ ssts-web/src/main/webapp/disinfectsystem/invoice/materialInvoiceView.jsp (.../materialInvoiceView.jsp) (revision 13522)
@@ -24,6 +24,7 @@
+
Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java
===================================================================
diff -u -r12331 -r13522
--- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 12331)
+++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 13522)
@@ -56,21 +56,42 @@
String returnJson = "";
Map sqlWhereParamMap = gridManager
.getParamFromView(parameterMap);
- String departCoding = sqlWhereParamMap.get("departCoding");
- String sql = "where po.departCoding = '" + departCoding + "'";
+
SupplyRoomConfig firstSupplyRoom = supplyRoomConfigManager
.getFirstSupplyRoomConfig();
LoginUserData loginUser = AcegiHelper.getLoginUser();
+ String sql = " where 1=1 ";
//供应室用户查看所有临床科室使用记录
if (firstSupplyRoom != null && StringUtils.equals(firstSupplyRoom.getOrgUnitCoding(),loginUser.getCurrentOrgUnitCode())) {
- sql = "where 1=1";
+
//非供应室用户 没有权限的只能看到自己录入的使用记录,有查看所有权限的只能看到本科室的所有使用记录
}else{
boolean seeAll = operationManager.isCurrentUserHaveAnyOperation("SSTS_UseRecord_SeeAll");
if (!seeAll) {
sql += " and po.operator = '" + loginUser.getUserFullName() + "'";
}
}
+
+ //按科室过滤
+ String departCoding = sqlWhereParamMap.get("departCoding");
+ if(StringUtils.isNotBlank(departCoding)){
+ sql += " and po.departCoding = '" + departCoding + "'";
+ }
+
+ String status = sqlWhereParamMap.get("status");
+ //按状态条件过滤
+ if(StringUtils.isNotBlank(status)){
+ String[] statusArray = status.split(";");
+ String statusCondigion = "(";
+ for (int i = 0; i < statusArray.length; i++) {
+ statusCondigion += "'" + statusArray[i] + "'";
+ if(i < statusArray.length - 1){
+ statusCondigion += ",";
+ }
+ }
+ statusCondigion += ")";
+ sql += " and po.status in " + statusCondigion;
+ }
returnJson = gridManager.renderGrid(parameterMap,
UseRecord.class.getSimpleName(), sql,
new String[] { "tousseDefinition" });
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/UseMaterialGoodsItem.java
===================================================================
diff -u
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/UseMaterialGoodsItem.java (revision 0)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/UseMaterialGoodsItem.java (revision 13522)
@@ -0,0 +1,102 @@
+package com.forgon.disinfectsystem.vo;
+
+/**
+ * 使用材料明细
+ * 由于复大肿瘤的器械材料的高值耗材的需求,现需加上
+ * @author shuyongfu
+ * @since 2016-05-20
+ */
+public class UseMaterialGoodsItem {
+
+ /**
+ * 材料发货明细id
+ */
+ private Long materialInvoiceItemId;
+
+ /**
+ * 材料定义id
+ */
+ private Long materialDefinitionId;
+
+ /**
+ * 外部编码
+ */
+ private String externalCode;
+
+ /**
+ * 材料名称(含规格)
+ */
+ private String name;
+
+ /**
+ * 材料分类,即普通物品与高值耗材
+ */
+ private String goodsType;
+
+ /**
+ * 材料发货单流水号
+ */
+ private String materialInvoiceSerialNumber;
+
+ /**
+ * 数量
+ */
+ private Integer amount;
+
+ public Long getMaterialInvoiceItemId() {
+ return materialInvoiceItemId;
+ }
+
+ public void setMaterialInvoiceItemId(Long materialInvoiceItemId) {
+ this.materialInvoiceItemId = materialInvoiceItemId;
+ }
+
+ public String getExternalCode() {
+ return externalCode;
+ }
+
+ public void setExternalCode(String externalCode) {
+ this.externalCode = externalCode;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Long getMaterialDefinitionId() {
+ return materialDefinitionId;
+ }
+
+ public void setMaterialDefinitionId(Long materialDefinitionId) {
+ this.materialDefinitionId = materialDefinitionId;
+ }
+
+ public String getGoodsType() {
+ return goodsType;
+ }
+
+ public void setGoodsType(String goodsType) {
+ this.goodsType = goodsType;
+ }
+
+ public Integer getAmount() {
+ return amount;
+ }
+
+ public void setAmount(Integer amount) {
+ this.amount = amount;
+ }
+
+ public String getMaterialInvoiceSerialNumber() {
+ return materialInvoiceSerialNumber;
+ }
+
+ public void setMaterialInvoiceSerialNumber(String materialInvoiceSerialNumber) {
+ this.materialInvoiceSerialNumber = materialInvoiceSerialNumber;
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.jsp
===================================================================
diff -u -r12331 -r13522
--- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.jsp (.../useRecordView.jsp) (revision 12331)
+++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.jsp (.../useRecordView.jsp) (revision 13522)
@@ -1,5 +1,6 @@
<%@page import="java.util.List"%>
<%@page import="com.forgon.systemsetting.service.HttpOptionManager"%>
+<%@page import="com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ include file="/common/taglibs.jsp"%>
<%@ page import="com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance,com.forgon.disinfectsystem.entity.useRecord.UseRecord" %>
@@ -23,6 +24,14 @@
}
tem += "]";
request.setAttribute("specialInfectionList", tem);
+
+ //判断当前科室是否为一级供应室,如果是则parm_s_departCoding的隐藏域不传值
+ SupplyRoomConfigManager supplyRoomConfigManager = (SupplyRoomConfigManager)SpringBeanManger.getBean("supplyRoomConfigManager");
+ String firstRoomOrgCode = supplyRoomConfigManager.getFirstSupplyRoomConfig().getOrgUnitCoding();
+ String parm_s_departCoding = currentOrgUnitCode;
+ if(currentOrgUnitCode.equals(firstRoomOrgCode)){
+ parm_s_departCoding = "";
+ }
%>
@@ -120,7 +129,7 @@