java8 自定义排序

package com.sample.demo.samples.ms.service.impl;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.sample.demo.samples.ms.analysis.vo.AnalysisNoticeVO;
import com.sample.demo.samples.ms.dao.NoticeInfoMapper;
import com.sample.demo.samples.ms.index.vo.BieDataVO;
import com.sample.demo.samples.ms.index.vo.ComplexPillarDataVO4;
import com.sample.demo.samples.ms.index.vo.LineDataVO;
import com.sample.demo.samples.ms.index.vo.MainComlexPillarDataGenericityVO;
import com.sample.demo.samples.ms.index.vo.MainLineDataVO;
import com.sample.demo.samples.ms.index.vo.PeoleAreaVO;
import com.sample.demo.samples.ms.model.NoticeInfo;
import com.sample.demo.samples.ms.service.INoticeInfoService;

/**
 * <p>
 * 资金流水表-帮扶 服务实现类
 * </p>
 *
 * @author canghai123
 * @since 2019-11-20
 */
@Service
public class NoticeInfoServiceImpl extends ServiceImpl<NoticeInfoMapper, NoticeInfo> implements INoticeInfoService {

	@Override
	public AnalysisNoticeVO analysisNotice(String areaCode, String dateStr) {
		List<String> sortList = Arrays.asList("天水", "武林", "长庆", "潮鸣", "朝晖", "文晖", "东新", "石桥");
		// 变动机制-退出量(年)
		AnalysisNoticeVO vo = new AnalysisNoticeVO();
		List<BieDataVO> bieDataVOList = this.baseMapper.selectNoticeYearPeopleTypeNumChange(dateStr);
		bieDataVOList = bieDataVOList.stream().sorted(Comparator.comparing(BieDataVO::getName, (x, y) -> {
			if (x == null && y != null) {
				return 1;
			} else if (x != null && y == null) {
				return -1;
			} else if (x == null && y == null) {
				return -1;
			} else {
				// 按照读取的list顺序排序
				for (String sort : sortList) {
					if (sort.equals(x) || sort.equals(y)) {
						if (x.equals(y)) {
							return 0;
						} else if (sort.equals(x)) {
							return -1;
						} else {
							return 1;
						}
					}
				}
				return 0;
			}
		})).collect(Collectors.toList());
		vo.setBieDataVOList(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 变动机制-退出量(月
		bieDataVOList = this.baseMapper.selectNoticeMonthPeopleTypeNumChange(dateStr);
		bieDataVOList = bieDataVOList.stream().sorted(Comparator.comparing(BieDataVO::getName, (x, y) -> {
			if (x == null && y != null) {
				return 1;
			} else if (x != null && y == null) {
				return -1;
			} else if (x == null && y == null) {
				return -1;
			} else {
				// 按照读取的list顺序排序
				for (String sort : sortList) {
					if (sort.equals(x) || sort.equals(y)) {
						if (x.equals(y)) {
							return 0;
						} else if (sort.equals(x)) {
							return -1;
						} else {
							return 1;
						}
					}
				}
				return 0;
			}
		})).collect(Collectors.toList());
		vo.setBieDataVOList1(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 变动机制-退出状态(年)
		MainComlexPillarDataGenericityVO<ComplexPillarDataVO4> mainComlexPillarDataVO = new MainComlexPillarDataGenericityVO<>();
		List<ComplexPillarDataVO4> pillarDataVOList = this.baseMapper.selectNoticeNumPillerChange(dateStr);
		pillarDataVOList = pillarDataVOList.stream()
				.sorted(Comparator.comparing(ComplexPillarDataVO4::getTitle, (x, y) -> {
					if (x == null && y != null) {
						return 1;
					} else if (x != null && y == null) {
						return -1;
					} else if (x == null && y == null) {
						return -1;
					} else {
						// 按照读取的list顺序排序
						for (String sort : sortList) {
							if (sort.equals(x) || sort.equals(y)) {
								if (x.equals(y)) {
									return 0;
								} else if (sort.equals(x)) {
									return -1;
								} else {
									return 1;
								}
							}
						}
						return 0;
					}
				})).collect(Collectors.toList());
		mainComlexPillarDataVO
				.setPillarDataVOList(pillarDataVOList == null ? Collections.emptyList() : pillarDataVOList);
		List<String> pillarTitleList = Lists.newLinkedList();
		if (pillarDataVOList != null) {
			for (ComplexPillarDataVO4 complexPillarDataVO : pillarDataVOList) {
				pillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO.setPillarTitleList(pillarTitleList == null ? Collections.emptyList() : pillarTitleList);
		vo.setMainComlexPillarDataVO(mainComlexPillarDataVO);

		// 变动机制-退出原因(年)
		MainLineDataVO mainLineDataVO = new MainLineDataVO();
		List<LineDataVO> lineDataVOList = Lists.newLinkedList();
		List<PeoleAreaVO> peoleAreaVOList = this.baseMapper.selectNoticePeopleZxNumChange(dateStr);
		peoleAreaVOList = peoleAreaVOList.stream().sorted(Comparator.comparing(PeoleAreaVO::getAreaCode, (x, y) -> {
			if (x == null && y != null) {
				return 1;
			} else if (x != null && y == null) {
				return -1;
			} else if (x == null && y == null) {
				return -1;
			} else {
				// 按照读取的list顺序排序
				for (String sort : sortList) {
					if (sort.equals(x) || sort.equals(y)) {
						if (x.equals(y)) {
							return 0;
						} else if (sort.equals(x)) {
							return -1;
						} else {
							return 1;
						}
					}
				}
				return 0;
			}
		})).collect(Collectors.toList());
		// 排序
		List<String> zxTitleList = new LinkedList<String>();
		Map<Integer, List<PeoleAreaVO>> groupBy = peoleAreaVOList.stream()
				.collect(Collectors.groupingBy(PeoleAreaVO::getType1));
		if (groupBy != null) {
			groupBy.forEach((k, v) -> {
				LineDataVO lineDataVO = new LineDataVO();
				if (k == 2) {
					lineDataVO.setName("享受升级");
				} else if (k == 3) {
					lineDataVO.setName("户籍迁入");
				} else if (k == 4) {
					lineDataVO.setName("户籍迁出");
				} else if (k == 5) {
					lineDataVO.setName("死亡人数");
				} else if (k == 6) {
					lineDataVO.setName("享受期满");
				} else if (k == 7) {
					lineDataVO.setName("政策冲突");
				}
				lineDataVO.setType("line");
				lineDataVO.setStack("人口");
				List<Long> data = v.stream().map((peoleAreaVO) -> peoleAreaVO.getNum()).collect(Collectors.toList());
				lineDataVO.setData(data);
				lineDataVOList.add(lineDataVO);
				List<PeoleAreaVO> peopleAreaVOList = v;
				if (zxTitleList.size() == 0) {
					if (peopleAreaVOList != null) {
						for (PeoleAreaVO peopleAreaVO : peopleAreaVOList) {
							zxTitleList.add(peopleAreaVO.getAreaCode());
						}
					}
				}
			});
		}
		mainLineDataVO.setLineDataVOList(lineDataVOList == null ? Collections.emptyList() : lineDataVOList);
		mainLineDataVO.setLineTitleList(zxTitleList);
		vo.setMainLineDataVO(mainLineDataVO);
		return vo;
	}

}

package com.sample.demo.samples.ms.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.sample.demo.samples.ms.exception.MsApiException;
import com.sample.demo.samples.ms.index.vo.BieDataVO;
import com.sample.demo.samples.ms.index.vo.ComplexPillarDataVO;
import com.sample.demo.samples.ms.index.vo.ComplexPillarDataVO1;
import com.sample.demo.samples.ms.index.vo.ComplexPillarDataVO2;
import com.sample.demo.samples.ms.index.vo.ComplexPillarDataVO3;
import com.sample.demo.samples.ms.index.vo.LineDataVO;
import com.sample.demo.samples.ms.index.vo.MainComlexPillarDataVO;
import com.sample.demo.samples.ms.index.vo.MainComlexPillarDataVO1;
import com.sample.demo.samples.ms.index.vo.MainComlexPillarDataVO2;
import com.sample.demo.samples.ms.index.vo.MainComlexPillarDataVO3;
import com.sample.demo.samples.ms.index.vo.MainLineDataVO;
import com.sample.demo.samples.ms.index.vo.PeoleAreaVO;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;

import com.sample.demo.samples.ms.model.PeopleInfo;
import com.sample.demo.samples.consts.AreaConsts;
import com.sample.demo.samples.ms.analysis.vo.AnalysisByVO;
import com.sample.demo.samples.ms.analysis.vo.AnalysisDisabledVO;
import com.sample.demo.samples.ms.analysis.vo.AnalysisOldVO;
import com.sample.demo.samples.ms.analysis.vo.AnalysisVO;
import com.sample.demo.samples.ms.dao.PeopleInfoDao;
import com.sample.demo.samples.ms.service.PeopleInfoService;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @version 版权 Copyright(c)2019 浙江设维信息技术有限公司
 * @ClassName: PeopleInfoServiceImpl<br />
 * @Descripton:
 * @author: zbd
 * @date: 2019-11-10 19:34
 */
@Service
public class PeopleInfoServiceImpl extends ServiceImpl<PeopleInfoDao, PeopleInfo> implements PeopleInfoService {

	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Override
	public void updateByNames(List<PeopleInfo> updateList) {
		updateList.forEach(t -> {
			updateByName(t);
		});

	}

	@Override
	public void updateByName(PeopleInfo peopleInfo) {
		update(peopleInfo, new LambdaUpdateWrapper<PeopleInfo>().set(peopleInfo.getCardNum() != null,
				PeopleInfo::getCardNum, peopleInfo.getCardNum()));
	}

	@Override
	public PeopleInfo getByCardNum(String cardNum) {
		return getOne(new LambdaQueryWrapper<PeopleInfo>().eq(cardNum != null, PeopleInfo::getCardNum, cardNum));
	}

	@Override
	public PeopleInfo getByCardNumMustExist(String cardNum) {
		if (cardNum == null) {
			return null;
		}
		PeopleInfo peopleInfo = getOne(
				new LambdaQueryWrapper<PeopleInfo>().eq(cardNum != null, PeopleInfo::getCardNum, cardNum));
		if (peopleInfo == null) {
			throw new MsApiException("该身份证号对应居民不存在");
		}
		return peopleInfo;
	}

	@Override
	public IPage<PeopleInfo> selectListByCondition(JSONArray conditionArray, List<String> fieldsList, Integer pageNum,
			Integer pageSize, Integer type, List<String> areaCodeList) {
		IPage<PeopleInfo> page = new Page<>(pageNum, pageSize);
		StringBuffer listSql = new StringBuffer();
		StringBuffer countSql = new StringBuffer();
		StringBuffer fieldSql = new StringBuffer();
		StringBuffer conditionSql = new StringBuffer();
		List<Object> paramList = Lists.newLinkedList();
		List<Object> paramList1 = Lists.newLinkedList();
		listSql.append(
				"select " + "	distinct    id,\n" + "		name,\n" + "		sex,\n" + "		card_num as cardNum\n");
		countSql.append("select count(distinct id)");
		for (String field : fieldsList) {
			if (StringUtils.equals(field, "birthDate")) {
				fieldSql.append(",birth_date as birthDate\n");
			}
			if (StringUtils.equals(field, "mobile")) {
				fieldSql.append(",mobile\n");
			}
			if (StringUtils.equals(field, "phone")) {
				fieldSql.append(",phone\n");
			}
			if (StringUtils.equals(field, "hjType")) {
				fieldSql.append(",hj_type as hjType\n");
			}
			if (StringUtils.equals(field, "hjAddress")) {
				fieldSql.append(",hj_address as hjAddress\n");
			}
			if (StringUtils.equals(field, "jzAddress")) {
				fieldSql.append(",jz_address as jzAddress\n");
			}
			if (StringUtils.equals(field, "educationDegree")) {
				fieldSql.append(",education_degree as educationDegree\n");
			}
			if (StringUtils.equals(field, "maritalStatus")) {
				fieldSql.append(",marital_status as maritalStatus\n");
			}
		}
		listSql.append(fieldSql);
		listSql.append("from t_people_info ");
		countSql.append("from t_people_info ");
		conditionSql.append("where 1=1 ");
		if (conditionArray != null && !conditionArray.isEmpty()) {
			for (int i = 0; i < conditionArray.size(); i++) {
				JSONObject jsonObject = (JSONObject) conditionArray.get(i);
				if (jsonObject == null || jsonObject.isEmpty()) {
					continue;
				}
				Integer isAdd = jsonObject.getInteger("isAdd");
				String field = jsonObject.getString("field");
				Integer isContain = jsonObject.getInteger("isContain");
				String inputStr = jsonObject.getString("inputStr");
				if (isAdd == null) {
					continue;
				}
				if (StringUtils.isEmpty(field)) {
					continue;
				}
				if (isContain == null) {
					continue;
				}
				if (StringUtils.isBlank(inputStr)) {
					continue;
				}
				if (StringUtils.equals(field, "name")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and name like concat('%',?,'%') ");
						} else {
							conditionSql.append("or name like concat('%',?,'%') ");
						}
						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and name not like concat('%',?,'%') ");
						} else {
							conditionSql.append("or name not like concat('%',?,'%') ");
						}
						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and name=? ");
						} else {
							conditionSql.append("or name=? ");
						}
						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and name<>? ");
						} else {
							conditionSql.append("or name<>? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and name like concat('%',?) ");
						} else {
							conditionSql.append("or name like concat('%',?) ");
						}

						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and name not like concat(?,'%') ");
						} else {
							conditionSql.append("or name not like concat(?,'%') ");
						}

						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "cardNum")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and card_num like concat('%',?,'%') ");

						} else {
							conditionSql.append("or card_num like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and card_num not like concat('%',?,'%') ");
						} else {
							conditionSql.append("or card_num not like concat('%',?,'%') ");
						}

						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and card_num=? ");
						} else {
							conditionSql.append("or card_num=? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and card_num<>? ");
						} else {
							conditionSql.append("or card_num<>? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and card_num like concat('%',?) ");
						} else {
							conditionSql.append("or card_num like concat('%',?) ");
						}

						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and card_num not like concat(?,'%') ");
						} else {
							conditionSql.append("or card_num not like concat(?,'%') ");
						}

						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "sex")) {
					if (isAdd == 0) {
						conditionSql.append("and sex=? ");
					} else {
						conditionSql.append("or sex=? ");
					}

					paramList.add(inputStr);
				}
				if (StringUtils.equals(field, "birthDate")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and birth_date like concat('%',?,'%') ");
						} else {
							conditionSql.append("or birth_date like concat('%',?,'%') ");
						}

						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and birth_date not like concat('%',?,'%') ");
						} else {
							conditionSql.append("or birth_date not like concat('%',?,'%') ");
						}

						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and birth_date=? ");
						} else {
							conditionSql.append("or birth_date=? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and birth_date<>? ");
						} else {
							conditionSql.append("or birth_date<>? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and birth_date like concat('%',?) ");
						} else {
							conditionSql.append("or birth_date like concat('%',?) ");
						}

						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and birth_date not like concat(?,'%') ");
						} else {
							conditionSql.append("or birth_date not like concat(?,'%') ");
						}

						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "mobile")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and mobile like concat('%',?,'%') ");
						} else {
							conditionSql.append("or mobile like concat('%',?,'%') ");
						}

						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and mobile not like concat('%',?,'%') ");
						} else {
							conditionSql.append("or mobile not like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and mobile=? ");
						} else {
							conditionSql.append("or mobile=? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and mobile<>? ");
						} else {
							conditionSql.append("or mobile<>? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and mobile like concat('%',?) ");
						} else {
							conditionSql.append("or mobile like concat('%',?) ");
						}

						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and mobile not like concat(?,'%') ");
						} else {
							conditionSql.append("or mobile not like concat(?,'%') ");

						}
						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "phone")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and phone like concat('%',?,'%') ");
						} else {
							conditionSql.append("or phone like concat('%',?,'%') ");
						}

						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and phone not like concat('%',?,'%') ");
						} else {
							conditionSql.append("or phone not like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and phone=? ");
						} else {
							conditionSql.append("or phone=? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and phone<>? ");
						} else {
							conditionSql.append("or phone<>? ");
						}

						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and phone like concat('%',?) ");
						} else {
							conditionSql.append("or phone like concat('%',?) ");
						}

						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and phone not like concat(?,'%') ");
						} else {
							conditionSql.append("or phone not like concat(?,'%') ");
						}

						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "hjType")) {
					if (isAdd == 0) {
						conditionSql.append("and hj_type=? ");
					} else {
						conditionSql.append("or hj_type=? ");
					}

					paramList.add(inputStr);
				}
				if (StringUtils.equals(field, "hjAddress")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and hj_address like concat('%',?,'%') ");
						} else {
							conditionSql.append("or hj_address like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and hj_address not like concat('%',?,'%') ");

						} else {
							conditionSql.append("or hj_address not like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and hj_address=? ");

						} else {
							conditionSql.append("or hj_address=? ");

						}
						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and hj_address<>? ");

						} else {
							conditionSql.append("or hj_address<>? ");

						}
						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and hj_address like concat('%',?) ");

						} else {
							conditionSql.append("or hj_address like concat('%',?) ");

						}
						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and hj_address not like concat(?,'%') ");

						} else {
							conditionSql.append("or hj_address not like concat(?,'%') ");

						}
						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "jzAddress")) {
					if (isContain == 0) {
						// 包含
						if (isAdd == 0) {
							conditionSql.append("and jz_address like concat('%',?,'%') ");

						} else {
							conditionSql.append("or jz_address like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 1) {
						// 不包含
						if (isAdd == 0) {
							conditionSql.append("and jz_address not like concat('%',?,'%') ");

						} else {
							conditionSql.append("or jz_address not like concat('%',?,'%') ");

						}
						paramList.add(inputStr);
					} else if (isContain == 2) {
						// 为
						if (isAdd == 0) {
							conditionSql.append("and jz_address=? ");

						} else {
							conditionSql.append("or jz_address=? ");

						}
						paramList.add(inputStr);
					} else if (isContain == 3) {
						// 不为
						if (isAdd == 0) {
							conditionSql.append("and jz_address<>? ");

						} else {
							conditionSql.append("or jz_address<>? ");

						}
						paramList.add(inputStr);
					} else if (isContain == 4) {
						// 开头为
						if (isAdd == 0) {
							conditionSql.append("and jz_address like concat('%',?) ");

						} else {
							conditionSql.append("or jz_address like concat('%',?) ");

						}
						paramList.add(inputStr);
					} else {
						// 结尾为
						if (isAdd == 0) {
							conditionSql.append("and jz_address not like concat(?,'%') ");

						} else {
							conditionSql.append("or jz_address not like concat(?,'%') ");

						}
						paramList.add(inputStr);
					}
				}
				if (StringUtils.equals(field, "educationDegree")) {
					if (isAdd == 0) {
						conditionSql.append("and education_degree=? ");

					} else {
						conditionSql.append("or education_degree=? ");

					}
					paramList.add(inputStr);
				}
				if (StringUtils.equals(field, "maritalStatus")) {
					if (isAdd == 0) {
						conditionSql.append("and marital_status=? ");

					} else {
						conditionSql.append("or marital_status=? ");

					}
					paramList.add(inputStr);
				}
			}
		}
		if (CollectionUtils.isNotEmpty(areaCodeList)) {
			conditionSql.append("and community_area_code in (");
			for (int i = 0; i < areaCodeList.size() - 1; i++) {
				conditionSql.append("?,");
				paramList.add(areaCodeList.get(i));
			}
			conditionSql.append("?)");
			paramList.add(areaCodeList.get(areaCodeList.size() - 1));
		}
		paramList1 = paramList;
		if (type == 0) {
			listSql.append(conditionSql).append(" order by created desc limit ?,?");
		} else {
			listSql.append(conditionSql).append(" order by created desc");
		}
		countSql.append(conditionSql);
		if (type == 0) {
			int count = this.jdbcTemplate.queryForObject(countSql.toString(), Integer.class, paramList1.toArray());
			page.setCurrent(pageNum);
			if (count / pageSize == 0) {
				page.setPages(count % pageSize);
			} else {
				page.setPages(count % pageSize + 1);
			}
			page.setSize(pageSize);
			page.setTotal(count);
			paramList.add((pageNum - 1) * pageSize);
			paramList.add(pageSize);
		}
		List<PeopleInfo> peopleList = this.jdbcTemplate.query(listSql.toString(), paramList.toArray(),
				new BeanPropertyRowMapper<>(PeopleInfo.class));
		if (CollectionUtils.isNotEmpty(peopleList)) {
			page.setRecords(peopleList);
		} else {
			page.setRecords(Lists.newArrayList());
		}
		return page;
	}

	@Override
	public AnalysisVO selectPeopleNumChange(String areaCode, String dateStr) {
		AnalysisVO vo = new AnalysisVO();
		// 社会救助人口柱形图数据
		MainComlexPillarDataVO mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> byPillarDataVOList = this.baseMapper.selectByPeopleNumChange(areaCode, dateStr);
		mainComlexPillarDataVO
				.setPillarDataVOList(byPillarDataVOList == null ? Collections.emptyList() : byPillarDataVOList);
		List<String> bypillarTitleList = Lists.newLinkedList();
		if (byPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : byPillarDataVOList) {
				bypillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO
				.setPillarTitleList(bypillarTitleList == null ? Collections.emptyList() : bypillarTitleList);
		vo.setMainByComlexPillarDataVO(mainComlexPillarDataVO);

		// 社会救助资金柱形图数据
		mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> byBillPillarDataVOList = this.baseMapper.selectByPeopleBillChange(areaCode, dateStr);
		mainComlexPillarDataVO
				.setPillarDataVOList(byBillPillarDataVOList == null ? Collections.emptyList() : byBillPillarDataVOList);
		List<String> byBillpillarTitleList = Lists.newLinkedList();
		if (byBillPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : byBillPillarDataVOList) {
				byBillpillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO
				.setPillarTitleList(byBillpillarTitleList == null ? Collections.emptyList() : byBillpillarTitleList);
		vo.setMainByBillComlexPillarDataVO(mainComlexPillarDataVO);

		// 居家养老人口柱形图数据
		mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> oldPillarDataVOList = this.baseMapper.selectOldPeopleNumChange(areaCode, dateStr);
		List<String> oldpillarTitleList = Lists.newLinkedList();
		if (oldPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : oldPillarDataVOList) {
				oldpillarTitleList.add(complexPillarDataVO.getTitle());
			}
		}
		mainComlexPillarDataVO
				.setPillarDataVOList(oldPillarDataVOList == null ? Collections.emptyList() : oldPillarDataVOList);
		mainComlexPillarDataVO.setPillarTitleList(oldpillarTitleList);
		vo.setMainOldComlexPillarDataVO(mainComlexPillarDataVO);

		// 居家养老资金柱形图数据
		mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> oldBillPillarDataVOList = this.baseMapper.selectOldPeopleBillChange(areaCode,
				dateStr);
		List<String> oldBillpillarTitleList = Lists.newLinkedList();
		if (oldBillPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : oldBillPillarDataVOList) {
				oldBillpillarTitleList.add(complexPillarDataVO.getTitle());
			}
		}
		mainComlexPillarDataVO.setPillarDataVOList(
				oldBillPillarDataVOList == null ? Collections.emptyList() : oldBillPillarDataVOList);
		mainComlexPillarDataVO.setPillarTitleList(oldBillpillarTitleList);
		vo.setMainOldBillComlexPillarDataVO(mainComlexPillarDataVO);

		// 残疾人人口柱形图数据
		mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> disabledPillarDataVOList = this.baseMapper.selectDisabledPeopleNumChange(areaCode,
				dateStr);
		mainComlexPillarDataVO.setPillarDataVOList(
				disabledPillarDataVOList == null ? Collections.emptyList() : disabledPillarDataVOList);
		List<String> disabledPillarTitleList = Lists.newLinkedList();
		if (disabledPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : disabledPillarDataVOList) {
				disabledPillarTitleList.add(complexPillarDataVO.getTitle());
			}
		}
		mainComlexPillarDataVO.setPillarTitleList(
				disabledPillarTitleList == null ? Collections.emptyList() : disabledPillarTitleList);
		vo.setMainDisabledComlexPillarDataVO(mainComlexPillarDataVO);

		// 残疾人资金柱形图数据
		mainComlexPillarDataVO = new MainComlexPillarDataVO();
		List<ComplexPillarDataVO> disabledBillPillarDataVOList = this.baseMapper
				.selectDisabledPeopleBillChange(areaCode, dateStr);
		mainComlexPillarDataVO.setPillarDataVOList(
				disabledBillPillarDataVOList == null ? Collections.emptyList() : disabledBillPillarDataVOList);
		List<String> disabledBillPillarTitleList = Lists.newLinkedList();
		if (disabledBillPillarDataVOList != null) {
			for (ComplexPillarDataVO complexPillarDataVO : disabledBillPillarDataVOList) {
				disabledBillPillarTitleList.add(complexPillarDataVO.getTitle());
			}
		}
		mainComlexPillarDataVO.setPillarTitleList(
				disabledBillPillarTitleList == null ? Collections.emptyList() : disabledBillPillarTitleList);
		vo.setMainDisabledBillComlexPillarDataVO(mainComlexPillarDataVO);

		return vo;
	}

	@Override
	public AnalysisByVO analysisBy(String areaCode, String dateStr) {
		// 年龄结构饼图
		AnalysisByVO vo = new AnalysisByVO();
		List<BieDataVO> bieDataVOList = this.baseMapper.selectByPeopleAgeNumChange(dateStr);
		vo.setBieDataVOList(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 困难种类饼图
		bieDataVOList = this.baseMapper.selectByPeopleTypeNumChange(dateStr);
		vo.setBieDataVOList1(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 区域分布柱形图
		MainComlexPillarDataVO1 mainComlexPillarDataVO = new MainComlexPillarDataVO1();
		List<ComplexPillarDataVO1> pillarDataVOList = this.baseMapper.selectByPeopleTypeNumPillerChange(areaCode,
				dateStr);
		mainComlexPillarDataVO
				.setPillarDataVOList(pillarDataVOList == null ? Collections.emptyList() : pillarDataVOList);
		List<String> pillarTitleList = Lists.newLinkedList();
		if (pillarDataVOList != null) {
			for (ComplexPillarDataVO1 complexPillarDataVO : pillarDataVOList) {
				pillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO.setPillarTitleList(pillarTitleList == null ? Collections.emptyList() : pillarTitleList);
		vo.setMainComlexPillarDataVO1(mainComlexPillarDataVO);

		// 查询折线图信息
		MainLineDataVO mainLineDataVO = new MainLineDataVO();
		List<LineDataVO> lineDataVOList = Lists.newLinkedList();
		List<PeoleAreaVO> peoleAreaVOList = this.baseMapper.selectByPeopleSupplyStartTimeNumChange(dateStr);
		Map<String, List<PeoleAreaVO>> groupBy = peoleAreaVOList.stream()
				.collect(Collectors.groupingBy(PeoleAreaVO::getAreaCode));
		if (groupBy != null) {
			groupBy.forEach((k, v) -> {
				LineDataVO lineDataVO = new LineDataVO();
				lineDataVO.setName(k);
				lineDataVO.setType("line");
				lineDataVO.setStack("人口");
				List<Long> data = v.stream().map((peoleAreaVO) -> peoleAreaVO.getNum()).collect(Collectors.toList());
				lineDataVO.setData(data);
				lineDataVOList.add(lineDataVO);
			});
		}
		mainLineDataVO.setLineDataVOList(lineDataVOList == null ? Collections.emptyList() : lineDataVOList);
		List<String> zxTitleList = new LinkedList<String>() {
			{
				add("一月");
				add("二月");
				add("三月");
				add("四月");
				add("五月");
				add("六月");
				add("七月");
				add("八月");
				add("九月");
				add("十月");
				add("十一月");
				add("十二月");
			}
		};
		mainLineDataVO.setLineTitleList(zxTitleList);
		vo.setMainLineDataVO(mainLineDataVO);

		// 困难家庭办理时间(累计)
		MainComlexPillarDataVO2 mainComlexPillarDataVO2 = new MainComlexPillarDataVO2();
		List<ComplexPillarDataVO2> pillarDataVOList1 = this.baseMapper
				.selectByPeopleAllStartSupplyNumPillerChange(dateStr);
		mainComlexPillarDataVO2
				.setPillarDataVOList(pillarDataVOList1 == null ? Collections.emptyList() : pillarDataVOList1);
		List<String> pillarTitleList1 = Lists.newLinkedList();
		if (pillarDataVOList != null) {
			for (ComplexPillarDataVO2 complexPillarDataVO : pillarDataVOList1) {
				pillarTitleList1.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO2
				.setPillarTitleList(pillarTitleList1 == null ? Collections.emptyList() : pillarTitleList1);
		vo.setMainComlexPillarDataVO2(mainComlexPillarDataVO2);

		return vo;
	}

	@Override
	public AnalysisOldVO analysisOld(String areaCode, String dateStr) {
		// 年龄结构饼图
		AnalysisOldVO vo = new AnalysisOldVO();
		List<BieDataVO> bieDataVOList = this.baseMapper.selectOldPeopleAgeNumChange(dateStr);
		vo.setBieDataVOList(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 区域分布柱形图
		MainComlexPillarDataVO3 mainComlexPillarDataVO = new MainComlexPillarDataVO3();
		List<ComplexPillarDataVO3> pillarDataVOList = this.baseMapper.selectByPeopleOldNumPillerChange(areaCode,
				dateStr);
		mainComlexPillarDataVO
				.setPillarDataVOList(pillarDataVOList == null ? Collections.emptyList() : pillarDataVOList);
		List<String> pillarTitleList = Lists.newLinkedList();
		if (pillarDataVOList != null) {
			for (ComplexPillarDataVO3 complexPillarDataVO : pillarDataVOList) {
				pillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO.setPillarTitleList(pillarTitleList == null ? Collections.emptyList() : pillarTitleList);
		vo.setMainComlexPillarDataVO(mainComlexPillarDataVO);

		// abc
		bieDataVOList = this.baseMapper.selectOldPeopleABCNumChange(dateStr);
		vo.setBieDataVOList1(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// abc柱形图
		mainComlexPillarDataVO = new MainComlexPillarDataVO3();
		pillarDataVOList = this.baseMapper.selectByPeopleOldABCNumPillerChange(areaCode, dateStr);
		mainComlexPillarDataVO
				.setPillarDataVOList(pillarDataVOList == null ? Collections.emptyList() : pillarDataVOList);
		pillarTitleList = Lists.newLinkedList();
		if (pillarDataVOList != null) {
			for (ComplexPillarDataVO3 complexPillarDataVO : pillarDataVOList) {
				pillarTitleList.add(complexPillarDataVO.getTitle());
			}

		}
		mainComlexPillarDataVO.setPillarTitleList(pillarTitleList == null ? Collections.emptyList() : pillarTitleList);
		vo.setMainComlexPillarDataVO1(mainComlexPillarDataVO);
		return vo;
	}

	@Override
	public AnalysisDisabledVO analysisDisabled(String areaCode, String dateStr) {
		// 年龄结构饼图
		AnalysisDisabledVO vo = new AnalysisDisabledVO();
		List<BieDataVO> bieDataVOList = this.baseMapper.selectDisabledPeopleAgeNumChange(dateStr);
		vo.setBieDataVOList(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		bieDataVOList = this.baseMapper.selectDisabledPeopleTypeNumChange(dateStr);
		vo.setBieDataVOList1(bieDataVOList == null ? Collections.emptyList() : bieDataVOList);

		// 查询折线图信息
		MainLineDataVO mainLineDataVO = new MainLineDataVO();
		List<LineDataVO> lineDataVOList = Lists.newLinkedList();
		List<PeoleAreaVO> peoleAreaVOList = this.baseMapper.selectByPeopleSupplyStartTimeNumChange(dateStr);
		Collections.sort(peoleAreaVOList, Comparator.comparing(PeoleAreaVO::getSortNum));
		List<String> zxTitleList = new LinkedList<String>();
		Map<Integer, List<PeoleAreaVO>> groupBy = peoleAreaVOList.stream()
				.collect(Collectors.groupingBy(PeoleAreaVO::getType1));
		if (groupBy != null) {
			groupBy.forEach((k, v) -> {
				LineDataVO lineDataVO = new LineDataVO();
				if (k == 1) {
					lineDataVO.setName("视力");
				} else if (k == 2) {
					lineDataVO.setName("听力");
				} else if (k == 3) {
					lineDataVO.setName("言语");
				} else if (k == 4) {
					lineDataVO.setName("肢体");
				} else if (k == 5) {
					lineDataVO.setName("智力");
				} else if (k == 6) {
					lineDataVO.setName("精神");
				} else if (k == 7) {
					lineDataVO.setName("多重");
				}
				lineDataVO.setType("line");
				lineDataVO.setStack("人口");
				List<Long> data = v.stream().map((peoleAreaVO) -> peoleAreaVO.getNum()).collect(Collectors.toList());
				lineDataVO.setData(data);
				lineDataVOList.add(lineDataVO);
				List<PeoleAreaVO> peopleAreaVOList = v;
				if (zxTitleList.size() == 0) {
					if (peopleAreaVOList != null) {
						for (PeoleAreaVO peopleAreaVO : peopleAreaVOList) {
							zxTitleList.add(peopleAreaVO.getAreaCode());
						}
					}
				}
			});
		}
		mainLineDataVO.setLineDataVOList(lineDataVOList == null ? Collections.emptyList() : lineDataVOList);

		mainLineDataVO.setLineTitleList(zxTitleList);
		vo.setMainLineDataVO(mainLineDataVO);

		return vo;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值