/** * 报餐对比 * @param mealType * @param posoptime * @return */ @Override public List<ConsumptionMachine> getMealComparison(String mealType, Date posoptime) { //根据时间和餐别查询 报餐表 List<ConsumptionMeal>mealList=consumptionMachineMapper.getMealComparison(mealType,posoptime); log.info("mealList.size====="+mealList.size()); //根据时间和餐别查询 消费机信息表 ConsumptionMachine bean =new ConsumptionMachine(); bean.setTenantId(ConsumptionConstant.TENANT_ID); bean.setMealType(mealType); //bean.setPosoptime(posoptime); //将日期类型转换成字符 获取年月日 bean.setStartDate(posoptime); bean.setEndDate(CMDateTimeUtil.getNowDateTime(posoptime," 23:59:59")); log.info("getNowDateTime===="+CMDateTimeUtil.getNowDateTime(posoptime," 23:59:59")); List<ConsumptionMachine>consumptionList=consumptionMachineMapper.getConsumptionMachineList(bean); log.info("consumptionList========="+consumptionList); List<ConsumptionMeal> toList=new ArrayList<>(); if(Func.isNotEmpty(mealList)&&Func.isNotEmpty(consumptionList)){ for(ConsumptionMeal meal:mealList){ for(ConsumptionMachine consumption:consumptionList){ //如果工号相同 从报餐list中移除 if(meal.getMealUserCode().equals(consumption.getAccount())){ toList.add(meal); } } } } // 循环移除正常的人员信息 if(Func.isNotEmpty(toList)){ if(mealList.containsAll(toList)){ mealList.removeAll(toList); } } //删除后剩下的就是报餐没有吃饭的人 log.info("mealList============"+mealList.size()); List<ConsumptionMachine>returnList=new ArrayList<>(); if(Func.isNotEmpty(toList)){ for(ConsumptionMeal meal1:mealList){ ConsumptionMachine machine=new ConsumptionMachine(); machine.setDeptname(meal1.getApplyDeptName()); machine.setName(meal1.getMealUserName()); machine.setMealType(meal1.getMealTypeName()); machine.setPosoptime(meal1.getMealDate()); returnList.add(machine); } } return returnList; } /** * 刷卡对比 查看谁没有报餐刷卡了 * @param mealType * @param posoptime * @return */ @Override public List<ConsumptionMachine> getConsumptionComparison(String mealType, Date posoptime) { //根据时间和餐别查询 报餐表 List<ConsumptionMeal>mealList=consumptionMachineMapper.getMealComparison(mealType,posoptime); //根据时间和餐别查询 消费机信息表 ConsumptionMachine bean =new ConsumptionMachine(); bean.setTenantId(ConsumptionConstant.TENANT_ID); bean.setMealType(mealType); //bean.setPosoptime(posoptime); //将日期类型转换成字符 获取年月日 bean.setStartDate(posoptime); bean.setEndDate(CMDateTimeUtil.getNowDateTime(posoptime," 23:59:59")); List<ConsumptionMachine>consumptionList=consumptionMachineMapper.getConsumptionMachineList(bean); log.info("consumptionList========="+consumptionList); List<ConsumptionMachine>toMachineList=new ArrayList<>(); //报餐了 也刷卡了的人员列表 if(Func.isNotEmpty(mealList)&&Func.isNotEmpty(consumptionList)){ for(ConsumptionMachine machine:consumptionList){ for(ConsumptionMeal meal:mealList){ if(meal.getMealUserCode().equals(machine.getAccount())){ toMachineList.add(machine); } } } } //从消费机信息中移除报餐了同时也刷卡的人员,剩下的是刷卡了没有报餐 if(Func.isNotEmpty(toMachineList)){ if(consumptionList.containsAll(toMachineList)){ consumptionList.removeAll(toMachineList); } } return consumptionList; } /** * 报餐刷卡综合对比 * @param mealType * @param posoptime * @return */ @Override public List<ExcelConsumptionMachine> getSynthesizeComparison(String mealType, Date posoptime) { log.info("报餐刷卡综合对比mealType===="+mealType+"---posoptime===="+posoptime); //根据日期餐别查询报餐信息,如果没有差别查询一日三餐 List<ConsumptionMeal>mealList=consumptionMachineMapper.getMealComparison(mealType,posoptime); log.info("mealList======"+mealList); //将报餐信息转入消费实体类,放入新的消费list, List<ExcelConsumptionMachine>toList=new ArrayList<>(); if(Func.isNotEmpty(mealList)){ for(ConsumptionMeal meal:mealList){ ExcelConsumptionMachine machine=new ExcelConsumptionMachine(); machine.setMealDate(meal.getMealDate()); machine.setName(meal.getMealUserName()); machine.setMealType(meal.getMealTypeName()); machine.setAccount(meal.getMealUserCode()); toList.add(machine); } } //根据时间和餐别查询 消费机信息表 如果餐别为空查询一日三餐 ConsumptionMachine bean =new ConsumptionMachine(); bean.setTenantId(ConsumptionConstant.TENANT_ID); bean.setMealType(mealType); //bean.setPosoptime(posoptime); //将日期类型转换成字符 获取年月日 bean.setStartDate(posoptime); bean.setEndDate(CMDateTimeUtil.getNowDateTime(posoptime," 23:59:59")); List<ExcelConsumptionMachine>consumptionList=consumptionMachineMapper.getExcelConsumptionMachineList(bean); log.info("根据时间和餐别查询 消费机信息表consumptionList======="+consumptionList); if(Func.isNotEmpty(toList)&& Func.isNotEmpty(consumptionList)){ log.info("toList========"+toList); log.info("consumptionList===="+consumptionList); for(ExcelConsumptionMachine machine1:toList){ for(ExcelConsumptionMachine machine2:consumptionList){ //如果报餐人工号和消费工号相同,该用户报餐了也刷卡吃饭了 if(machine1.getAccount().equals(machine2.getAccount())&& machine1.getMealType().equals(machine2.getMealType()) ){ //正常 machine1.setStatus(ConsumptionConstant.STATUS1); machine1.setPosoptime(machine2.getPosoptime()); machine1.setDeptname(""); //将信息和消费列表信息同步,用于筛选对象是否存在 //就餐日期 machine2.setMealDate(machine1.getMealDate()); machine2.setStatus(ConsumptionConstant.STATUS1); machine2.setDeptname(""); } } } //筛选出消费了没有报餐的人将信息放入返回list for(ExcelConsumptionMachine machine3:consumptionList){ //如果list中不存在,用户消费了没有报餐 if(!toList.contains(machine3)){ //未报餐 machine3.setStatus(ConsumptionConstant.STATUS2); toList.add(machine3); } } //如果刷卡时间为空,用户报餐了未刷卡 for(ExcelConsumptionMachine machine4:toList){ if(Func.isEmpty(machine4.getPosoptime())){ //未刷卡 machine4.setStatus(ConsumptionConstant.STATUS3); } } //将部门名称放入list中 for(ExcelConsumptionMachine machine5:toList){ //根据工号获取部门部门id List<String>strList=consumptionMachineMapper.getDeptId(ConsumptionConstant.TENANT_ID,machine5.getAccount()); //根据部门id获取部门名称 if(Func.isNotEmpty(strList)){ String deptName=consumptionMachineMapper.getDeptName(ConsumptionConstant.TENANT_ID,Long.valueOf(strList.get(0).split(",")[0])); //部门名称 machine5.setDeptname(deptName); } } } return toList; }