package com.dy.pipIrrIrrigate.irrigateGroup; 
 | 
  
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pipIrrGlobal.daoIr.IrGroupClientMapper; 
 | 
import com.dy.pipIrrGlobal.daoIr.IrGroupIntakeMapper; 
 | 
import com.dy.pipIrrGlobal.daoIr.IrGroupUnitMapper; 
 | 
import com.dy.pipIrrGlobal.daoIr.IrIrrigateGroupMapper; 
 | 
import com.dy.pipIrrGlobal.pojoIr.IrGroupClient; 
 | 
import com.dy.pipIrrGlobal.pojoIr.IrGroupIntake; 
 | 
import com.dy.pipIrrGlobal.pojoIr.IrGroupUnit; 
 | 
import com.dy.pipIrrGlobal.pojoIr.IrIrrigateGroup; 
 | 
import com.dy.pipIrrGlobal.voIr.VoGroup; 
 | 
import com.dy.pipIrrGlobal.voIr.VoGroupDetail; 
 | 
import com.dy.pipIrrGlobal.voIr.VoGroupOne; 
 | 
import com.dy.pipIrrGlobal.voIr.VoGroupSimple; 
 | 
import com.dy.pipIrrIrrigate.irrigateGroup.dto.IrrigateGroup; 
 | 
import com.dy.pipIrrIrrigate.irrigateGroup.qo.QoGroup; 
 | 
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.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * @author :WuZeYu 
 | 
 * @Date :2024/5/21  15:57 
 | 
 * @LastEditTime :2024/5/21  15:57 
 | 
 * @Description 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class IrrigateGroupSv { 
 | 
    @Autowired 
 | 
    private IrIrrigateGroupMapper irIrrigateGroupMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IrGroupUnitMapper irGroupUnitMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IrGroupClientMapper irGroupClientMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IrGroupIntakeMapper irGroupIntakeMapper; 
 | 
  
 | 
    /** 
 | 
     * 创建轮灌组 
 | 
     * 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Integer addIrrigateGroup(IrIrrigateGroup po) { 
 | 
        po.setOperateTime(new Date()); 
 | 
        po.setDeleted((byte) 0); 
 | 
        int rows = irIrrigateGroupMapper.insertSelective(po); 
 | 
        if (rows == 0) { 
 | 
            return 0; 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除轮灌组 
 | 
     * 
 | 
     * @param id 
 | 
     */ 
 | 
    public Integer deleteIrrigateGroup(Long id) { 
 | 
        int rows = irIrrigateGroupMapper.deleteLogicById(id); 
 | 
        int rows1 = irGroupUnitMapper.deleteByGroupId(id); 
 | 
        if (rows == 0) { 
 | 
            return 0; 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改轮灌组 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Integer updateIrrigateGroup(IrIrrigateGroup po){ 
 | 
        po.setOperateTime(new Date()); 
 | 
        int rows = irIrrigateGroupMapper.updateByPrimaryKeySelective(po); 
 | 
        if (rows == 0){ 
 | 
            return 0; 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取一个轮灌组 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public VoGroupOne selectById(Long id){ 
 | 
        VoGroupOne unit = irIrrigateGroupMapper.selectById(id); 
 | 
        return unit; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 分页查询轮灌组 
 | 
     * @param queryVo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoGroup>> getIrrigateGroups(QueryVo queryVo){ 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); 
 | 
        Long itemTotal = irIrrigateGroupMapper.getRecordCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoGroup>> rsVo = new QueryResultVo<>(); 
 | 
        rsVo.pageSize = queryVo.pageSize; 
 | 
        rsVo.pageCurr = queryVo.pageCurr; 
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = irIrrigateGroupMapper.getIrrigateGroups(params); 
 | 
        return rsVo; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 轮灌组添加灌溉单元 
 | 
     * 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Integer addGroupUnit(IrGroupUnit po) { 
 | 
        po.setOperateDt(new Date()); 
 | 
        int rows = irGroupUnitMapper.insertSelective(po); 
 | 
        if (rows == 0) { 
 | 
            return 0; 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 轮灌组移除灌溉单元 
 | 
     * 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Integer deleteGroupUnit(IrGroupUnit po) { 
 | 
        int rows = irGroupUnitMapper.deleteByUnitIdGroupId(po); 
 | 
        if (rows == 0) { 
 | 
            return 0; 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查一个轮灌组绑定的灌溉单元id 
 | 
     * @param groupId 
 | 
     * @return 
 | 
     */ 
 | 
    public List<Long> getGroupBindUnits(Long groupId) { 
 | 
        List<Long> groupBindUnits = irGroupUnitMapper.getGroupBindUnits(groupId); 
 | 
        return groupBindUnits; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     *     //查未绑定轮灌组的灌溉单元id 
 | 
     * @return 
 | 
     */ 
 | 
    public List<Long> getNotBindUnits() { 
 | 
        List<Long> notBindUnits = irGroupUnitMapper.getNotBindUnits(); 
 | 
        return notBindUnits; 
 | 
    } 
 | 
  
 | 
    //轮灌组关联农户 
 | 
    public Long addGroupClient(IrGroupClient po) { 
 | 
        irGroupClientMapper.insert(po); 
 | 
        return po.getId(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除轮灌组与农户管理 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    public Integer deleteGroupClient (Long id) { 
 | 
        return irGroupClientMapper.deleteByPrimaryKey(id); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 创建轮灌组 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Map addIrrigateGroup(IrrigateGroup po) { 
 | 
        IrIrrigateGroup irrigateGroup = new IrIrrigateGroup(); 
 | 
        irrigateGroup.setGroupCode(po.getGroupCode()); 
 | 
        irrigateGroup.setDefaultDuration(po.getDefaultDuration()); 
 | 
        irrigateGroup.setOperator(po.getOperator()); 
 | 
        irrigateGroup.setOperateTime(new Date()); 
 | 
        irrigateGroup.setDeleted((byte) 0); 
 | 
        irIrrigateGroupMapper.insertSelective(irrigateGroup); 
 | 
        Long groupId = irrigateGroup.getId(); 
 | 
        if(groupId == null) { 
 | 
            Map map = new HashMap<>(); 
 | 
            map.put("success", false); 
 | 
            map.put("msg", "创建轮灌组失败"); 
 | 
            map.put("content", null); 
 | 
            return map; 
 | 
        } 
 | 
  
 | 
        String[] intakeArr = po.getIntakes().split(","); 
 | 
        Integer sort = 1; 
 | 
        for(String intekeId : intakeArr) { 
 | 
            String trimmed = intekeId.trim(); 
 | 
            if(trimmed.isEmpty()) { 
 | 
                continue; 
 | 
            } 
 | 
            try { 
 | 
                Long intakeIdLong = Long.parseLong(trimmed); 
 | 
                IrGroupIntake irGroupIntake = new IrGroupIntake(); 
 | 
                irGroupIntake.setGroupId(groupId); 
 | 
                irGroupIntake.setIntakeId(intakeIdLong); 
 | 
                irGroupIntakeMapper.insert(irGroupIntake); 
 | 
            } catch (NumberFormatException  e) { 
 | 
                Map map = new HashMap<>(); 
 | 
                map.put("success", false); 
 | 
                map.put("msg", "取水口ID格式错误"); 
 | 
                map.put("content", null); 
 | 
                return map; 
 | 
            } 
 | 
        } 
 | 
        Map map = new HashMap<>(); 
 | 
        map.put("success", true); 
 | 
        map.put("msg", "添加轮灌组成功"); 
 | 
        map.put("content", null); 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据组ID删除取水口关联 
 | 
     * @param groupId 
 | 
     * @return 
 | 
     */ 
 | 
    public Map deleteGroup(Long groupId) { 
 | 
        try { 
 | 
            irGroupIntakeMapper.deleteByGroupId(groupId); 
 | 
            irIrrigateGroupMapper.deleteByPrimaryKey(groupId); 
 | 
  
 | 
            Map map = new HashMap<>(); 
 | 
            map.put("success", true); 
 | 
            map.put("msg", "灌溉项目删除成功"); 
 | 
            map.put("content", null); 
 | 
            return map; 
 | 
        } catch (Exception e) { 
 | 
            Map map = new HashMap<>(); 
 | 
            map.put("success", false); 
 | 
            map.put("msg", "轮灌组删除失败"); 
 | 
            map.put("content", null); 
 | 
            return map; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改轮灌组 
 | 
     * @param po 
 | 
     * @return 
 | 
     */ 
 | 
    public Map updateIrrigateGroup(IrrigateGroup po) { 
 | 
        // 修改轮灌组 
 | 
        IrIrrigateGroup irrigateGroup = new IrIrrigateGroup(); 
 | 
        irrigateGroup.setId(po.getGroupId()); 
 | 
        irrigateGroup.setGroupCode(po.getGroupCode()); 
 | 
        irrigateGroup.setDefaultDuration(po.getDefaultDuration()); 
 | 
        irrigateGroup.setOperator(po.getOperator()); 
 | 
        irrigateGroup.setOperateTime(new Date()); 
 | 
        irrigateGroup.setDeleted((byte) 0); 
 | 
        irIrrigateGroupMapper.updateByPrimaryKeySelective(irrigateGroup); 
 | 
  
 | 
        // 删除轮灌组与取水口关联 
 | 
        Long groupId = po.getGroupId(); 
 | 
        irGroupIntakeMapper.deleteByGroupId(groupId); 
 | 
  
 | 
        // 添加轮灌组与取水口关联 
 | 
        String[] intakeArr = po.getIntakes().split(","); 
 | 
        Integer sort = 1; 
 | 
        for(String intekeId : intakeArr) { 
 | 
            String trimmed = intekeId.trim(); 
 | 
            if(trimmed.isEmpty()) { 
 | 
                continue; 
 | 
            } 
 | 
            try { 
 | 
                Long intakeIdLong = Long.parseLong(trimmed); 
 | 
                IrGroupIntake irGroupIntake = new IrGroupIntake(); 
 | 
                irGroupIntake.setGroupId(groupId); 
 | 
                irGroupIntake.setIntakeId(intakeIdLong); 
 | 
                irGroupIntakeMapper.insert(irGroupIntake); 
 | 
            } catch (NumberFormatException  e) { 
 | 
                Map map = new HashMap<>(); 
 | 
                map.put("success", false); 
 | 
                map.put("msg", "取水口ID格式错误"); 
 | 
                map.put("content", null); 
 | 
                return map; 
 | 
            } 
 | 
  
 | 
        } 
 | 
        Map map = new HashMap<>(); 
 | 
        map.put("success", true); 
 | 
        map.put("msg", "修改轮灌组成功"); 
 | 
        map.put("content", null); 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询轮灌组列表 
 | 
     * @param queryVo 
 | 
     * @return 
 | 
     */ 
 | 
    public QueryResultVo<List<VoGroupSimple>> getSimpleGroups(QoGroup queryVo) { 
 | 
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); 
 | 
        Long itemTotal = irIrrigateGroupMapper.getSimpleGroupCount(params); 
 | 
  
 | 
        QueryResultVo<List<VoGroupSimple>> rsVo = new QueryResultVo<>(); 
 | 
        rsVo.pageSize = queryVo.pageSize; 
 | 
        rsVo.pageCurr = queryVo.pageCurr; 
 | 
        rsVo.calculateAndSet(itemTotal, params); 
 | 
        rsVo.obj = irIrrigateGroupMapper.getSimpleGroups(params); 
 | 
        return rsVo; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询全部轮灌组 
 | 
     * @return 
 | 
     */ 
 | 
    public List<VoGroupSimple> getAllGroups() { 
 | 
        //Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); 
 | 
        //Long itemTotal = irIrrigateGroupMapper.getSimpleGroupCount(params); 
 | 
  
 | 
        //QueryResultVo<List<VoGroupSimple>> rsVo = new QueryResultVo<>(); 
 | 
        //rsVo.pageSize = queryVo.pageSize; 
 | 
        //rsVo.pageCurr = queryVo.pageCurr; 
 | 
        //rsVo.calculateAndSet(itemTotal, params); 
 | 
        //rsVo.obj = irIrrigateGroupMapper.getSimpleGroups(null); 
 | 
        //return rsVo; 
 | 
  
 | 
        return irIrrigateGroupMapper.getSimpleGroups(null); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取轮灌组详情 
 | 
     * @param groupId 
 | 
     * @return 
 | 
     */ 
 | 
    public Map getGroupDetail(Long groupId) { 
 | 
        try { 
 | 
            VoGroupDetail voGroupDetail = irIrrigateGroupMapper.getGroupDetail(groupId); 
 | 
            Map map = new HashMap<>(); 
 | 
            map.put("success", true); 
 | 
            map.put("msg", "获取轮灌组详情成功"); 
 | 
            map.put("content", voGroupDetail); 
 | 
            return map; 
 | 
        } catch (Exception e) { 
 | 
            Map map = new HashMap<>(); 
 | 
            map.put("success", false); 
 | 
            map.put("msg", "获取轮灌组详情失败"); 
 | 
            map.put("content", null); 
 | 
            return map; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |