Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/gdszyy/InventoryDaoImpl.java =================================================================== diff -u -r28957 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/gdszyy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 28957) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/gdszyy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 30814) @@ -429,4 +429,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/FindPatientInfoByHospitalNumDaoImpl.java =================================================================== diff -u -r30775 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 30775) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 30814) @@ -40,7 +40,7 @@ String ExtUserID = loginUserData.getUserName(); String input2 = "丁香软件" + hospitalNum + "" + ExtUserID + "2020-01-01" + DateTools.getCurrentYearEnd() + ""; logger.info("病人信息同步接口请求信息:" + input2); - String result = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.ServiceCode_PATPatientID, input2); + String result = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.WebserviceAddress, DatasyncConstant.ServiceCode_PATPatientID, input2); /*String result = "" + "" + "" @@ -187,7 +187,7 @@ String ExtUserID = loginUserData.getUserName(); String input2 = "丁香软件" + ExtUserID + "" + AdmNo + ""; logger.info("手术信息同步接口请求信息:" + input2); - String result = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.ServiceCode_AdmNo, input2); + String result = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.WebserviceAddress, DatasyncConstant.ServiceCode_AdmNo, input2); /*String result = "" + "" + "" Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java =================================================================== diff -u -r25993 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 25993) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 30814) @@ -525,4 +525,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/InventoryDao.java =================================================================== diff -u -r25993 -r30814 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/InventoryDao.java (.../InventoryDao.java) (revision 25993) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/InventoryDao.java (.../InventoryDao.java) (revision 30814) @@ -127,5 +127,13 @@ * @return */ Inventory[] getAllInventoryStockDataFromPlatform(Long orgUnitIdFromHisSync); + + /** + * 根据物资编码和规格获取物资信息 + * @param inventorySerialNumber + * @param specification + * @return + */ + public Inventory getInventory(String inventorySerialNumber, String specification); } Index: ssts-cszxyy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/cszxyy/dao/InventoryDao.java =================================================================== diff -u -r25993 -r30814 --- ssts-cszxyy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/cszxyy/dao/InventoryDao.java (.../InventoryDao.java) (revision 25993) +++ ssts-cszxyy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/cszxyy/dao/InventoryDao.java (.../InventoryDao.java) (revision 30814) @@ -188,4 +188,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/gdsy/dao/InventoryDaoImpl.java =================================================================== diff -u -r25993 -r30814 --- ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/gdsy/dao/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 25993) +++ ssts-gdsy-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/gdsy/dao/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 30814) @@ -540,4 +540,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/DatasyncConstant.java =================================================================== diff -u -r30753 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 30753) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 30814) @@ -39,4 +39,35 @@ */ public final static String SSOWebserviceAddress = "http://192.168.128.28:8081/Common_C92_WebService/services/CasValidateServiceImpl?wsdl"; + /** + * 一次性物品接口开发(军卫系统:供应商、入库单及明细、物品基础信息) + * http://192.168.128.170/csp/hsb/DHC.Published.PUB0025.BS.PUB0025.cls + */ + public final static String JunWeiWebserviceAddress = "http://192.168.128.170/csp/hsb/DHC.Published.PUB0025.BS.PUB0025.cls"; + + /** + * 供应商接口服务编码MES0110 + */ + public final static String JWServiceCode_Supplier = "MES0110"; + + /** + * 入库单接口服务编码MES0111 + */ + public final static String JWServiceCode_StorageEntry = "MES0111"; + + /** + * 入库单明细接口服务编码MES0112 + */ + public final static String JWServiceCode_StorageEntryItem = "MES0112"; + + /** + * 物品基础信息服务编码:MES0109 + */ + public final static String JWServiceCode_Inventory = "MES0109"; + + /** + * 公司名称丁香软件拼音首拼 + */ + public final static String JWSourceSystem = "DXRJ"; + } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/nfykdxnfyy/InventoryDaoImpl.java =================================================================== diff -u --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/nfykdxnfyy/InventoryDaoImpl.java (revision 0) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/nfykdxnfyy/InventoryDaoImpl.java (revision 30814) @@ -0,0 +1,444 @@ +package com.forgon.disinfectsystem.inventorymanagement.dao.nfykdxnfyy; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import net.sf.json.JSON; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import net.sf.json.xml.XMLSerializer; + +import org.apache.log4j.Logger; + +import com.forgon.disinfectsystem.datasynchronization.dao.nfykdxnfyy.DatasyncConstant; +import com.forgon.disinfectsystem.datasynchronization.dao.nfykdxnfyy.WebServiceClientHelper; +import com.forgon.disinfectsystem.inventorymanagement.dao.InventoryDao; +import com.forgon.disinfectsystem.inventorymanagement.model.Inventory; +import com.forgon.disinfectsystem.inventorymanagement.model.StorageEntry; +import com.forgon.disinfectsystem.inventorymanagement.model.StorageEntryItem; +import com.forgon.tools.date.DateTools; + +/** + * 一次性物品接口开发(对接军卫系统)(南方医院) + * @author ZhouPeiMian + * @since 2021-03-17 + * + */ +public class InventoryDaoImpl implements InventoryDao { + + Logger logger = Logger.getLogger(InventoryDaoImpl.class); + + @Override + public void updateEntryStateAndErrorMessage(String recordState, + String errorMessage, String entrySerialNumber) { + // TODO Auto-generated method stub + + } + + @Override + public StorageEntry findInEntryBySerialNumber(String entrySerialNumber) { + String input1 = DatasyncConstant.JWServiceCode_StorageEntryItem; + String input2 = "XDGY" + + "" + entrySerialNumber + "" + + ""; + StorageEntry result = null; + try { + String HIPManagerInfoResult = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.JunWeiWebserviceAddress, input1, input2); + /*String HIPManagerInfoResult = "" + + "" + + "" + + "0" + + "O9007475一次性使用灭菌橡胶外科手套6.5XXXX75003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001" + + "O9007475一次性使用灭菌橡胶外科手套7XXXX45003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001" + + "O9007475一次性使用灭菌橡胶外科手套7.5XXXX90003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001]]>" + + "" + + "";*/ + logger.info("入库单明细接口返回:" + HIPManagerInfoResult); + int startIndex = HIPManagerInfoResult.indexOf(""); + if(startIndex == -1){ + return result; + } + int endIndex = HIPManagerInfoResult.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + return result; + } + String xmlString = HIPManagerInfoResult.substring(startIndex + "".length(), endIndex); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read("" + xmlString + ""); + JSONObject storageEntryInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json; + if(storageEntryInfos != null){ + JSONObject body = storageEntryInfos.optJSONObject("Body"); + Integer status = body.optInt("ResultCode", -1); + if(DatasyncConstant.ResultCode_Success.intValue() != status.intValue()){ + logger.info("入库单明细接口查询失败:ResultCode = " + status + "; ResultContent = " + body.optString("ResultContent")); + return null; + } + Object storageEntryInfoObj = storageEntryInfos.opt("Data"); + JSONArray storageEntryInfoArr = null; + if(storageEntryInfoObj instanceof JSONArray){ + storageEntryInfoArr = (JSONArray) storageEntryInfoObj; + }else if(storageEntryInfoObj instanceof JSONObject){ + storageEntryInfoArr = new JSONArray(); + JSONObject storageEntryInfo = (JSONObject)storageEntryInfoObj; + storageEntryInfoArr.add(storageEntryInfo); + } + if(storageEntryInfoArr != null && storageEntryInfoArr.size() > 0){ + for (Object object : storageEntryInfoArr) { + JSONObject storageEntryItemInfo = (JSONObject) object; + String serialNumber = storageEntryItemInfo.optString("SERIALNUMBER"); + StorageEntry storageEntry = new StorageEntry(); + storageEntry.setSerialNumber(serialNumber); + return storageEntry; + } + } + } + + } catch (Exception e) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + e.printStackTrace(new PrintStream(baos)); + String exception = baos.toString(); + logger.error("入库单明细接口查询失败:" + exception); + e.printStackTrace(); + } + return result; + } + + @Override + public StorageEntry findOutEntryBySerialNumber(String entrySerialNumber) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry findReturnEntryBySerialNumber(String entrySerialNumber) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry[] findInEntryByTime(Date startDate, Date endDate) { + String input1 = DatasyncConstant.JWServiceCode_StorageEntry; + String input2 = "XDGY" + + "" + DateTools.getFormatDateStr(startDate, DateTools.COMMON_DATE_ONLY) + "" + + "" + DateTools.getFormatDateStr(endDate, DateTools.COMMON_DATE_ONLY) + "" + + ""; + StorageEntry[] result = null; + try { + String HIPManagerInfoResult = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.JunWeiWebserviceAddress, input1, input2); + /*String HIPManagerInfoResult = "" + + "" + + "" + + "0" + + "O9007503" + + "O6039645" + + "O9007551" + + "]]>" + + "" + + "" + + "";*/ + logger.info("入库单接口返回:" + HIPManagerInfoResult); + int startIndex = HIPManagerInfoResult.indexOf(""); + if(startIndex == -1){ + return result; + } + int endIndex = HIPManagerInfoResult.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + return result; + } + String xmlString = HIPManagerInfoResult.substring(startIndex + "".length(), endIndex); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read("" + xmlString + ""); + JSONObject storageEntryInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json; + if(storageEntryInfos != null){ + JSONObject body = storageEntryInfos.optJSONObject("Body"); + Integer status = body.optInt("ResultCode", -1); + if(DatasyncConstant.ResultCode_Success.intValue() != status.intValue()){ + logger.info("入库单接口查询失败:ResultCode = " + status + "; ResultContent = " + body.optString("ResultContent")); + return null; + } + Object storageEntryInfoObj = storageEntryInfos.opt("Data"); + JSONArray storageEntryInfoArr = null; + if(storageEntryInfoObj instanceof JSONArray){ + storageEntryInfoArr = (JSONArray) storageEntryInfoObj; + }else if(storageEntryInfoObj instanceof JSONObject){ + storageEntryInfoArr = new JSONArray(); + JSONObject storageEntryInfo = (JSONObject)storageEntryInfoObj; + storageEntryInfoArr.add(storageEntryInfo); + } + if(storageEntryInfoArr != null && storageEntryInfoArr.size() > 0){ + List storageEntryList = new ArrayList(); + for (Object object : storageEntryInfoArr) { + JSONObject storageEntryInfo = (JSONObject) object; + String serialNumber = storageEntryInfo.optString("SERIALNUMBER"); + String timeStr = storageEntryInfo.optString("TIME"); + Date time = DateTools.coverStrToDate(timeStr, DateTools.COMMON_DATE_HMS); + String remark = storageEntryInfo.optString("REMARK"); + StorageEntry storageEntry = new StorageEntry(); + storageEntry.setSerialNumber(serialNumber); + storageEntry.setTime(new java.sql.Date(time.getTime())); + storageEntry.setRemark(remark); + storageEntryList.add(storageEntry); + } + WebServiceClientHelper.storageEntryList = storageEntryList; + return storageEntryList.toArray(new StorageEntry[storageEntryList.size()]); + } + } + + } catch (Exception e) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + e.printStackTrace(new PrintStream(baos)); + String exception = baos.toString(); + logger.error("入库单接口查询失败:" + exception); + e.printStackTrace(); + } + return result; + } + + @Override + public StorageEntry[] findOutEntryByTime(Date startDate, Date endDate) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry[] findReturnEntryByTime(Date startDate, Date endDate) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry[] findInEntryByTimeAndTwoStoreCodeList(Date startDate, + Date endDate, List storeCodeList, + List exchStoreCodeList) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry[] findOutEntryByTimeAndTwoStoreCodeList(Date startDate, + Date endDate, List storeCodeList, + List exchStoreCodeList) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntry[] findReturnEntryByTimeAndTwoStoreCodeList( + Date startDate, Date endDate, List storeCodeList, + List exchStoreCodeList) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntryItem[] findInEntryItem(String entrySerialNumber) { + String input1 = DatasyncConstant.JWServiceCode_StorageEntryItem; + String input2 = "XDGY" + + "" + entrySerialNumber + "" + + ""; + StorageEntryItem[] result = null; + try { + String HIPManagerInfoResult = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.JunWeiWebserviceAddress, input1, input2); + /*String HIPManagerInfoResult = "" + + "" + + "" + + "0" + + "O9007475一次性使用灭菌橡胶外科手套6.5XXXX75003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001" + + "O9007475一次性使用灭菌橡胶外科手套7XXXX45003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001" + + "O9007475一次性使用灭菌橡胶外科手套7.5XXXX90003.25马来西亚 Ansell N.P.Sdn.Bhd.(安思尔)01074001]]>" + + "" + + "";*/ + logger.info("入库单明细接口返回:" + HIPManagerInfoResult); + int startIndex = HIPManagerInfoResult.indexOf(""); + if(startIndex == -1){ + return result; + } + int endIndex = HIPManagerInfoResult.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + return result; + } + String xmlString = HIPManagerInfoResult.substring(startIndex + "".length(), endIndex); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read("" + xmlString + ""); + JSONObject storageEntryInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json; + if(storageEntryInfos != null){ + JSONObject body = storageEntryInfos.optJSONObject("Body"); + Integer status = body.optInt("ResultCode", -1); + if(DatasyncConstant.ResultCode_Success.intValue() != status.intValue()){ + logger.info("入库单明细接口查询失败:ResultCode = " + status + "; ResultContent = " + body.optString("ResultContent")); + return null; + } + Object storageEntryInfoObj = storageEntryInfos.opt("Data"); + JSONArray storageEntryInfoArr = null; + if(storageEntryInfoObj instanceof JSONArray){ + storageEntryInfoArr = (JSONArray) storageEntryInfoObj; + }else if(storageEntryInfoObj instanceof JSONObject){ + storageEntryInfoArr = new JSONArray(); + JSONObject storageEntryInfo = (JSONObject)storageEntryInfoObj; + storageEntryInfoArr.add(storageEntryInfo); + } + if(storageEntryInfoArr != null && storageEntryInfoArr.size() > 0){ + List storageEntryItemList = new ArrayList(); + for (Object object : storageEntryInfoArr) { + JSONObject storageEntryItemInfo = (JSONObject) object; + String specification = storageEntryItemInfo.optString("SPECIFICATION"); + String name = storageEntryItemInfo.optString("NAME"); + String batchNumber = storageEntryItemInfo.optString("BATCHID"); + String expDateStr = storageEntryItemInfo.optString("EXPDATE"); + + Long amount = storageEntryItemInfo.optLong("AMOUNT"); + Double unitPrice = storageEntryItemInfo.optDouble("COST"); + String manufacturer = storageEntryItemInfo.optString("MANUFACTURER"); + String inventorySerialNumber = storageEntryItemInfo.optString("INVENTORYSERIALNUMBER"); + + StorageEntryItem storageEntryItem = new StorageEntryItem(); + storageEntryItem.setName(name); + storageEntryItem.setSpecification(specification); + storageEntryItem.setBatchNumber(batchNumber); + try { + SimpleDateFormat sdf = new SimpleDateFormat(DateTools.COMMON_DATE_HMS); + Date time = sdf.parse(expDateStr); + storageEntryItem.setExpDate(new java.sql.Date(time.getTime())); + } catch (Exception e) { + //e.printStackTrace(); + } + storageEntryItem.setAmount(amount); + storageEntryItem.setUnitPrice(unitPrice); + storageEntryItem.setManufacturer(manufacturer); + storageEntryItem.setInventorySerialNumber(inventorySerialNumber); + + storageEntryItemList.add(storageEntryItem); + } + return storageEntryItemList.toArray(new StorageEntryItem[storageEntryItemList.size()]); + } + } + + } catch (Exception e) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + e.printStackTrace(new PrintStream(baos)); + String exception = baos.toString(); + logger.error("入库单明细接口查询失败:" + exception); + e.printStackTrace(); + } + return result; + } + + @Override + public StorageEntryItem[] findOutEntryItem(String entrySerialNumber) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageEntryItem[] findReturnEntryItem(String entrySerialNumber) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Inventory getInventory(String inventorySerialNumber) { + return null; + } + + @Override + public Inventory[] findInventory(String name, String specification) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Inventory[] getAllInventoryData() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Inventory[] getAllInventoryStockDataFromPlatform( + Long orgUnitIdFromHisSync) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Inventory getInventory(String inventorySerialNumber, String specification) { + String input1 = DatasyncConstant.JWServiceCode_Inventory; + String input2 = "XDGY" + + "" + inventorySerialNumber + "" + + "" + specification + "" + + ""; + Inventory result = null; + try { + String HIPManagerInfoResult = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.JunWeiWebserviceAddress, input1, input2); + /*String HIPManagerInfoResult = "" + + "" + + "" + + "0医用外科口罩挂耳型.65201073037]]>" + + "" + + "";*/ + logger.info("物品基础信息接口返回:" + HIPManagerInfoResult); + int startIndex = HIPManagerInfoResult.indexOf(""); + if(startIndex == -1){ + return result; + } + int endIndex = HIPManagerInfoResult.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + return result; + } + String xmlString = HIPManagerInfoResult.substring(startIndex + "".length(), endIndex); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read("" + xmlString + ""); + JSONObject inventoryInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json; + if(inventoryInfos != null){ + JSONObject body = inventoryInfos.optJSONObject("Body"); + Integer status = body.optInt("ResultCode", -1); + if(DatasyncConstant.ResultCode_Success.intValue() != status.intValue()){ + logger.info("物品基础信息接口查询失败:ResultCode = " + status + "; ResultContent = " + body.optString("ResultContent")); + return null; + } + Object inventoryInfoObj = inventoryInfos.opt("Data"); + JSONArray inventoryInfoArr = null; + if(inventoryInfoObj instanceof JSONArray){ + inventoryInfoArr = (JSONArray) inventoryInfoObj; + }else if(inventoryInfoObj instanceof JSONObject){ + inventoryInfoArr = new JSONArray(); + JSONObject storageEntryInfo = (JSONObject)inventoryInfoObj; + inventoryInfoArr.add(storageEntryInfo); + } + if(inventoryInfoArr != null && inventoryInfoArr.size() > 0){ + List inventoryItemList = new ArrayList(); + for (Object object : inventoryInfoArr) { + JSONObject inventoryItemInfo = (JSONObject) object; + + String name = inventoryItemInfo.optString("NAME"); + String specification1 = inventoryItemInfo.optString("SPECIFICATION", ""); + String unit = inventoryItemInfo.optString("UNIT"); + Double cost = inventoryItemInfo.optDouble("COST"); + String serialNumber = inventoryItemInfo.optString("SERIALNUMBER") + specification1; + + Inventory inventory = new Inventory(); + inventory.setName(name); + inventory.setSpecification(specification); + inventory.setUnit(unit); + inventory.setCost(cost); + inventory.setSerialNumber(serialNumber); + inventoryItemList.add(inventory); + } + return inventoryItemList.get(0); + } + } + + } catch (Exception e) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + e.printStackTrace(new PrintStream(baos)); + String exception = baos.toString(); + logger.error("物品基础信息接口查询失败:" + exception); + e.printStackTrace(); + } + return result; + } + +} Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/fsfy/InventoryDaoImpl.java =================================================================== diff -u -r25993 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/fsfy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 25993) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/fsfy/InventoryDaoImpl.java (.../InventoryDaoImpl.java) (revision 30814) @@ -635,4 +635,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java =================================================================== diff -u -r28956 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 28956) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/service/InventoryManagerImpl.java (.../InventoryManagerImpl.java) (revision 30814) @@ -319,6 +319,9 @@ }else{ inventory = inventoryDao.getInventory(inventorySerialNumber); } + if(inventory == null && StringUtils.isNotBlank(item.getSpecification())){ + inventory = inventoryDao.getInventory(inventorySerialNumber,item.getSpecification()); + } }//若明细的物资编码为空,则根据名称规格获取 else{ String name = item.getName(); Index: ssts-zd5y-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/zd5y/dao/InventoryDao.java =================================================================== diff -u -r25993 -r30814 --- ssts-zd5y-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/zd5y/dao/InventoryDao.java (.../InventoryDao.java) (revision 25993) +++ ssts-zd5y-misc/src/main/java/com/forgon/disinfectsystem/inventorymanagement/zd5y/dao/InventoryDao.java (.../InventoryDao.java) (revision 30814) @@ -119,4 +119,11 @@ return null; } + @Override + public Inventory getInventory(String inventorySerialNumber, + String specification) { + // TODO Auto-generated method stub + return null; + } + } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/WebServiceClientHelper.java =================================================================== diff -u -r30753 -r30814 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 30753) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 30814) @@ -2,14 +2,18 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.inventorymanagement.model.StorageEntry; import com.forgon.tools.Constants; /** @@ -22,24 +26,36 @@ public static Logger logger = Logger.getLogger(WebServiceClientHelper.class); + /** + * 保存从接口查询到的入库单信息,开始同步时,不需要再次查询接口 + */ + public static List storageEntryList = new ArrayList(); + /** * axis调用webservice + * @param endpoint //WSDL的地址 * @param input1 * @param input2 * @return * @throws Exception */ - public static String axisInvokeWebservice(String input1, String input2) throws Exception { + public static String axisInvokeWebservice(String endpoint, String input1, String input2) throws Exception { //字符集 String encodingStyle = "utf-8"; - //WSDL的地址 - String endpoint = DatasyncConstant.WebserviceAddress; //命名空间,在WSDL中对应的标签是:targetNamespace                                     String targetNamespace = "http://tempuri.org"; //具体方法的调用URI,在WSDL中对应的标签是: String soapActionURI = "http://tempuri.org/DHC.Published.PUB0028.BS.PUB0028.HIPMessageServer"; //具体调用的方法名,在WSDL中对应的标签是: String method = "HIPMessageServer"; + + // 一次性物品接口开发(军卫系统:供应商、入库单及明细、物品基础信息) + if(StringUtils.equals(endpoint, DatasyncConstant.JunWeiWebserviceAddress)){ + targetNamespace = "http://tempuri.org"; + soapActionURI = "http://tempuri.org/DHC.Published.PUB0025.BS.PUB0025.HIPManagerInfo"; + method = "HIPManagerInfo"; + } + //调用接口的参数的名字 String[] paramNames = {"input1","input2"}; //调用接口的参数的值 Index: ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/HIS.xml =================================================================== diff -u -r29499 -r30814 --- ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/HIS.xml (.../HIS.xml) (revision 29499) +++ ssts-web/src/main/webapp/disinfectsystem/config/nfykdxnfyy/spring/HIS.xml (.../HIS.xml) (revision 30814) @@ -80,7 +80,7 @@ - + - + + + + + \ No newline at end of file Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/SyncSupplierDaoImpl.java =================================================================== diff -u --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/SyncSupplierDaoImpl.java (revision 0) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/nfykdxnfyy/SyncSupplierDaoImpl.java (revision 30814) @@ -0,0 +1,97 @@ +package com.forgon.disinfectsystem.datasynchronization.dao.nfykdxnfyy; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; + +import net.sf.json.JSON; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import net.sf.json.xml.XMLSerializer; +import org.apache.log4j.Logger; +import com.forgon.disinfectsystem.datasynchronization.dao.SyncSupplierDao; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; + +/** + * 同步供应商接口(南方医院) + * @author ZhouPeiMian + * @since 2021-03-17 + * + */ +public class SyncSupplierDaoImpl implements SyncSupplierDao { + + Logger logger = Logger.getLogger(SyncSupplierDaoImpl.class); + + @Override + public Supplier[] getAllSupplier() { + String input1 = DatasyncConstant.JWServiceCode_Supplier; + String input2 = "" + DatasyncConstant.JWSourceSystem + ""; + Supplier[] result = null; + try { + String HIPManagerInfoResult = WebServiceClientHelper.axisInvokeWebservice(DatasyncConstant.JunWeiWebserviceAddress, input1, input2); + /*String HIPManagerInfoResult = "" + + "" + + "" + + "01871北京中美伟康公司]]>" + + "" + + "" + + "";*/ + logger.info("供应商接口返回信息:" + HIPManagerInfoResult); + int startIndex = HIPManagerInfoResult.indexOf(""); + if(startIndex == -1){ + return result; + } + int endIndex = HIPManagerInfoResult.indexOf(""); + if(endIndex == -1 || endIndex < startIndex){ + return result; + } + String xmlString = HIPManagerInfoResult.substring(startIndex + "".length(), endIndex); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read("" + xmlString + ""); + JSONObject supplierInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json; + if(supplierInfos != null){ + JSONObject body = supplierInfos.optJSONObject("Body"); + Integer status = body.optInt("ResultCode", -1); + if(DatasyncConstant.ResultCode_Success.intValue() != status.intValue()){ + logger.info("供应商接口查询失败:ResultCode = " + status + "; ResultContent = " + body.optString("ResultContent")); + return null; + } + Object supplierInfoObj = supplierInfos.opt("Data"); + JSONArray supplierInfoArr = null; + if(supplierInfoObj instanceof JSONArray){ + supplierInfoArr = (JSONArray) supplierInfoObj; + }else if(supplierInfoObj instanceof JSONObject){ + supplierInfoArr = new JSONArray(); + JSONObject supplierInfo = (JSONObject)supplierInfoObj; + supplierInfoArr.add(supplierInfo); + } + if(supplierInfoArr != null && supplierInfoArr.size() > 0){ + List supplierInfoList = new ArrayList(); + for (Object object : supplierInfoArr) { + JSONObject supplierInfo = (JSONObject) object; + String companyName = supplierInfo.optString("COMPANYNAME"); + String address = supplierInfo.optString("address"); + String phone = supplierInfo.optString("phone"); + Supplier supplier = new Supplier(); + supplier.setCompanyName(companyName); + supplier.setAddress(address); + supplier.setPhone(phone); + supplier.setRentTousse(Supplier.SUPPLIER_TYPE_SUPPLIER); + supplierInfoList.add(supplier); + } + return supplierInfoList.toArray(new Supplier[supplierInfoList.size()]); + } + } + } catch (Exception e) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + e.printStackTrace(new PrintStream(baos)); + String exception = baos.toString(); + logger.error("供应商接口查询失败:" + exception); + e.printStackTrace(); + } + return result; + } + + +}