From fec1c6eef58c6584fa9524eb1de17535ca99b104 Mon Sep 17 00:00:00 2001 From: zengwh <81383286@qq.com> Date: Thu, 15 Jul 2021 09:42:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A2=9E=E5=8A=A0=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E6=98=8E=E7=BB=86=E6=8F=92=E5=85=A5=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ipml/ArchiveFlowInfoService.java | 4 +- .../ipml/Archive_MasterServiceImpl.java | 171 +++++++++++++++++- src/main/java/com/emr/util/OracleConnect.java | 54 +++++- 3 files changed, 213 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java b/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java index da6aff0..3b4371c 100644 --- a/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java +++ b/src/main/java/com/emr/service/ipml/ArchiveFlowInfoService.java @@ -56,7 +56,7 @@ public class ArchiveFlowInfoService { * @param sumbitDate 提交时间 * @throws Exception */ - public Integer insertFlowInfo(String masterId,String remark,ArchiveFlowRole currentRole,ArchiveFlowRole nextRole,Date sumbitDate)throws Exception{ + public ArchiveFlowInfo insertFlowInfo(String masterId,String remark,ArchiveFlowRole currentRole,ArchiveFlowRole nextRole,Date sumbitDate)throws Exception{ //添加流程 ArchiveFlowInfo flowInfo = new ArchiveFlowInfo(); //masterId; @@ -100,7 +100,7 @@ public class ArchiveFlowInfoService { //createtime:创建时间 flowInfo.setCreatetime(new Date()); flowInfoMapper.insertSelective(flowInfo); - return flowInfo.getId(); + return flowInfo; } /** diff --git a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java index 8d0120f..9882cc3 100644 --- a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java @@ -689,6 +689,92 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { return archiveMasterMapper.selectByPrimaryKey(id); } + + /** + * 插入第三方oracle库 + * @param flowInfo + */ + private void backInsertOracle(Integer code,ArchiveFlowInfo flowInfo){ + //查询是否存在记录 + String masterId = flowInfo.getMasterId(); + String selectSql = "SELECT count(1) FROM ARCHIVE_FLOW_INFO where master_id = '"+masterId+"'"; + List counts = null; + try { + counts = OracleConnect.selectList(selectSql); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("审核时查询oracle记录失败"); + } + if(code == 1 || !"0".equals(counts.get(0))) { + Archive_Master master = archiveMasterMapper.selectByPrimaryKey(masterId); + String patientId = master.getPatientId(); + String sql = "insert all into archive_flow_info (" + + "master_id, " + + "step_index," + + "start_step_id, " + + "start_step, " + + "sumbit_name," + + "target_step_id, " + + "target_step, " + + "oper_role," + + "use_seconds, " + + "remark, " + + "user_name," + + "sumbit_time, " + + "createtime," + + "jzh," + + "is_available," + + "return," + + "return_time" + + ")" + + "values (" + + "'" + flowInfo.getMasterId() + "'," + + flowInfo.getStepIndex() + "," + + flowInfo.getStartStepId() + "," + + "'" + flowInfo.getStartStep() + "'," + + "'" + flowInfo.getSumbitName() + "'," + + flowInfo.getTargetStepId() + "," + + "'" + flowInfo.getTargetStep() + "'," + + flowInfo.getOperRole() + "," + + "'" + flowInfo.getUseSeconds() + "'," + + "'" + flowInfo.getRemark() + "'," + + "'" + flowInfo.getUserName() + "'," + + "SYSDATE," + + "SYSDATE," + + "'" + patientId + "'," + + "'" + "否" + "'," + + "'" + "是" + "'," + + "SYSDATE" + + ") select * from dual"; + try { + OracleConnect.insert(sql); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("审核信息插入oracle失败"); + } + } + } + + /** + * 退回,修改oracle信息 将该支线的所有可用都改为'否',并修改是否退回为''和退回时间 + * @param roleIndex + * @param archiveDetailId + */ + private void updateOracle(String roleIndex, String archiveDetailId) { + //修改语句 + String sql = "update ARCHIVE_FLOW_INFO set is_available = '否' where master_id = '"+archiveDetailId+"'"; + if(StringUtils.isNotBlank(roleIndex)){ + //修改单条支线 + sql += " and OPER_ROLE in ("+roleIndex+",4)"; + } + try { + OracleConnect.update(sql); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("退回修改oracle失败"); + } + } + /** * 退回操作 * */ @@ -725,6 +811,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { //修改复审内容 emrFaultDetail.setCreater(username); emrFaultDetail.setCreateTime(nowTime); + //定义修改支线 + String roleIndex = ""; switch (returntoRole) { //退回给医生 case "DOCTOR": @@ -732,11 +820,13 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { status = EnumVerify.DocState.backToDoctor(Integer.valueOf(emrFaultDetail.getStatus()),archiveFlowRoles); //退回的状态码 backToCodeList.add(EnumVerify.DocState.DortorBack.getCode()); + roleIndex = "1"; break; //退回给护士 case "NURSE": status = EnumVerify.DocState.backToNurse(Integer.valueOf(emrFaultDetail.getStatus()),archiveFlowRoles); backToCodeList.add(EnumVerify.DocState.NurseBack.getCode()); + roleIndex = "2"; break; //退回给医生和护士 case "ALL": @@ -751,8 +841,12 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { //获取当前节点和下个节点对象集合 List currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(targetCode, backToCode,archiveFlowRoles); //添加进流转记录 - Integer flowInfoId = flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date()); - emrFaultDetail.setParentId(flowInfoId); + ArchiveFlowInfo flowInfo = flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date()); + //插入退回信息 + backInsertOracle(0,flowInfo); + //修改退回信息 + updateOracle(roleIndex,emrFaultDetail.getArchiveDetailId()); + emrFaultDetail.setParentId(flowInfo.getId()); //添加缺陷记录 emrFaultDetailService.insertSel(emrFaultDetail); } @@ -867,6 +961,72 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { } } + /** + * 插入第三方oracle库 + * @param flowInfo + */ + private void insertOracle(Integer code,ArchiveFlowInfo flowInfo){ + //查询是否存在记录 + String masterId = flowInfo.getMasterId(); + String selectSql = "SELECT count(1) FROM ARCHIVE_FLOW_INFO where master_id = '"+masterId+"'"; + List counts = null; + try { + counts = OracleConnect.selectList(selectSql); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("审核时查询oracle记录失败"); + } + log.info("masterId查询结果:"+counts.get(0)); + if(code == 1 || !"0".equals(counts.get(0))) { + Archive_Master master = archiveMasterMapper.selectByPrimaryKey(masterId); + String patientId = master.getPatientId(); + String sql = "insert all into archive_flow_info (" + + "master_id, " + + "step_index," + + "start_step_id, " + + "start_step, " + + "sumbit_name," + + "target_step_id, " + + "target_step, " + + "oper_role," + + "use_seconds, " + + "remark, " + + "user_name," + + "sumbit_time, " + + "createtime," + + "jzh," + + "is_available" + + ")" + + "values (" + + "'" + flowInfo.getMasterId() + "'," + + flowInfo.getStepIndex() + "," + + flowInfo.getStartStepId() + "," + + "'" + flowInfo.getStartStep() + "'," + + "'" + flowInfo.getSumbitName() + "'," + + flowInfo.getTargetStepId() + "," + + "'" + flowInfo.getTargetStep() + "'," + + flowInfo.getOperRole() + "," + + "'" + flowInfo.getUseSeconds() + "'," + + "'" + flowInfo.getRemark() + "'," + + "'" + flowInfo.getUserName() + "'," + + "SYSDATE," + + "SYSDATE," + + "'" + patientId + "'," + + "'" + "是" + "'" + + ") select * from dual"; + log.info("sql:"+sql); + try { + OracleConnect.insert(sql); + log.info("成功"); + } catch (Exception e) { + e.printStackTrace(); + log.info("失败"); + throw new RuntimeException("审核信息插入oracle失败"); + } + + } + } + /** * 当次初审 * @param remark @@ -890,7 +1050,9 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { //获取当前节点和下个节点对象集合 List currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(roleCode, null,archiveFlowRoles); //添加进流转记录 - flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date()); + ArchiveFlowInfo flowInfo = flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date()); + //处于初始状态的添加进第三方oracle库里 + insertOracle(code,flowInfo); } /** @@ -1000,7 +1162,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { //获取当前节点和下个节点对象集合 List currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(currentStatus, EnumVerify.DocState.MedicalRoomCheck.getCode(),archiveFlowRoles); //添加流转节点 - flowInfoService.insertFlowInfo(master.getId(), master.getRemark(), currentRoleAndNextRole.get(0), currentRoleAndNextRole.get(1), sumbitDate); + ArchiveFlowInfo flowInfo = flowInfoService.insertFlowInfo(master.getId(), master.getRemark(), currentRoleAndNextRole.get(0), currentRoleAndNextRole.get(1), sumbitDate); + insertOracle(0,flowInfo); //添加纸质位置 paperPostionService.savePaperPostion(master); } diff --git a/src/main/java/com/emr/util/OracleConnect.java b/src/main/java/com/emr/util/OracleConnect.java index 6e9137b..7d287f6 100644 --- a/src/main/java/com/emr/util/OracleConnect.java +++ b/src/main/java/com/emr/util/OracleConnect.java @@ -22,6 +22,12 @@ public class OracleConnect { private static PreparedStatement pst = null; public static ResultSet rs = null; +// private String url = "127.0.0.1:1521/ORCL"; +// private String userName = "docus"; +// private String passWord = "docus702"; + private String url = "200.100.100.1:1521/orc1"; + private String userName = "Jswzh"; + private String passWord = "Jswzh"; /** * 构造函数完成数据库的连接和连接对象的生成 */ @@ -30,10 +36,10 @@ public class OracleConnect { if (dataSourceTest == null) { dataSourceTest = new DruidDataSource(); // 设置连接参数 - dataSourceTest.setUrl("jdbc:oracle:thin:@200.100.100.1:1521/orc1"); + dataSourceTest.setUrl("jdbc:oracle:thin:@" + url); dataSourceTest.setDriverClassName("oracle.jdbc.driver.OracleDriver"); - dataSourceTest.setUsername("Jswzh"); - dataSourceTest.setPassword("Jswzh"); + dataSourceTest.setUsername(userName); + dataSourceTest.setPassword(passWord); dataSourceTest.setInitialSize(3); dataSourceTest.setMaxActive(10); } @@ -63,16 +69,27 @@ public class OracleConnect { * @param conn Connection * @throws Exception */ - private static void CloseConn(ResultSet rs, Statement stat, Connection conn) - throws Exception { + private static void CloseConn(ResultSet rs, Statement stat, Connection conn){ if (rs != null) { - rs.close(); + try { + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } } if (stat != null) { - stat.close(); + try { + stat.close(); + } catch (SQLException e) { + e.printStackTrace(); + } } if (conn != null) { - conn.close(); + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } } } @@ -111,11 +128,28 @@ public class OracleConnect { return str; } - public static int insert(String sql) throws Exception { + public static int insert(String sql){ Connection conn = new OracleConnect().getConnect(); try { pst=conn.prepareStatement(sql); - return pst.executeUpdate(); + int i = pst.executeUpdate(); + conn.commit(); + return i; + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException(""); + }finally { + OracleConnect.CloseConn(null, pst, conn); + } + } + + public static int update(String sql) throws Exception { + Connection conn = new OracleConnect().getConnect(); + try { + Statement stmt=conn.createStatement();//创建一个Statement对象 + int i = stmt.executeUpdate(sql);//执行SQL语句 + conn.commit(); + return i; } catch (SQLException e) { e.printStackTrace(); }finally {