171127之保存功能实现

来源:互联网 发布:mac自带系统监控工具 编辑:程序博客网 时间:2024/06/04 19:25

第一步:JSP的前端代码

<powersi:button id="save" value="保存" key="button_save" onclick="item_save()"  /><powersi:button id="allSave" value="全部保存" key="button_save" onclick="all_save()"  />

调用item_save()和all_save()方法。

function item_save(){        var json = [];        var rows = dg_MzSelect_info.getSelectedRows();        if(powersi.length(rows) == 0){            alert("请选择需要提交的数据!");            return false;        }         for(var i in rows){            if(rows[i].bkc252n=="验证不通过"){               alert("验证不通过,无法保存到目录库,请选择验证通过的信息保存!");               return false;            }            if(rows[i].bkc252n=="未验证"){               alert("未验证,无法保存到目录库,请选择验证通过的信息保存!");               return false;            }            if(rows[i].bkc040n=="已导入"){               alert("已导入的信息无须再保存,请选择未导入的信息!");               return false;            }            json.push({"aac002":rows[i].aac002,"akb020":rows[i].akb020,"akb021":rows[i].akb021,                "kcp6id":rows[i].kcp6id,"bkc040":rows[i].bkc040,"bkc133":rows[i].bkc133})        }        var paramsObj = {'infoItems':powersi.tostring(json)};        postJSON("${rootPath}/medicare/MzSelectHospAction!saveMzSelectHospImportInfo.action",                 paramsObj,showMenuInfoSave_item);    }

第二步:调用Action层MzSelectHospAction的saveMzSelectHospImportInfo()方法。

/**     * 将通过验证的门诊选定医院信息保存到申请表中     */    @SuppressWarnings("unchecked")    public String saveMzSelectHospImportInfo() {        try {            String param = getRequest().getParameter("infoItems");            if(StringUtils.isNotEmpty(param)){                List<MzSelectHospDTO> paramList = new ArrayList<MzSelectHospDTO>();                paramList = (List<MzSelectHospDTO>) JSONArray.toCollection(JSONArray.fromObject(param),                        MzSelectHospDTO.class);                ser.saveMzSelectHospImportInfo(paramList);                this.saveJSONMessage("保存成功!");            } else {                this.saveJSONMessage("没有需要保存的信息!");            }        } catch (Exception e) {            saveJSONError("保存出错!"+e.getMessage());        }        return NONE;    }

重点注入Service层:private MzSelectHospService ser = getBean(MzSelectHospService.class);

第三步: 通过ser.saveMzSelectHospImportInfo(paramList);连接到Service层的方法。

/**     * 将通过验证的门诊选定医院信息保存到申请表中     */    @SuppressWarnings("unchecked")    public void saveMzSelectHospImportInfo(List<MzSelectHospDTO> paramList) {        if (UtilFunc.isNotEmpty(paramList)) {            List<MzSelectHospDTO> passList = new ArrayList<MzSelectHospDTO>();            List<MzSelectHospDTO> noPassList = new ArrayList<MzSelectHospDTO>();            String checkPersonHospMsg = ""; // checkPersonHosp方法校验有效性的返回值            for (MzSelectHospDTO dto : paramList) {                try {                    String aae030="";                    String aae031="";                    if(!dto.getAae030().isEmpty()){                         aae030=dto.getAae030().substring(0,4)+"0101";                         aae031=dto.getAae030().substring(0,4)+"1231";                    }                    if (UtilFunc.isEmpty(dto.getAac002())) {                        throw new HygeiaException("社会保障号为空!");                    } else if (dto.getAac002().length() != 15 && dto.getAac002().length() != 18) {                        throw new HygeiaException("社会保障号长度不正确!");                    }                    if (StringUtils.isEmpty(dto.getAkb020())) {                        throw new HygeiaException("定点医疗机构编号不能为空!");                    }                    List<Map<String, String>> akb021s = dao.getHospitalName(dto);                    if (akb021s.size() > 0) {                        String akb021 = akb021s.get(0).get("aab069");                        dto.setAkb021(akb021);                    } else {                        throw new HygeiaException("定点医疗机构不存在!");                    }                    // 模拟页面查询人员控件获取人员信息                    ChoosePersonDAO cspDao = BeanHelper.getBean(ChoosePersonDAO.class);                    ChoosePersonDTO choosePerson = BeanHelper.getBean(ChoosePersonDTO.class);                    choosePerson.setQueryString(dto.getAac002());                    choosePerson.setEmpower("1");                    List personList = cspDao.getPersonInfo(choosePerson);                    if (personList.size() > 0) {                        Map retMsg = (Map) personList.get(0);                        com.powersi.biz.util.BeanHelper.copyProperties(retMsg, dto, true);                    } else {                        throw new HygeiaException("无此人信息!");                    }                    dto.setAae140("310");                    final List personInsurInfo = getPersonInsurInfo(dto.getAac001(), "310");                    if (personInsurInfo.size() > 0) {                        Map retInfo = (Map) personInsurInfo.get(0);                        com.powersi.biz.util.BeanHelper.copyProperties(retInfo, dto, true);                    } else {                        throw new HygeiaException("无此人基金信息!");                    }                    // 医疗机构检验                    dto.setAaz267("0");                    dto.setNew_akb020(dto.getAkb020());                    checkPersonHospMsg = checkPersonHosp(dto);                    if (checkPersonHospMsg.length() > 0) {                        throw new HygeiaException(checkPersonHospMsg);                    }                    if(!aae030.isEmpty()){                        dto.setAae030(aae030);                        dto.setAae031(aae031);                    }                    passList.add(dto); // 验证没问题                } catch (HygeiaException e) {                    // 跳过错误继续执行下一次循环。对于前面执行有错误的,可以考虑更新错误信息,但不保存                    noPassList.add(dto);// 之后更新noPassList中的记录,暂未写                    continue;                } finally {                }            }            if (UtilFunc.isEmpty(passList)) {                throw new HygeiaException("没有可保存的有效数据!");            }            dao.importMzSelectHosp(passList);            String bkc133 = paramList.get(0).getBkc133();            menuCataDao.updateImport(bkc133);// 更新导入事件的导入信息KAD6表,如果出现异常,是否加上部分导入?            dao.updateImportMzSelectInfo(passList);// 更新KCP6 bkc040 = '1'        } else {            throw new HygeiaException("没有可保存的有效数据!");        }    }

第四步:通过dto的set get方法连接dto层,设置参数
private MzSelectHospDao dao = BeanHelper.getBean(MzSelectHospDao.class);

//批量导入门诊选点医院申请    public int importMzSelectHosp(List<MzSelectHospDTO> paramList){        String aae011 = UserBizInfo.getLoginUser();        String bae100 = UserBizInfo.getUserName();        List<KCP1> kcp1s = new ArrayList<KCP1>();        String aaa027 = UserBizInfo.getAAA027();        for (MzSelectHospDTO mDTO : paramList) {            KCP1 kcp1 = setKcp1Fields(mDTO);//设置KCP1各字段的值            kcp1.setAae140("310");//固定值            kcp1.setBka006("110");//固定值            kcp1.setAka083("110");            kcp1.setAae013("批量导入");            kcp1.setAaa027(aaa027);            kcp1.setAae011(aae011);//经办人工号            kcp1.setBae100(bae100);//经办人            kcp1s.add(kcp1);        }        if(UtilFunc.isEmpty(kcp1s)){            throw new HygeiaException("没有可导入的数据!");        }        int num = DAOHelper.insert("KCP1", kcp1s);        String aaa121= "3101701";        saveAe02(aaa121,"0","","0",String.valueOf(kcp1s.get(0).getAaz267()),"门诊选定医院申请");        return num;    }/**     * 更新门诊选定医院导入验证信息     */    public void updateImportMzSelectInfo(List<MzSelectHospDTO> dtoList) {        StringBuffer lSQL = new StringBuffer();        lSQL.append("  update kcp6 set bkc040 = '1' ");        lSQL.append("  where kcp6id = :kcp6id ");        DBHelper.batchUpdate(lSQL.toString(), dtoList);    }