/** * 功能:保存工单 * * @param orders DTOSet * @return boolean */ public boolean saveOrders(DTOSet orders) { boolean operateResult = false; boolean autoCommit = true; EamDhCheckBatchDTO dto = (EamDhCheckBatchDTO) dtoParameter; boolean isNewBatch = dto.getBatchId().equals(""); String act = dto.getAct(); try { autoCommit = conn.getAutoCommit(); conn.setAutoCommit(false); if (isNewBatch) { SeqProducer seqPrd = new SeqProducer(conn); // TODO dto.setBatchId(seqPrd.getStrNextSeq("EAM_DH_CHECK_BATCH") + ""); String companyCode = userAccount.getCompanyCode(); String orderType = LvecDicts.CHECK_BATCH; OrderNumGenerator numPrd = new OrderNumGenerator(conn, companyCode, orderType); numPrd.setOrderLength(3); dto.setBatchNo(numPrd.getOrderNum()); setDTOParameter(dto); createData(); } else { updateData(); } EamDhCheckLineDAO lineDAO = new EamDhCheckLineDAO(userAccount, null, conn); EamDhCheckLineDTO orderLine = new EamDhCheckLineDTO(); if (!dto.getOrderType().equals(LvecDicts.ORD_TYPE1_DHBS)) { orderLine.setBatchId(dto.getBatchId()); lineDAO.setDTOParameter(orderLine); lineDAO.DeleteByForeignKey("batchId"); } EamDhCheckHeaderDTO orderHeader = new EamDhCheckHeaderDTO(); orderHeader.setBatchId(dto.getBatchId()); EamDhCheckHeaderDAO headerDAO = new EamDhCheckHeaderDAO(userAccount, orderHeader, conn); headerDAO.DeleteByForeignKey("batchId"); int orderCount = orders.getSize(); for (int i = 0; i < orderCount; i++) { orderHeader = (EamDhCheckHeaderDTO) orders.getDTO(i); if (orderHeader.getCheckLocation() == 0) { continue; } orderHeader.setBatchId(dto.getBatchId()); orderHeader.setCheckTaskId(dto.getCheckTaskId()); orderHeader.setAct(act); headerDAO.setDTOParameter(orderHeader); headerDAO.saveOrder(); if (!orderHeader.getOrderType().equals(LvecDicts.ORD_TYPE1_DHBS)) { // 非补扫工单才需要创建行信息 orderHeader = (EamDhCheckHeaderDTO) headerDAO.getDTOParameter(); orderLine.setHeaderId(orderHeader.getHeaderId()); orderLine.setOrderType(orderHeader.getOrderType()); orderLine.setBatchId(dto.getBatchId()); lineDAO.setDTOParameter(orderLine); lineDAO.createData(); } } operateResult = true; } catch (Exception ex) { Logger.logError(ex); } finally { try { if (operateResult) { conn.commit(); if (act.equals(DzyhActionConstant.SAVE_ACTION)) { // 暂存工单 prodMessage(LvecMessageKeys.ORDER_SAVE_SUCCESS); } else if (act.equals(DzyhActionConstant.DISTRI_ORDER)) { // 下发工单 prodMessage(LvecMessageKeys.ORDER_DISTRI_SUCCESS); } } else { conn.rollback(); if (isNewBatch) { dto.setBatchId(""); dto.setBatchNo(LvecWebAttributes.ORDER_NO_AUTO_PRODUCE); } if (act.equals(DzyhActionConstant.SAVE_ACTION)) { // 暂存工单 prodMessage(LvecMessageKeys.ORDER_SAVE_FAILURE); } else if (act.equals(DzyhActionConstant.DISTRI_ORDER)) { // 下发工单 prodMessage(LvecMessageKeys.ORDER_DISTRI_FAILURE); } message.setIsError(true); } conn.setAutoCommit(autoCommit); setDTOParameter(dto); } catch (SQLException ex) { Logger.logError(ex); } } return operateResult; }