package com.dy.pipIrrSell.client; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper; import com.dy.pipIrrGlobal.daoSe.SeClientMapper; import com.dy.pipIrrGlobal.pojoSe.SeClient; 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 * @date 2023/12/21 19:17 * @LastEditTime 2023/12/21 19:17 * @Description */ @Slf4j @Service public class ClientSv { @Autowired private SeClientMapper seClientMapper; @Autowired private BaDistrictMapper baDistrictMapper; /** * 根据指定条件获取农户数据 * @param queryVo * @return */ public QueryResultVo> getClients(QueryVo queryVo){ Map params = (Map) PojoUtils.generalize(queryVo) ; Long itemTotal = seClientMapper.getRecordCount(params); QueryResultVo> 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.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 params = (Map) 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 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 params = (Map) 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 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; } /** * 根据主键获取农户对象 * @param id 农户主键 * @return 农户对象 */ public VoClient getOneClient(Long id) { SeClient seClient = seClientMapper.selectByPrimaryKey(id); VoClient voClient = SeClientToVoClient.INSTANCT.po2vo(seClient); return voClient; } /** * 增开农户 * @param po * @return */ public Integer addClient(SeClient po) { return seClientMapper.insert(po); } /** * 根据6位区划串模糊查询农户编号 * @param district6 * @return */ public String getClientNumOfMax(String district6) { return seClientMapper.getClientNumOfMax(district6); } /** * 根据村编号获取5级区划信息 * @param villageId 村编号(主键) * @return 5级行政区划信息 */ public Map getDistrictsByVillageId(Long villageId) { return baDistrictMapper.getDistrictsByVillageId(villageId); } /** * 根据农户ID逻辑删除农户 */ public Integer deleteClientById(Long id) { return seClientMapper.deleteClientById(id); } /** * 修改农户对象 * @param po 农户对象 * @return 修改记录条数 */ public Integer updateByPrimaryKey(SeClient po) { return seClientMapper.updateByPrimaryKey(po); } /** * 根据主键获取村ID * @param id * @return */ public Long getVillageIdById(Long id) { return seClientMapper.getVillageIdById(id); } /** * 获取虚拟卡号最大值 * @return */ public Long getMa1xVirtualId() { return seClientMapper.getMa1xVirtualId(); } /** * 获取用水方式列表 * @return */ public List> getWaterTypes() { return seClientMapper.getWaterTypes(); } }