Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r12997 -r13024 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 12997) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 13024) @@ -1,5 +1,6 @@ package com.forgon.directory.service; +import java.sql.ResultSet; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashSet; @@ -15,15 +16,21 @@ import org.apache.commons.lang.StringUtils; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUserRelation; +import com.forgon.directory.vo.LoginUserData; import com.forgon.security.model.User; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.Constants; 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.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.SqlUtils; import com.forgon.treenode.ext.model.ExtCheckTreeNode; @@ -44,6 +51,12 @@ private ObjectDao objectDao; + private InitDbConnection dbConnection; + + public void setDbConnection(InitDbConnection dbConnection) { + this.dbConnection = dbConnection; + } + public void setThTreeNodeManager(THTreeNodeManager thTreeNodeManager) { this.thTreeNodeManager = thTreeNodeManager; } @@ -52,6 +65,12 @@ this.objectDao = objectDao; } + private SerialNumManager serialNumManager; + + public void setSerialNumManager(SerialNumManager serialNumManager) { + this.serialNumManager = serialNumManager; + } + public String getJsonChildreanCheckNode(long parentId) { List extTreeNodes = new ArrayList(); String code = AcegiHelper.getLoginUser().getCurrentCompanyId(); @@ -313,12 +332,78 @@ setManagerRelations(orgUnit); orgUnit.setSpelling(GB2Alpha.string2Alpha(orgUnit.getName())); orgUnit.setWbCode(GB2WB.getWBCode(orgUnit.getName())); + //是否为新建科室 + boolean newAdd = false; if ((orgUnit.getId() == null) || (orgUnit.getId() == 0)) { + newAdd = true; orgUnit.setId(null); thTreeNodeManager.saveTHTreeNode(orgUnit); } else { thTreeNodeManager.updateTHTreeNode(orgUnit); } + //如果为新建科室,将建立默认仓库,并自动新增一级供应室对器械包和一次性物品服务该科室 + if(newAdd){ + try{ + LoginUserData user = AcegiHelper.getLoginUser(); + //创建仓库条码 + BarcodeDevice barcodeDevice = new BarcodeDevice(); + barcodeDevice.setType(BarcodeDevice.BARCODE_TYPE_WAREHOUSE); + barcodeDevice.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + objectDao.saveOrUpdate(barcodeDevice); + + //1.新建该科室对应仓库 + String sql = "insert into warehouse(id,name,orgUnitId,orgUnitCode,orgUnitName,remark,sequence,createdUserId,createdUserName,createTime) values ("; + sql += barcodeDevice.getId() + ","; + sql += "'" + orgUnit.getName() + "仓库',"; + sql += orgUnit.getId() + ","; + sql += "'" + orgUnit.getOrgUnitCoding() + "',"; + sql += "'" + orgUnit.getName() + "',"; + sql += "'新建科室时默认创建其仓库',"; + sql += "1,"; + sql += user.getUserId() + ","; + sql += "'" + user.getUserFullName() + "',"; + if(DatabaseUtil.isSqlServer(dbConnection.getDatabase())){ + sql += "GETDATE()"; + }else if(DatabaseUtil.isOracle(dbConnection.getDatabase())){ + sql += "sysdate"; + }else if(DatabaseUtil.isMySQL(dbConnection.getDatabase())){ + sql += "currentdate"; + }else{ + sql += "null"; + } + sql += ")"; + objectDao.executeUpdate(sql); + + //2.查找出一级供应室 + ResultSet rs = objectDao.executeSql("select orgUnitCoding,orgUnitName from SupplyRoomConfig where supplyRoomType='1'"); + if(rs.next()){ + String cssdOrgUnitCoding = rs.getString("orgUnitCoding"); + String cssdOrgUnitName = rs.getString("orgUnitName"); + + //3.新建一级供应室对器械包和一次性物品服务该科室 + CssdServiceDepts cssdServiceDepts = new CssdServiceDepts(); + cssdServiceDepts.setCssdOrgUnitCode(cssdOrgUnitCoding); + cssdServiceDepts.setCssdOrgUnitName(cssdOrgUnitName); + cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); + cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); + cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); + cssdServiceDepts.setTousseType(CssdServiceDepts.TOUSSETYPE_TOUSSE); + objectDao.saveOrUpdate(cssdServiceDepts); + + cssdServiceDepts = new CssdServiceDepts(); + cssdServiceDepts.setCssdOrgUnitCode(cssdOrgUnitCoding); + cssdServiceDepts.setCssdOrgUnitName(cssdOrgUnitName); + cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); + cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); + cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); + cssdServiceDepts.setTousseType(CssdServiceDepts.TOUSSETYPE_DIPOSABLEGOODS); + objectDao.saveOrUpdate(cssdServiceDepts); + } + + }catch(Exception e){ + + } + } } /** Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntryDetailStatisticView.jsp =================================================================== diff -u -r12331 -r13024 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntryDetailStatisticView.jsp (.../godownEntryDetailStatisticView.jsp) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/godownEntryDetailStatisticView.jsp (.../godownEntryDetailStatisticView.jsp) (revision 13024) @@ -27,6 +27,7 @@ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r12990 -r13024 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12990) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 13024) @@ -30,6 +30,7 @@ import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.log4j.Logger; @@ -38,8 +39,10 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.databaseadapter.service.SqlFunctionsAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.diposablegoods.service.GodownEntryItemManager; @@ -53,6 +56,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.devicemaintenance.DeviceMaintenance; import com.forgon.disinfectsystem.entity.devicemonitoring.DeviceMonitoring; import com.forgon.disinfectsystem.entity.disposablegoods.DisposableGoodsInventory; @@ -173,6 +177,8 @@ private GodownEntryItemManager godownEntryItemManager; + private WareHouseManager wareHouseManager; + public void setGoodsOptionManager(GoodsOptionManager goodsOptionManager) { this.goodsOptionManager = goodsOptionManager; } @@ -228,6 +234,10 @@ this.godownEntryItemManager = godownEntryItemManager; } + public void setWareHouseManager(WareHouseManager wareHouseManager) { + this.wareHouseManager = wareHouseManager; + } + /** * reportName: .japser文件路径 params : .japser文件定义的参数 */ @@ -6221,6 +6231,21 @@ materialSupplierWhere = " mei.supplierName = '" + suplierName + "'"; } + //按科室过滤仓库的条件 + OrgUnit orgUnitVo = new OrgUnit(); + orgUnitVo.setOrgUnitCoding(orgUnit); + List warehouseList = wareHouseManager.getWareHouseListByOrgUnit(orgUnitVo); + String warehouseWhere = ""; + if(CollectionUtils.isNotEmpty(warehouseList)){ + Long[] warehouseIdArray = new Long[warehouseList.size()]; + int index = 0; + for(WareHouse wareHouse : warehouseList){ + warehouseIdArray[index] = wareHouse.getId(); + index++; + } + warehouseWhere = " (" + StringUtils.join(warehouseIdArray, ",") + ")"; + } + List mainList = new ArrayList(); String database = dbConnection.getDatabase(); @@ -6246,6 +6271,7 @@ + "and ge.type = '入库单' " + " and ge.time >= " + dateQueryAdapter.dateAdapter(timeStart) + " and ge.time <= " + dateQueryAdapter.dateAdapter(timeEnd) + + (StringUtils.isNotBlank(warehouseWhere) ? " and gei.warehouseID in " + warehouseWhere : "") + filterSql1 + " group by dg.id,dg.name,dg.specification,gei.batchnumber,gei.cost,ge.serialNumber " + ") temp1 group by showname,did,batchnumber,serialNumber "; @@ -6261,6 +6287,7 @@ + " and " + materialSupplierWhere + "and me.type = '入库单' and me.time >= " + dateQueryAdapter.dateAdapter(timeStart) + " and me.time <= " + dateQueryAdapter.dateAdapter(timeEnd) + + (StringUtils.isNotBlank(warehouseWhere) ? " and mei.warehouseID in " + warehouseWhere : "") + filterSql2 + ") temp2 group by mid,name,specification,serialNumber " + ") temp3 order by did,showname"; Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/GoodPurchaseTableManager.java =================================================================== diff -u -r13018 -r13024 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/GoodPurchaseTableManager.java (.../GoodPurchaseTableManager.java) (revision 13018) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/GoodPurchaseTableManager.java (.../GoodPurchaseTableManager.java) (revision 13024) @@ -126,7 +126,9 @@ for(WareHouse wareHouse : warehouseList){ disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByDisposableGoodsID(wareHouse.getId(), disposableGoods.getId()); - stockQuantity += disposableGoodsStock.getAmount(); + if(disposableGoodsStock != null){ + stockQuantity += disposableGoodsStock.getAmount(); + } } //库存数 jsonObject.put("stockQuantity", stockQuantity); Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java =================================================================== diff -u -r12997 -r13024 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 12997) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 13024) @@ -270,26 +270,29 @@ public String save() { if(orgUnit != null){ - if(orgUnit.getBarcodeDevice() == null || StringUtils.isBlank(orgUnit.getBarcodeDevice().getBarcode())){ - BarcodeDevice barcode = new BarcodeDevice(); - String barcodeStr = serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE); - barcode.setBarcode(barcodeStr); - barcode.setType(BarcodeDevice.BARCODE_TYPE_ORGUNIT); - orgUnit.setBarcodeDevice(barcode); - } - orgUnitManager.saveOrUpdata(orgUnit); - thTreeNodeManager.updateTHTreeNode(orgUnit); - //修改科室名称处理 - if(oldOrgUnit != null && !oldOrgUnit.getName().equals(orgUnit.getName())){ - orgUnitManager.updateOldData(orgUnit.getOrgUnitCoding(), oldOrgUnit.getName(), orgUnit.getName()); - appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_BASEDATA, "U", - "组织机构[" + oldOrgUnit.getName() + "]修改名称为[" + orgUnit.getName() + "]科室编码为:" - + orgUnit.getOrgUnitCoding()); - } - //返回条码、供页面打印 - HttpServletResponse response = StrutsParamUtils.getResponse(); try { - response.getWriter().print("{success:true,barcode:'" + orgUnit.getBarcode() + "'}"); + if(orgUnit.getBarcodeDevice() == null || StringUtils.isBlank(orgUnit.getBarcodeDevice().getBarcode())){ + BarcodeDevice barcode = new BarcodeDevice(); + String barcodeStr = serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE); + barcode.setBarcode(barcodeStr); + barcode.setType(BarcodeDevice.BARCODE_TYPE_ORGUNIT); + orgUnit.setBarcodeDevice(barcode); + } + orgUnitManager.saveOrUpdata(orgUnit); + thTreeNodeManager.updateTHTreeNode(orgUnit); + //修改科室名称处理 + if(oldOrgUnit != null && StringUtils.isNotBlank(oldOrgUnit.getName()) && !oldOrgUnit.getName().equals(orgUnit.getName())){ + orgUnitManager.updateOldData(orgUnit.getOrgUnitCoding(), oldOrgUnit.getName(), orgUnit.getName()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_BASEDATA, "U", + "组织机构[" + oldOrgUnit.getName() + "]修改名称为[" + orgUnit.getName() + "]科室编码为:" + + orgUnit.getOrgUnitCoding()); + } + //返回条码、供页面打印 + HttpServletResponse response = StrutsParamUtils.getResponse(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("success", true); + jsonObject.put("barcode", orgUnit.getBarcode()); + response.getWriter().print(jsonObject); } catch (IOException e) { e.printStackTrace(); }