容易忽略的for循环问题

1、项目中对用户操作的结果进行审核时候,出现一个问题,如果对省份,和城市审核,出现四条数据,分别为province,city,province,city.

但是我提供给手机端的数据必须是省份城市一起显示,不是四条而是2条。

    // get user_verification data
        int issyn = 0;// 0未同步,1为同步
        /*
         * List<UserVerificationVO> verificationid =
         * userVerificationDaoImpl.queryUserVerification();
         */
        List<String> typelist = new ArrayList<String>();
        typelist.add("province");
        typelist.add("city");
        typelist.add("company");
        typelist.add("name");
        StringBuffer completed = new StringBuffer();
        completed.append(" and vc.status in(1,-1)");

        VerificationContentVO provinceValue = null;
        VerificationContentVO cityValue = null;
        // 1。为用户信息审核
        List<VerificationContentVO> getVerificationContent = verificationDaoImpl.queryVerificationContent(1, completed.toString(), issyn);
        /**
         * 1、注意:当连续数据库中存在两次修改地区,数据库存在四条数据,province,city等
         * 按照如下遍历方式会处理最后的province和city,之后是倒数第二个province,city (non-Javadoc)
         * 
         * @see com.bitbao.cm.service.VerificationService#sendCommentStreamMessage()
         */
        for (VerificationContentVO verificationContentVO : getVerificationContent) {
            SystemMessage message = new SystemMessage();
            if ("province".equals(verificationContentVO.getName())) {
                provinceValue = verificationContentVO;
                continue;
            }
            if ("city".equals(verificationContentVO.getName())) {
                cityValue = verificationContentVO;
                continue;
            }

            if (typelist.contains(verificationContentVO.getName().trim())) {
                // basic info
                message.setType(SystemMessageType.BASIC_MESSAGE);
            }
            else {
                // industry info
                message.setType(SystemMessageType.INDUSTRY_MESSAGE);
            }
            message.setUid(verificationContentVO.getUid());
            message.setVerificationContentVO(verificationContentVO);
            // save message to database
            if (messageServiceImpl.add(message)) {
                // update sendmessage status
                verificationDaoImpl.updateVerificationForSyn(verificationContentVO.getId(), issyn + 1);
            }

        }

        // process province and city
        if (provinceValue != null && cityValue != null) {
            SystemMessage message = new SystemMessage();
            message.setType(SystemMessageType.BASIC_MESSAGE);
            message.setProvinceValue(provinceValue.getNewValue());
            message.setCityValue(cityValue.getNewValue());

            message.setUid(provinceValue.getUid());
            message.setVerificationContentVO(provinceValue);

            if (messageServiceImpl.add(message)) {
                // update sendmessage status
                verificationDaoImpl.updateVerificationForSyn(provinceValue.getId(), issyn + 1);
                verificationDaoImpl.updateVerificationForSyn(cityValue.getId(), issyn + 1);
            }
        }

以上处理发生的问题是:导致每次处理都会先处理最后一条数据,之后是倒数第二条。。。,处理完之后才会插入到common_message表中。

虽说每次都从最后一条开始插入数据,但是不免有些小问题。

可以在处理city时候将province 和city一起弄成一条数据。

猜你喜欢

转载自woshixushigang.iteye.com/blog/1356236