|  |  | 
 |  |  |  | 
 |  |  | import com.dy.common.webUtil.QueryResultVo; | 
 |  |  | import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoSe.SeClientMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoSe.SeOpenIdMapper; | 
 |  |  | import com.dy.pipIrrGlobal.pojoSe.SeClient; | 
 |  |  | import com.dy.pipIrrGlobal.pojoSe.SeOpenId; | 
 |  |  | import com.dy.pipIrrGlobal.voSe.VoClient; | 
 |  |  | import com.dy.pipIrrGlobal.voSe.VoOperate; | 
 |  |  | import com.dy.pipIrrGlobal.voSe.VoStatistics; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.dubbo.common.utils.PojoUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | import java.util.HashMap; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.Optional; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @author ZhuBaoMin | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private BaDistrictMapper baDistrictMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private BaSettingsMapper baSettingsMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SeOpenIdMapper seOpenIdMapper; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据指定条件获取农户数据 | 
 |  |  |      * @param queryVo | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public QueryResultVo<List<VoClient>> getClients(QueryVo queryVo){ | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ; | 
 |  |  |         Long itemTotal = seClientMapper.getRecordCount(params); | 
 |  |  |  | 
 |  |  |         Long itemTotal = (long)seClientMapper.getRecordCount(params).size(); | 
 |  |  |         QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ; | 
 |  |  |         Integer pageCurr = 0; | 
 |  |  |         Integer pageSize = 10000; | 
 |  |  |         rsVo.pageCurr = 1; | 
 |  |  |         rsVo.pageSize = 10000; | 
 |  |  |         if(queryVo.pageSize != null && queryVo.pageCurr != null) { | 
 |  |  |             rsVo.pageSize = queryVo.pageSize ; | 
 |  |  |             rsVo.pageCurr = queryVo.pageCurr; | 
 |  |  |             pageSize = queryVo.pageSize ; | 
 |  |  |             pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()); | 
 |  |  |         } | 
 |  |  |         params.put("pageCurr", pageCurr); | 
 |  |  |         params.put("pageSize", pageSize); | 
 |  |  |         rsVo.pageSize = queryVo.pageSize ; | 
 |  |  |         rsVo.pageCurr = queryVo.pageCurr ; | 
 |  |  |  | 
 |  |  |         rsVo.calculateAndSet(itemTotal, params); | 
 |  |  |         rsVo.obj = seClientMapper.getClients(params); | 
 |  |  |  | 
 |  |  |         return rsVo ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据指定条件获取交易记录 | 
 |  |  |      * @param vo | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public Map getOperates(QueryOperate vo){ | 
 |  |  |         // 补齐查询时间 | 
 |  |  |         String operateTimeStart = vo.operateTimeStart; | 
 |  |  |         String operateTimeStop = vo.operateTimeStop; | 
 |  |  |         if(operateTimeStart != null) { | 
 |  |  |             operateTimeStart = operateTimeStart + " 00:00:00"; | 
 |  |  |             vo.setOperateTimeStart(operateTimeStart); | 
 |  |  |         } | 
 |  |  |         if(operateTimeStop != null) { | 
 |  |  |             operateTimeStop = operateTimeStop + " 23:59:59"; | 
 |  |  |             vo.setOperateTimeStop(operateTimeStop); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 生成查询参数 | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ; | 
 |  |  |  | 
 |  |  |         // 获取汇总的购水金额、购卡金额 | 
 |  |  |         Float money = 0f; | 
 |  |  |         Float cardCost = 0f; | 
 |  |  |         Map map_sum = Optional.ofNullable(seClientMapper.getSums(params)).orElse(new HashMap()); | 
 |  |  |         if(map_sum.size() > 0) { | 
 |  |  |             money = Float.parseFloat(map_sum.get("money").toString()); | 
 |  |  |             cardCost = Float.parseFloat(map_sum.get("cardCost").toString()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 获取符合条件的记录数 | 
 |  |  |         Long itemTotal = seClientMapper.getOperateRecordCount(params); | 
 |  |  |  | 
 |  |  |         Integer pageSize = vo.getPageSize(); | 
 |  |  |         // 计算总页数 | 
 |  |  |         Integer pageTotal ; | 
 |  |  |         pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize); | 
 |  |  |  | 
 |  |  |         // 根据当前页码及每页数量计算偏移量 | 
 |  |  |         Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()); | 
 |  |  |         params.put("pageCurr", pageCurr); | 
 |  |  |  | 
 |  |  |         List<VoOperate> lit = seClientMapper.getOperates(params); | 
 |  |  |         Map map_record = new HashMap(); | 
 |  |  |         map_record.put("itemTotal", itemTotal); | 
 |  |  |         map_record.put("pageCurr", vo.pageCurr); | 
 |  |  |         map_record.put("pageSize", pageSize); | 
 |  |  |         map_record.put("pageTotal", pageTotal); | 
 |  |  |         map_record.put("list", lit); | 
 |  |  |  | 
 |  |  |         Map map_result = new HashMap(); | 
 |  |  |         map_result.put("money", money); | 
 |  |  |         map_result.put("cardCost", cardCost); | 
 |  |  |         map_result.put("records", map_record); | 
 |  |  |  | 
 |  |  |         return map_result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据指定条件获取统计记录 | 
 |  |  |      * @param vo 交易汇总查询条件 | 
 |  |  |      * @return 交易汇总记录 | 
 |  |  |      */ | 
 |  |  |     public Map getStatistics(QueryStatistic vo){ | 
 |  |  |         // 补齐查询时间 | 
 |  |  |         String operateTimeStart = vo.operateTimeStart; | 
 |  |  |         String operateTimeStop = vo.operateTimeStop; | 
 |  |  |         if(operateTimeStart != null) { | 
 |  |  |             operateTimeStart = operateTimeStart + " 00:00:00"; | 
 |  |  |             vo.setOperateTimeStart(operateTimeStart); | 
 |  |  |         } | 
 |  |  |         if(operateTimeStop != null) { | 
 |  |  |             operateTimeStop = operateTimeStop + " 23:59:59"; | 
 |  |  |             vo.setOperateTimeStop(operateTimeStop); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 生成查询参数 | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ; | 
 |  |  |  | 
 |  |  |         // 获取汇总的交易笔数、交易金额 | 
 |  |  |         Integer count = 0; | 
 |  |  |         Float money = 0f; | 
 |  |  |         Map map_sum = Optional.ofNullable(seClientMapper.getStatisticSums(params)).orElse(new HashMap()); | 
 |  |  |         if(map_sum.size() > 0) { | 
 |  |  |             count = Integer.parseInt(map_sum.get("count").toString()); | 
 |  |  |             money = Float.parseFloat(map_sum.get("money").toString()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 获取符合条件的记录数 | 
 |  |  |         Long itemTotal = seClientMapper.getStatisticRecordCount(params); | 
 |  |  |  | 
 |  |  |         Integer pageSize = vo.getPageSize(); | 
 |  |  |         // 计算总页数 | 
 |  |  |         Integer pageTotal ; | 
 |  |  |         pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize); | 
 |  |  |  | 
 |  |  |         // 根据当前页码及每页数量计算偏移量 | 
 |  |  |         Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()); | 
 |  |  |         params.put("pageCurr", pageCurr); | 
 |  |  |  | 
 |  |  |         List<VoStatistics> lit = seClientMapper.getStatistics(params); | 
 |  |  |         Map map_record = new HashMap(); | 
 |  |  |         map_record.put("itemTotal", itemTotal); | 
 |  |  |         map_record.put("pageCurr", vo.pageCurr); | 
 |  |  |         map_record.put("pageSize", pageSize); | 
 |  |  |         map_record.put("pageTotal", pageTotal); | 
 |  |  |         map_record.put("list", lit); | 
 |  |  |  | 
 |  |  |         Map map_result = new HashMap(); | 
 |  |  |         map_result.put("count", count); | 
 |  |  |         map_result.put("money", money); | 
 |  |  |         map_result.put("records", map_record); | 
 |  |  |  | 
 |  |  |         return map_result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public Integer addClient(SeClient po) { | 
 |  |  |         return seClientMapper.insert(po); | 
 |  |  |         return seClientMapper.insertSelective(po); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     public List<Map<String, Object>> getWaterTypes() { | 
 |  |  |         return seClientMapper.getWaterTypes(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据配置项获取配置项值 | 
 |  |  |      * @param itemName | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public String getItemValue(String itemName) { | 
 |  |  |         return baSettingsMapper.getItemValue(itemName); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据电话号码获取农户ID | 
 |  |  |      * @param phoneNumber | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public Long getClientIdByPhone(String phoneNumber) { | 
 |  |  |         return seClientMapper.getClientIdByPhone(phoneNumber); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 添加微信用户账户记录 | 
 |  |  |      * @param po | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public Long addOpenId(SeOpenId po) { | 
 |  |  |         seOpenIdMapper.insert(po); | 
 |  |  |         //return po.getClientId(); | 
 |  |  |         return po.getId(); | 
 |  |  |     } | 
 |  |  | } |