Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/SyncOrgUnitAndUserDaoImpl.java =================================================================== diff -u -r13772 -r14046 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 13772) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/SyncOrgUnitAndUserDaoImpl.java (.../SyncOrgUnitAndUserDaoImpl.java) (revision 14046) @@ -47,7 +47,6 @@ JSONObject userInfo = (JSONObject)dataTableObj; userJsonArray.add(userInfo); }else if(dataTableObj instanceof JSONArray){ - //拿最近的一次性诊疗记录 userJsonArray = (JSONArray)dataTableObj; } if(userJsonArray.size() > 0){ @@ -99,7 +98,6 @@ JSONObject userInfo = (JSONObject)dataTableObj; orgJsonArray.add(userInfo); }else if(dataTableObj instanceof JSONArray){ - //拿最近的一次性诊疗记录 orgJsonArray = (JSONArray)dataTableObj; } if(orgJsonArray.size() > 0){ Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByHospitalNumDaoImpl.java =================================================================== diff -u -r13772 -r14046 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 13772) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 14046) @@ -27,6 +27,27 @@ public PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum) { PatientInfoVO[] patientInfoVOArray = null; try{ + //测试数据,建议代码保留往后可以本地调试 + /*String xml = "" ++"" ++" 0" ++"" ++"" ++" 402657" ++" 3" ++" 舒敏" ++" 58" ++" " ++" " ++" 李职杏" ++" 经腹全子宫+双侧附件切除术" ++" 2016/7/6 8:00:00" ++" 妇科" ++" 妇科" ++" 023" ++" " ++"" ++"";*/ String xml = CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_HospitalNumber, hospitalNum), Constants.CHARSET_GBK); JSONObject json = (JSONObject)WebServiceClientHelper.patientXml2Json(xml); @@ -74,7 +95,6 @@ throw new RuntimeException(json.optString("Error")); } } - return null; }catch(Exception e){ logger.error("根据住院号查询病人信息失败" + e); } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByTreatmentNumDaoImpl.java =================================================================== diff -u -r13772 -r14046 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByTreatmentNumDaoImpl.java (.../FindPatientInfoByTreatmentNumDaoImpl.java) (revision 13772) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/FindPatientInfoByTreatmentNumDaoImpl.java (.../FindPatientInfoByTreatmentNumDaoImpl.java) (revision 14046) @@ -75,7 +75,6 @@ throw new RuntimeException(json.optString("Error")); } } - return null; }catch(Exception e){ logger.error("根据诊疗号查询病人信息失败" + e); } Index: ssts-web/src/main/resources/spring/projects/dgsdhyy/applicationContext-his.xml =================================================================== diff -u -r13772 -r14046 --- ssts-web/src/main/resources/spring/projects/dgsdhyy/applicationContext-his.xml (.../applicationContext-his.xml) (revision 13772) +++ ssts-web/src/main/resources/spring/projects/dgsdhyy/applicationContext-his.xml (.../applicationContext-his.xml) (revision 14046) @@ -41,6 +41,28 @@ class="com.forgon.disinfectsystem.datasynchronization.dwr.DataSynchronizationTableManager"> + + + + + + + + + + + + + + + + PROPAGATION_REQUIRED + + + + @@ -50,4 +72,7 @@ + + + \ No newline at end of file Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/Inventory.java =================================================================== diff -u -r12791 -r14046 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/Inventory.java (.../Inventory.java) (revision 12791) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/Inventory.java (.../Inventory.java) (revision 14046) @@ -3,11 +3,13 @@ import org.apache.commons.lang.StringUtils; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; -import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; public class Inventory { + /** + * 物资编码(用于一次性物品及材料) + */ private String serialNumber; private String name; private String specification; Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/WebServiceClientHelper.java =================================================================== diff -u -r13773 -r14046 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 13773) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dgsdhyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 14046) @@ -77,7 +77,30 @@ } return inputXml; } + /** + * xml格式转json(入库单及明细、退库单及明细等) + * @param result + * @return + */ + public static JSON xml2JsonCommon(String xml){ + try { + //转json + if (StringUtils.isNotBlank(xml)) { + xml = xml.replace("", ""); + XMLSerializer xmlSerializer = new XMLSerializer(); + JSON json = xmlSerializer.read(xml); + logger.debug("json=" + json); + return json; + } + } catch (Exception e) { + e.printStackTrace(); + logger.error("xml转json失败" + e); + } + return null; + } + + /** * 用户的xml格式转json * @param result * @return Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java =================================================================== diff -u --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java (revision 0) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/dgsdhyy/InventoryDaoImpl.java (revision 14046) @@ -0,0 +1,468 @@ +package com.forgon.disinfectsystem.inventorymanagement.dao.dgsdhyy; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.dao.dgsdhyy.DatasyncConstant; +import com.forgon.disinfectsystem.datasynchronization.dao.dgsdhyy.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.Constants; + +/** + * 东莞东华医院物资接口(同步入库单、退库单等)实现类 + * @author shuyongfu + * @since 2016-06-20 + * + */ +public class InventoryDaoImpl implements InventoryDao { + + private static StorageEntry[] lastStorageInEntryList = null; + private static StorageEntry[] lastStorageOutEntryList = null; + + /** + * 根据单号查询待同步的入库单信息 + * @param entrySerialNumber 单号 + */ + public StorageEntry findInEntryBySerialNumber(String entrySerialNumber){ + StorageEntry entry = null; + //从刚刚操作按时间范围读取到的入库结果中按单号进行过滤 + if(lastStorageInEntryList != null && lastStorageInEntryList.length > 0){ + for(StorageEntry storageEntry : lastStorageInEntryList){ + if(StringUtils.equals(entrySerialNumber, storageEntry.getSerialNumber())){ + entry = storageEntry; + break; + } + } + } + return entry; + } + + /** + * 根据单号查询待同步的退库单信息 + * @param entrySerialNumber 单号 + */ + public StorageEntry findOutEntryBySerialNumber(String entrySerialNumber){ + StorageEntry entry = null; + //从刚刚操作按时间范围读取到的入库结果中按单号进行过滤 + if(lastStorageOutEntryList != null && lastStorageOutEntryList.length > 0){ + for(StorageEntry storageEntry : lastStorageOutEntryList){ + if(StringUtils.equals(entrySerialNumber, storageEntry.getSerialNumber())){ + entry = storageEntry; + break; + } + } + } + return entry; + } + + public StorageEntry findReturnEntryBySerialNumber(String entrySerialNumber){ + return null; + } + + /** + * 根据开始与结束时间查询待同步的入库单信息 + * @param startDate 开始时间 + * @param endDate 结束时间 + */ + public StorageEntry[] findInEntryByTime(Date startDate,Date endDate ){ + StorageEntry[] entryArray = null; + try { + SimpleDateFormat sdfParam = new SimpleDateFormat("yyyy-MM-dd"); + //测试数据 + /*String xmlResult = "" ++"" ++" 0" ++"" ++"" ++" 2016061" ++" GYSR0001747" ++" " ++" 自动生成" ++"";*/ + String xmlResult = + CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, + WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_MaterialEntry, sdfParam.format(startDate), sdfParam.format(endDate)), + Constants.CHARSET_GBK); + JSONObject json = (JSONObject)WebServiceClientHelper.xml2JsonCommon(xmlResult); + if(json != null){ + String code = json.optString("Result"); + if(DatasyncConstant.RESULT_OK.equals(code)){ + Object dataTableObj = json.opt("DataTable"); + if(dataTableObj == null){ + return null; + } + JSONArray entryJsonArray = new JSONArray(); + if(dataTableObj instanceof JSONObject){ + JSONObject entryJson = (JSONObject)dataTableObj; + entryJsonArray.add(entryJson); + }else if(dataTableObj instanceof JSONArray){ + entryJsonArray = (JSONArray)dataTableObj; + } + if(entryJsonArray.size() > 0){ + List entryList = new ArrayList(); + SimpleDateFormat sdfValue = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + for (int i = 0; i < entryJsonArray.size(); i++) { + Object serialNumber = entryJsonArray.optJSONObject(i).opt("serialNumber"); + Object time = entryJsonArray.optJSONObject(i).opt("time"); + Object remark = entryJsonArray.optJSONObject(i).opt("remark"); + StorageEntry entry = new StorageEntry(); + entry.setSerialNumber(serialNumber instanceof String ? (String)serialNumber : ""); + entry.setTime(time instanceof String ? new java.sql.Date(sdfValue.parse((String)time).getTime()) : null); + entry.setRemark(remark instanceof String ? (String)remark : ""); + entryList.add(entry); + } + entryArray = new StorageEntry[entryJsonArray.size()]; + entryList.toArray(entryArray); + //记录本次的入库接口调用结果 + lastStorageInEntryList = entryArray; + } + }else{ + throw new RuntimeException(json.optString("Error")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return entryArray; + } + + /** + * 根据开始与结束时间查询待同步的退库单信息 + * @param startDate 开始时间 + * @param endDate 结束时间 + */ + public StorageEntry[] findOutEntryByTime(Date startDate,Date endDate){ + StorageEntry[] entryArray = null; + try { + SimpleDateFormat sdfParam = new SimpleDateFormat("yyyy-MM-dd"); + String xmlResult = + CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, + WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_GodownEntry, sdfParam.format(startDate), sdfParam.format(endDate)), + Constants.CHARSET_GBK); + JSONObject json = (JSONObject)WebServiceClientHelper.xml2JsonCommon(xmlResult); + if(json != null){ + String code = json.optString("Result"); + if(DatasyncConstant.RESULT_OK.equals(code)){ + Object dataTableObj = json.opt("DataTable"); + if(dataTableObj == null){ + return null; + } + JSONArray entryJsonArray = new JSONArray(); + if(dataTableObj instanceof JSONObject){ + JSONObject entryJson = (JSONObject)dataTableObj; + entryJsonArray.add(entryJson); + }else if(dataTableObj instanceof JSONArray){ + entryJsonArray = (JSONArray)dataTableObj; + } + if(entryJsonArray.size() > 0){ + List entryList = new ArrayList(); + SimpleDateFormat sdfValue = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + for (int i = 0; i < entryJsonArray.size(); i++) { + Object serialNumber = entryJsonArray.optJSONObject(i).opt("serialNumber"); + Object time = entryJsonArray.optJSONObject(i).opt("time"); + Object remark = entryJsonArray.optJSONObject(i).opt("remark"); + StorageEntry entry = new StorageEntry(); + entry.setSerialNumber(serialNumber instanceof String ? (String)serialNumber : ""); + entry.setTime(time instanceof String ? new java.sql.Date(sdfValue.parse((String)time).getTime()) : null); + entry.setRemark(remark instanceof String ? (String)remark : ""); + entryList.add(entry); + } + entryArray = new StorageEntry[entryJsonArray.size()]; + entryList.toArray(entryArray); + //记录本次的退库接口调用结果 + lastStorageInEntryList = entryArray; + } + }else{ + throw new RuntimeException(json.optString("Error")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return entryArray; + } + + /** + * 根据开始与结束时间查询待同步的退货单信息 + * @param startDate 开始时间 + * @param endDate 结束时间 + */ + public StorageEntry[] findReturnEntryByTime(Date startDate,Date endDate){ + return null; + } + + /** + * 根据单号查询待同步的入库单明细信息 + * @param entrySerialNumber 单号 + */ + public StorageEntryItem[] findInEntryItem(String entrySerialNumber){ + StorageEntryItem[] entryItemArray = null; + try { + /*String xmlResult = "" ++"" ++"0" ++"" ++"" ++" GYSR0001644" ++" 一次性使用无菌注射器带针" ++" 5ML(7#) 1800/箱" ++" 001249" ++" 10800" ++" 0.483" ++" 20150812" ++" 2017/7/31" ++" 国食药监械(准)字2014第3150617号" ++" 上海金塔医用器材有限公司" ++" " ++" 10001" ++"" ++"" ++" GYSR0001644" ++" 一次性使用无菌注射器带针" ++" 5ML(7#) 1800/箱" ++" 001249" ++" 7200" ++" 0.483" ++" 150925" ++" 2017/9/30" ++" 国食药监械(准)字2012第3660367号" ++" 天津哈娜好医材有限公司" ++" " ++" 10002" ++"" ++"";*/ + String xmlResult = + CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, + WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_MaterialEntryItem, entrySerialNumber), + Constants.CHARSET_GBK); + JSONObject json = (JSONObject)WebServiceClientHelper.xml2JsonCommon(xmlResult); + if(json != null){ + String code = json.optString("Result"); + if(DatasyncConstant.RESULT_OK.equals(code)){ + Object dataTableObj = json.opt("DataTable"); + if(dataTableObj == null){ + return null; + } + JSONArray entryItemJsonArray = new JSONArray(); + if(dataTableObj instanceof JSONObject){ + JSONObject entryItemJson = (JSONObject)dataTableObj; + entryItemJsonArray.add(entryItemJson); + }else if(dataTableObj instanceof JSONArray){ + entryItemJsonArray = (JSONArray)dataTableObj; + } + if(entryItemJsonArray.size() > 0){ + List entryItemList = new ArrayList(); + for (int i = 0; i < entryItemJsonArray.size(); i++) { + Object name = entryItemJsonArray.optJSONObject(i).opt("name"); + Object specification = entryItemJsonArray.optJSONObject(i).opt("specification"); + Object certification = entryItemJsonArray.optJSONObject(i).opt("certification"); + Object supplierName = entryItemJsonArray.optJSONObject(i).opt("supplierName"); + Object batchNumber = entryItemJsonArray.optJSONObject(i).opt("batchNumber"); + Object expDate = entryItemJsonArray.optJSONObject(i).opt("expDate");//2017/7/31 + Object manufacturer = entryItemJsonArray.optJSONObject(i).opt("manufacturer"); + Object amount = entryItemJsonArray.optJSONObject(i).opt("amount"); + Object unitPrice = entryItemJsonArray.optJSONObject(i).opt("cost"); + Object producingArea = entryItemJsonArray.optJSONObject(i).opt("producingArea"); + Object inventorySerialNumber = entryItemJsonArray.optJSONObject(i).opt("inventorySerialNumber"); + + StorageEntryItem entryItem = new StorageEntryItem(); + entryItem.setSupplierName(supplierName instanceof String ? (String)supplierName : ""); + entryItem.setBatchNumber(batchNumber instanceof String ? (String)batchNumber : null); + entryItem.setExpDate(expDate instanceof String ? new java.sql.Date(new SimpleDateFormat("yyyy/MM/dd").parse((String)expDate).getTime()) : null); + entryItem.setManufacturer(manufacturer instanceof String ? (String)manufacturer : null); + entryItem.setAmount(amount instanceof String ? Long.valueOf((String)amount) : null); + entryItem.setUnitPrice((unitPrice instanceof String ? Double.valueOf((String)unitPrice) : null)); + entryItem.setInventorySerialNumber(inventorySerialNumber instanceof String ? (String)inventorySerialNumber : null); + entryItem.setInventory(getInventory(entryItem.getInventorySerialNumber())); + entryItem.setProducingArea(producingArea instanceof String ? (String)producingArea : null); + entryItem.setCertification(certification instanceof String ? (String)certification : null); + entryItemList.add(entryItem); + } + entryItemArray = new StorageEntryItem[entryItemJsonArray.size()]; + entryItemList.toArray(entryItemArray); + }else{ + throw new RuntimeException("未找到单号为" + entrySerialNumber + "的入库单明细信息"); + } + }else{ + throw new RuntimeException(json.optString("Error")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return entryItemArray; + } + + /** + * 根据单号查询待同步的退库单明细信息 + * @param entrySerialNumber 单号 + */ + public StorageEntryItem[] findOutEntryItem(String entrySerialNumber){ + StorageEntryItem[] entryItemArray = null; + try { + String xmlResult = + CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, + WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_GodownEntryItem, entrySerialNumber), + Constants.CHARSET_GBK); + JSONObject json = (JSONObject)WebServiceClientHelper.xml2JsonCommon(xmlResult); + if(json != null){ + String code = json.optString("Result"); + if(DatasyncConstant.RESULT_OK.equals(code)){ + Object dataTableObj = json.opt("DataTable"); + if(dataTableObj == null){ + return null; + } + JSONArray entryItemJsonArray = new JSONArray(); + if(dataTableObj instanceof JSONObject){ + JSONObject entryItemJson = (JSONObject)dataTableObj; + entryItemJsonArray.add(entryItemJson); + }else if(dataTableObj instanceof JSONArray){ + entryItemJsonArray = (JSONArray)dataTableObj; + } + if(entryItemJsonArray.size() > 0){ + List entryItemList = new ArrayList(); + for (int i = 0; i < entryItemJsonArray.size(); i++) { + Object name = entryItemJsonArray.optJSONObject(i).opt("name"); + Object specification = entryItemJsonArray.optJSONObject(i).opt("specification"); + Object certification = entryItemJsonArray.optJSONObject(i).opt("certification"); + Object supplierName = entryItemJsonArray.optJSONObject(i).opt("supplierName"); + Object batchNumber = entryItemJsonArray.optJSONObject(i).opt("batchNumber"); + Object expDate = entryItemJsonArray.optJSONObject(i).opt("expDate");//2017/7/31 + Object manufacturer = entryItemJsonArray.optJSONObject(i).opt("manufacturer"); + Object amount = entryItemJsonArray.optJSONObject(i).opt("amount"); + Object unitPrice = entryItemJsonArray.optJSONObject(i).opt("cost"); + Object producingArea = entryItemJsonArray.optJSONObject(i).opt("producingArea"); + Object inventorySerialNumber = entryItemJsonArray.optJSONObject(i).opt("inventorySerialNumber"); + + StorageEntryItem entryItem = new StorageEntryItem(); + entryItem.setSupplierName(supplierName instanceof String ? (String)supplierName : ""); + entryItem.setBatchNumber(batchNumber instanceof String ? (String)batchNumber : null); + entryItem.setExpDate(expDate instanceof String ? new java.sql.Date(new SimpleDateFormat("yyyy/MM/dd").parse((String)expDate).getTime()) : null); + entryItem.setManufacturer(manufacturer instanceof String ? (String)manufacturer : null); + entryItem.setAmount(amount instanceof String ? Long.valueOf((String)amount) : null); + entryItem.setUnitPrice((unitPrice instanceof String ? Double.valueOf((String)unitPrice) : null)); + entryItem.setInventorySerialNumber(inventorySerialNumber instanceof String ? (String)inventorySerialNumber : null); + entryItem.setInventory(getInventory(entryItem.getInventorySerialNumber())); + entryItem.setProducingArea(producingArea instanceof String ? (String)producingArea : null); + entryItem.setCertification(certification instanceof String ? (String)certification : null); + entryItemList.add(entryItem); + } + entryItemArray = new StorageEntryItem[entryItemJsonArray.size()]; + entryItemList.toArray(entryItemArray); + }else{ + throw new RuntimeException("未找到单号为" + entrySerialNumber + "的退库单明细信息"); + } + }else{ + throw new RuntimeException(json.optString("Error")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return entryItemArray; + } + + /** + * 根据单号查询待同步的退货单明细信息 + * @param entrySerialNumber 单号 + */ + public StorageEntryItem[] findReturnEntryItem(String entrySerialNumber){ + //东莞东华医院暂无此接口 + return null; + } + + /** + * 根据物资编码查询待同步的退货单明细信息 + * @param entrySerialNumber 单号 + */ + public Inventory getInventory(String inventorySerialNumber){ + Inventory inventory = null; + try { + /*String xmlResult = "" ++"" ++" 0" ++"" ++"" ++" 103318" ++" 内窥镜储存柜" ++" 双门" ++" " ++" 0" ++" 6800" ++" 10001" ++"" ++"" ++" 103319" ++" 根管扩大器" ++" BBB535 35#25mm" ++" " ++" 40.02" ++" 6800" ++" 10002" ++"";*/ + String xmlResult = + CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, + WebServiceClientHelper.buildInputXml(DatasyncConstant.MethodName_CSSD_MaterialDefinition), + Constants.CHARSET_GBK); + JSONObject json = (JSONObject)WebServiceClientHelper.xml2JsonCommon(xmlResult); + if(json != null){ + String code = json.optString("Result"); + if(DatasyncConstant.RESULT_OK.equals(code)){ + Object dataTableObj = json.opt("DataTable"); + if(dataTableObj == null){ + return null; + } + JSONArray entryJsonArray = new JSONArray(); + if(dataTableObj instanceof JSONObject){ + JSONObject entryJson = (JSONObject)dataTableObj; + entryJsonArray.add(entryJson); + }else if(dataTableObj instanceof JSONArray){ + entryJsonArray = (JSONArray)dataTableObj; + } + if(entryJsonArray.size() > 0){ + for (int i = 0; i < entryJsonArray.size(); i++) { + Object id = entryJsonArray.optJSONObject(i).opt("id"); + Object name = entryJsonArray.optJSONObject(i).opt("name"); + Object specification = entryJsonArray.optJSONObject(i).opt("specification"); + Object unit = entryJsonArray.optJSONObject(i).opt("unit"); + Object cost = entryJsonArray.optJSONObject(i).opt("cost"); + Object serialNumber = entryJsonArray.optJSONObject(i).opt("serialNumber"); + //待完善 + if(serialNumber != null && serialNumber instanceof String && StringUtils.equals(inventorySerialNumber, (String)serialNumber)){ + inventory = new Inventory(); + inventory.setName(name instanceof String ? (String)name : ""); + inventory.setSpecification(specification instanceof String ? (String)specification : null); + inventory.setUnit(unit instanceof String ? (String)unit : null); + inventory.setCost(cost instanceof String ? Double.valueOf((String)cost) : null); + inventory.setSerialNumber(serialNumber instanceof String ? (String)serialNumber : null); + break; + } + } + } + }else{ + throw new RuntimeException(json.optString("Error")); + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return inventory; + } + +} Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/StorageEntryItem.java =================================================================== diff -u -r12331 -r14046 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/StorageEntryItem.java (.../StorageEntryItem.java) (revision 12331) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/StorageEntryItem.java (.../StorageEntryItem.java) (revision 14046) @@ -11,10 +11,23 @@ private Date expDate; private Long amount; + /** + * 对应入库单的cost + */ private Double unitPrice; private String supplierName; private String manufacturer; + //根据东华提供的接口增加以下属性 + /** + * 注册证号 + */ + private String certification; + /** + * 产地 + */ + private String producingArea; + //材料编码 private String invCode; @@ -117,6 +130,22 @@ public void setInvCode(String invCode) { this.invCode = invCode; } + + public String getCertification() { + return certification; + } + + public void setCertification(String certification) { + this.certification = certification; + } + + public String getProducingArea() { + return producingArea; + } + + public void setProducingArea(String producingArea) { + this.producingArea = producingArea; + } }