24 changed files with 907 additions and 0 deletions
			
			
		@ -0,0 +1,15 @@ | 
				
			|||
package com.epmet.dto.heart.result; | 
				
			|||
 | 
				
			|||
import lombok.Data; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 描述 | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 4:39 下午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@Data | 
				
			|||
public class DemandServiceCountResultDTO { | 
				
			|||
    private String serverId; | 
				
			|||
    private String serviceType; | 
				
			|||
} | 
				
			|||
@ -0,0 +1,38 @@ | 
				
			|||
package com.epmet.controller; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.tools.utils.Result; | 
				
			|||
import com.epmet.service.DemandService; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.web.bind.annotation.*; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 描述 | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 10:44 上午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@RestController | 
				
			|||
@RequestMapping("demand") | 
				
			|||
public class DemandController { | 
				
			|||
 | 
				
			|||
    @Autowired | 
				
			|||
    private DemandService demandStatsService; | 
				
			|||
     | 
				
			|||
    /** | 
				
			|||
     * wangxianzhang | 
				
			|||
     *  | 
				
			|||
     * 计算客户下志愿者服务相关数据 | 
				
			|||
     *  | 
				
			|||
     * @param customerId 客户ID,可以为空,为空则计算所有客户 | 
				
			|||
     * @return | 
				
			|||
     */ | 
				
			|||
    @PostMapping("volunteer/daily") | 
				
			|||
    public Result statsVolunteerDemandServicesDaily(@RequestParam(value = "customer-id", required = false) String customerId) { | 
				
			|||
 | 
				
			|||
        demandStatsService.statsVolunteerDemandServicesDaily(customerId); | 
				
			|||
         | 
				
			|||
        return new Result(); | 
				
			|||
    } | 
				
			|||
     | 
				
			|||
     | 
				
			|||
} | 
				
			|||
@ -0,0 +1,44 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.dao.heart; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.dao.BaseDao; | 
				
			|||
import com.epmet.dto.heart.result.DemandServiceCountResultDTO; | 
				
			|||
import com.epmet.entity.heart.IcUserDemandServiceEntity; | 
				
			|||
import org.apache.ibatis.annotations.Mapper; | 
				
			|||
import org.apache.ibatis.annotations.Param; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 居民需求服务记录表 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-11-19 | 
				
			|||
 */ | 
				
			|||
@Mapper | 
				
			|||
public interface IcUserDemandServiceDao extends BaseDao<IcUserDemandServiceEntity> { | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 需求服务次数查询 | 
				
			|||
     * @param customerId 客户id | 
				
			|||
     * @param serviceType 服务者类型 | 
				
			|||
     */ | 
				
			|||
    List<DemandServiceCountResultDTO> listDemandServiceCountPage(@Param("customerId") String customerId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,33 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.dao.heart; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.dao.BaseDao; | 
				
			|||
import com.epmet.entity.heart.VolunteerInfoEntity; | 
				
			|||
import org.apache.ibatis.annotations.Mapper; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 志愿者信息 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-12-08 | 
				
			|||
 */ | 
				
			|||
@Mapper | 
				
			|||
public interface VolunteerInfoDao extends BaseDao<VolunteerInfoEntity> { | 
				
			|||
	 | 
				
			|||
} | 
				
			|||
@ -0,0 +1,42 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.dao.stats; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.dao.BaseDao; | 
				
			|||
import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; | 
				
			|||
import org.apache.ibatis.annotations.Mapper; | 
				
			|||
import org.apache.ibatis.annotations.Param; | 
				
			|||
 | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 志愿者服务情况统计 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-12-08 | 
				
			|||
 */ | 
				
			|||
@Mapper | 
				
			|||
public interface FactVolunteerServiceDailyDao extends BaseDao<FactVolunteerServiceDailyEntity> { | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 删除指定客户,指定dateId的志愿者服务统计记录 | 
				
			|||
     * @param customerIds | 
				
			|||
     * @param dateDimId | 
				
			|||
     */ | 
				
			|||
    void clearVolunteerDemandServiceDailyStats(@Param("customerIds") List<String> customerIds, @Param("dateDimId") String dateDimId); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,75 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.entity.heart; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.annotation.TableName; | 
				
			|||
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | 
				
			|||
import lombok.Data; | 
				
			|||
import lombok.EqualsAndHashCode; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 居民需求服务记录表 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-11-19 | 
				
			|||
 */ | 
				
			|||
@Data | 
				
			|||
@EqualsAndHashCode(callSuper=false) | 
				
			|||
@TableName("ic_user_demand_service") | 
				
			|||
public class IcUserDemandServiceEntity extends BaseEpmetEntity { | 
				
			|||
 | 
				
			|||
	private static final long serialVersionUID = 1L; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 客户id | 
				
			|||
     */ | 
				
			|||
	private String customerId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 需求id | 
				
			|||
     */ | 
				
			|||
	private String demandRecId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; | 
				
			|||
     */ | 
				
			|||
	private String serviceType; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 志愿者:居民端爱心互助的志愿者userId; | 
				
			|||
     */ | 
				
			|||
	private String serverId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 实际服务开始时间 | 
				
			|||
     */ | 
				
			|||
	private Date serviceStartTime; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 实际服务结束时间 | 
				
			|||
     */ | 
				
			|||
	private Date serviceEndTime; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 完成情况 | 
				
			|||
     */ | 
				
			|||
	private String finishDesc; | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -0,0 +1,71 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.entity.heart; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.annotation.TableName; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | 
				
			|||
import lombok.Data; | 
				
			|||
import lombok.EqualsAndHashCode; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 志愿者信息 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-12-08 | 
				
			|||
 */ | 
				
			|||
@Data | 
				
			|||
@EqualsAndHashCode(callSuper=false) | 
				
			|||
@TableName("volunteer_info") | 
				
			|||
public class VolunteerInfoEntity extends BaseEpmetEntity { | 
				
			|||
 | 
				
			|||
	private static final long serialVersionUID = 1L; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 用户id | 
				
			|||
     */ | 
				
			|||
	private String userId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 客户id | 
				
			|||
     */ | 
				
			|||
	private String customerId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 志愿者自我介绍 | 
				
			|||
     */ | 
				
			|||
	private String volunteerIntroduce; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 志愿者签名 | 
				
			|||
     */ | 
				
			|||
	private String volunteerSignature; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 网格id | 
				
			|||
     */ | 
				
			|||
	private String gridId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 网格名称 | 
				
			|||
     */ | 
				
			|||
	private String gridName; | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -0,0 +1,86 @@ | 
				
			|||
/** | 
				
			|||
 * Copyright 2018 人人开源 https://www.renren.io
 | 
				
			|||
 * <p> | 
				
			|||
 * This program is free software: you can redistribute it and/or modify | 
				
			|||
 * it under the terms of the GNU General Public License as published by | 
				
			|||
 * the Free Software Foundation, either version 3 of the License, or | 
				
			|||
 * (at your option) any later version. | 
				
			|||
 * <p> | 
				
			|||
 * This program is distributed in the hope that it will be useful, | 
				
			|||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
				
			|||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
				
			|||
 * GNU General Public License for more details. | 
				
			|||
 * <p> | 
				
			|||
 * You should have received a copy of the GNU General Public License | 
				
			|||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||
 */ | 
				
			|||
 | 
				
			|||
package com.epmet.entity.stats; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.annotation.TableName; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; | 
				
			|||
import lombok.Data; | 
				
			|||
import lombok.EqualsAndHashCode; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 志愿者服务情况统计 | 
				
			|||
 * | 
				
			|||
 * @author generator generator@elink-cn.com | 
				
			|||
 * @since v1.0.0 2021-12-08 | 
				
			|||
 */ | 
				
			|||
@Data | 
				
			|||
@EqualsAndHashCode(callSuper=false) | 
				
			|||
@TableName("fact_volunteer_service_daily") | 
				
			|||
public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity { | 
				
			|||
 | 
				
			|||
	private static final long serialVersionUID = 1L; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 客户id | 
				
			|||
     */ | 
				
			|||
	private String customerId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * yyyyMMdd | 
				
			|||
     */ | 
				
			|||
	private String dateId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * yyyyMM | 
				
			|||
     */ | 
				
			|||
	private String monthId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 截止到当前dateId,当前客户下,共有多少个爱心互助的志愿者 | 
				
			|||
     */ | 
				
			|||
	private Integer volunteerTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 截止到当前dateId,当前客户下,XX个爱心互助志愿者中,党员有多少个 | 
				
			|||
     */ | 
				
			|||
	private Integer partyTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 截止到当前dateId,当前客户下,XX个爱心互助志愿者中,居民有多少个 | 
				
			|||
     */ | 
				
			|||
	private Integer resiTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 服务总次数 | 
				
			|||
     */ | 
				
			|||
	private Integer serviceTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 党员服务总次数 | 
				
			|||
     */ | 
				
			|||
	private Integer partyServiceTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 居民服务总次数 | 
				
			|||
     */ | 
				
			|||
	private Integer resiServiceTotal; | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -0,0 +1,20 @@ | 
				
			|||
package com.epmet.service; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 需求service | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 12:14 下午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
public interface DemandService { | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * wangxianzhang | 
				
			|||
     * | 
				
			|||
     * 按日统计 | 
				
			|||
     * | 
				
			|||
     * @param customerId 客户ID,可为空,为空计算所有 | 
				
			|||
     */ | 
				
			|||
    void statsVolunteerDemandServicesDaily(String customerId); | 
				
			|||
     | 
				
			|||
} | 
				
			|||
@ -0,0 +1,15 @@ | 
				
			|||
package com.epmet.service.heart; | 
				
			|||
 | 
				
			|||
import com.epmet.dto.heart.result.DemandServiceCountResultDTO; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
  *@Description 爱心互助,需求service | 
				
			|||
  *@Author      wangxianzhang | 
				
			|||
  *@Date        2021/12/8 | 
				
			|||
  */ | 
				
			|||
public interface HeartDemandService { | 
				
			|||
    List<DemandServiceCountResultDTO> listDemandServiceCountPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,15 @@ | 
				
			|||
package com.epmet.service.heart; | 
				
			|||
 | 
				
			|||
import com.epmet.entity.heart.VolunteerInfoEntity; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
  *@Description heart  志愿者service | 
				
			|||
  *@Author      wangxianzhang | 
				
			|||
  *@Date        2021/12/8 | 
				
			|||
  */ | 
				
			|||
public interface HeartVolunteerService { | 
				
			|||
    List<VolunteerInfoEntity> listVolunteersPage(String customerId, Date endCreateTime, Integer pageNum, Integer pageSize); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,40 @@ | 
				
			|||
package com.epmet.service.heart.impl; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
				
			|||
import com.epmet.commons.dynamic.datasource.annotation.DataSource; | 
				
			|||
import com.epmet.constant.DataSourceConstant; | 
				
			|||
import com.epmet.dao.heart.IcUserDemandServiceDao; | 
				
			|||
import com.epmet.dto.heart.result.DemandServiceCountResultDTO; | 
				
			|||
import com.epmet.service.heart.HeartDemandService; | 
				
			|||
import com.github.pagehelper.ISelect; | 
				
			|||
import com.github.pagehelper.Page; | 
				
			|||
import com.github.pagehelper.PageHelper; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.stereotype.Service; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 爱心互助,需求service | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 12:33 下午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@Service | 
				
			|||
@DataSource(DataSourceConstant.EPMET_HEART) | 
				
			|||
public class HeartDemandServiceImpl implements HeartDemandService { | 
				
			|||
     | 
				
			|||
    @Autowired | 
				
			|||
    private IcUserDemandServiceDao demandServiceDao; | 
				
			|||
     | 
				
			|||
    @Override | 
				
			|||
    public List<DemandServiceCountResultDTO> listDemandServiceCountPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) { | 
				
			|||
        return PageHelper.startPage(serviceCountPageNo, serviceCountPageSize).doSelectPage(new ISelect() { | 
				
			|||
            @Override | 
				
			|||
            public void doSelect() { | 
				
			|||
                demandServiceDao.listDemandServiceCountPage(customerId, endTime, "volunteer"); | 
				
			|||
            } | 
				
			|||
        }); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,40 @@ | 
				
			|||
package com.epmet.service.heart.impl; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
				
			|||
import com.epmet.commons.dynamic.datasource.annotation.DataSource; | 
				
			|||
import com.epmet.constant.DataSourceConstant; | 
				
			|||
import com.epmet.dao.heart.VolunteerInfoDao; | 
				
			|||
import com.epmet.entity.heart.VolunteerInfoEntity; | 
				
			|||
import com.epmet.service.heart.HeartVolunteerService; | 
				
			|||
import com.github.pagehelper.ISelect; | 
				
			|||
import com.github.pagehelper.Page; | 
				
			|||
import com.github.pagehelper.PageHelper; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.stereotype.Service; | 
				
			|||
 | 
				
			|||
import java.util.Date; | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 描述 | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 1:35 下午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@Service | 
				
			|||
@DataSource(DataSourceConstant.EPMET_HEART) | 
				
			|||
public class HeartVolunteerServiceImpl implements HeartVolunteerService { | 
				
			|||
     | 
				
			|||
    @Autowired | 
				
			|||
    private VolunteerInfoDao volunteerInfoDao; | 
				
			|||
     | 
				
			|||
    @Override | 
				
			|||
    public List<VolunteerInfoEntity> listVolunteersPage(String customerId, Date endCreateTime, Integer pageNum, Integer pageSize) { | 
				
			|||
        return PageHelper.startPage(pageNum, pageSize).doSelectPage(() -> { | 
				
			|||
            LambdaQueryWrapper<VolunteerInfoEntity> query = new LambdaQueryWrapper<>(); | 
				
			|||
            query.eq(VolunteerInfoEntity::getCustomerId, customerId); | 
				
			|||
            query.lt(VolunteerInfoEntity::getCreatedTime, endCreateTime); | 
				
			|||
            volunteerInfoDao.selectList(query); | 
				
			|||
        }); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,184 @@ | 
				
			|||
package com.epmet.service.impl; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; | 
				
			|||
import com.epmet.commons.tools.utils.DateUtils; | 
				
			|||
import com.epmet.dto.heart.result.DemandServiceCountResultDTO; | 
				
			|||
import com.epmet.entity.crm.CustomerEntity; | 
				
			|||
import com.epmet.entity.heart.VolunteerInfoEntity; | 
				
			|||
import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; | 
				
			|||
import com.epmet.service.DemandService; | 
				
			|||
import com.epmet.service.crm.CustomerService; | 
				
			|||
import com.epmet.service.heart.HeartDemandService; | 
				
			|||
import com.epmet.service.heart.HeartVolunteerService; | 
				
			|||
import com.epmet.service.stats.DemandStatsService; | 
				
			|||
import com.epmet.service.user.UserService; | 
				
			|||
import com.epmet.util.DimIdGenerator; | 
				
			|||
import org.apache.commons.lang3.StringUtils; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.stereotype.Service; | 
				
			|||
 | 
				
			|||
import java.util.*; | 
				
			|||
import java.util.stream.Collectors; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 需求service | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 12:14 下午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@Service | 
				
			|||
public class DemandServiceImpl implements DemandService { | 
				
			|||
 | 
				
			|||
    @Autowired | 
				
			|||
    private HeartDemandService heartDemandService; | 
				
			|||
 | 
				
			|||
    @Autowired | 
				
			|||
    private HeartVolunteerService heartVolunteerService; | 
				
			|||
 | 
				
			|||
    @Autowired | 
				
			|||
    private UserService userService; | 
				
			|||
     | 
				
			|||
    @Autowired | 
				
			|||
    private DemandStatsService demandStatsService; | 
				
			|||
     | 
				
			|||
    @Autowired | 
				
			|||
    private CustomerService customerService; | 
				
			|||
 | 
				
			|||
    @Override | 
				
			|||
    public void statsVolunteerDemandServicesDaily(String customerId) { | 
				
			|||
 | 
				
			|||
        Date now = new Date(); | 
				
			|||
        Date today = DateUtils.integrate(now, "yyyy-MM-dd"); | 
				
			|||
        Date yestoday = DateUtils.addDateDays(today, -1); | 
				
			|||
         | 
				
			|||
        if (StringUtils.isNotBlank(customerId)) { | 
				
			|||
            // 只计算单个客户
 | 
				
			|||
            clearOldDatas(Arrays.asList(customerId), yestoday); | 
				
			|||
            statsVolunteerDemandServicesDaily4Customer(customerId, today, yestoday); | 
				
			|||
        } else { | 
				
			|||
            // 查询所有客户ID
 | 
				
			|||
            List<String> customerIds = customerService.listValidCustomersByCreateTime(null, null).stream().map(c -> c.getId()).collect(Collectors.toList()); | 
				
			|||
            clearOldDatas(customerIds, yestoday); | 
				
			|||
            customerIds.stream().forEach(cId -> { | 
				
			|||
                statsVolunteerDemandServicesDaily4Customer(cId, today, yestoday); | 
				
			|||
            }); | 
				
			|||
        } | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 清理旧数据 | 
				
			|||
     * @param yestoday | 
				
			|||
     */ | 
				
			|||
    private void clearOldDatas(List<String> customerIds, Date yestoday) { | 
				
			|||
 | 
				
			|||
        String dateDimId = DimIdGenerator.getDateDimId(yestoday); | 
				
			|||
 | 
				
			|||
        demandStatsService.clearVolunteerDemandServiceDailyStats(customerIds, dateDimId); | 
				
			|||
 | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 统计单个客户的志愿者服务情况 | 
				
			|||
     * @param customerId 客户ID | 
				
			|||
     * @param endTime 统计截止时间(<endTime) | 
				
			|||
     */ | 
				
			|||
    private void statsVolunteerDemandServicesDaily4Customer(String customerId, Date endTime, Date belongTime) { | 
				
			|||
        // 1.志愿者分流为党员志愿者&普通居民志愿者
 | 
				
			|||
        Integer volunteerTotalCount = 0; | 
				
			|||
        // 党员志愿者数量
 | 
				
			|||
        Integer partymemberVolunteerCount = 0; | 
				
			|||
        // 居民志愿者数量
 | 
				
			|||
        Integer resiVolunteerCount = 0; | 
				
			|||
 | 
				
			|||
        List<String> partymemberVolunteerUserIds = new ArrayList<>(16); | 
				
			|||
 | 
				
			|||
        int pageNum = 1; | 
				
			|||
        int volunteerPageSize = 5; | 
				
			|||
 | 
				
			|||
        while (true) { | 
				
			|||
 | 
				
			|||
            int shardingStartIndex = 0; | 
				
			|||
            int shardingSize = 2; | 
				
			|||
 | 
				
			|||
            List<VolunteerInfoEntity> volunteersPage = heartVolunteerService.listVolunteersPage(customerId, endTime, pageNum, volunteerPageSize); | 
				
			|||
 | 
				
			|||
            // 如果查询结果为0,说明没有更多的志愿者了
 | 
				
			|||
            if (volunteersPage.size() == 0) { | 
				
			|||
                break; | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            volunteerTotalCount += volunteersPage.size(); | 
				
			|||
 | 
				
			|||
            // 分片去确定党员身份
 | 
				
			|||
            while (true) { | 
				
			|||
                int realShardingSize = Math.min(shardingSize, volunteersPage.size() - shardingStartIndex); | 
				
			|||
 | 
				
			|||
                if (realShardingSize == 0) { | 
				
			|||
                    break; | 
				
			|||
                } | 
				
			|||
 | 
				
			|||
                int shardingEndIndex = shardingStartIndex + realShardingSize; | 
				
			|||
                List<String> volunteerUserIds = volunteersPage.subList(shardingStartIndex, shardingEndIndex) | 
				
			|||
                        .stream() | 
				
			|||
                        .map((volunteerInfoEntity) -> volunteerInfoEntity.getUserId()) | 
				
			|||
                        .collect(Collectors.toList()); | 
				
			|||
 | 
				
			|||
                List<String> tempPartymemberUserIds = userService.filterUserIds(volunteerUserIds, EpmetRoleKeyConstant.PARTYMEMBER); | 
				
			|||
 | 
				
			|||
                partymemberVolunteerUserIds.addAll(tempPartymemberUserIds); | 
				
			|||
 | 
				
			|||
                shardingStartIndex = shardingEndIndex; | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            pageNum++; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        partymemberVolunteerCount += partymemberVolunteerUserIds.size(); | 
				
			|||
        resiVolunteerCount = volunteerTotalCount - partymemberVolunteerCount; | 
				
			|||
 | 
				
			|||
        //2. 查询志愿者服务次数
 | 
				
			|||
 | 
				
			|||
        // 总服务次数
 | 
				
			|||
        int totalDemandServiceCount = 0; | 
				
			|||
        // 党员服务次数
 | 
				
			|||
        int partymemberDemandServiceCount = 0; | 
				
			|||
        // 居民服务次数
 | 
				
			|||
        int resiDemandServiceCount = 0; | 
				
			|||
 | 
				
			|||
        int serviceCountPageNo = 0; | 
				
			|||
        int serviceCountPageSize = 1000; | 
				
			|||
        while (true) { | 
				
			|||
 | 
				
			|||
            List<DemandServiceCountResultDTO> damendServiceCounts = heartDemandService.listDemandServiceCountPage(customerId, endTime, serviceCountPageNo, serviceCountPageSize); | 
				
			|||
 | 
				
			|||
            for (DemandServiceCountResultDTO damendServiceCount : damendServiceCounts) { | 
				
			|||
                String serverId = damendServiceCount.getServerId(); | 
				
			|||
                if (partymemberVolunteerUserIds.contains(serverId)) { | 
				
			|||
                    partymemberDemandServiceCount++; | 
				
			|||
                } else { | 
				
			|||
                    resiDemandServiceCount++; | 
				
			|||
                } | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            totalDemandServiceCount += damendServiceCounts.size(); | 
				
			|||
 | 
				
			|||
            if (damendServiceCounts.size() <= serviceCountPageSize) { | 
				
			|||
                break; | 
				
			|||
            } | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        // 3.持久化
 | 
				
			|||
        FactVolunteerServiceDailyEntity insert = new FactVolunteerServiceDailyEntity(); | 
				
			|||
        insert.setDateId(DimIdGenerator.getDateDimId(belongTime)); | 
				
			|||
        insert.setCustomerId(customerId); | 
				
			|||
        insert.setMonthId(DimIdGenerator.getMonthDimId(belongTime)); | 
				
			|||
        insert.setPartyServiceTotal(partymemberDemandServiceCount); | 
				
			|||
        insert.setServiceTotal(totalDemandServiceCount); | 
				
			|||
        insert.setPartyTotal(partymemberVolunteerCount); | 
				
			|||
        insert.setResiServiceTotal(resiDemandServiceCount); | 
				
			|||
        insert.setResiTotal(resiVolunteerCount); | 
				
			|||
        insert.setVolunteerTotal(volunteerTotalCount); | 
				
			|||
 | 
				
			|||
        demandStatsService.addVolunteerServiceDaily(insert); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,18 @@ | 
				
			|||
package com.epmet.service.stats; | 
				
			|||
 | 
				
			|||
import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; | 
				
			|||
 | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
  *@Description 统计客户下的志愿者需求服务数据 | 
				
			|||
  *@Author      wangxianzhang | 
				
			|||
  *@Date        2021/12/8 | 
				
			|||
  */ | 
				
			|||
public interface DemandStatsService { | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    void addVolunteerServiceDaily(FactVolunteerServiceDailyEntity entity); | 
				
			|||
 | 
				
			|||
    void clearVolunteerDemandServiceDailyStats(List<String> customerIds, String dateDimId); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,36 @@ | 
				
			|||
package com.epmet.service.stats.impl; | 
				
			|||
 | 
				
			|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
				
			|||
import com.epmet.commons.dynamic.datasource.annotation.DataSource; | 
				
			|||
import com.epmet.constant.DataSourceConstant; | 
				
			|||
import com.epmet.dao.stats.FactVolunteerServiceDailyDao; | 
				
			|||
import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; | 
				
			|||
import com.epmet.service.stats.DemandStatsService; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.stereotype.Service; | 
				
			|||
 | 
				
			|||
import java.util.List; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Description 描述 | 
				
			|||
 * @Author wangxianzhang | 
				
			|||
 * @Date 2021/12/8 10:54 上午 | 
				
			|||
 * @Version 1.0 | 
				
			|||
 */ | 
				
			|||
@Service | 
				
			|||
@DataSource(DataSourceConstant.STATS) | 
				
			|||
public class DemandStatsServiceImpl implements DemandStatsService { | 
				
			|||
     | 
				
			|||
    @Autowired | 
				
			|||
    private FactVolunteerServiceDailyDao factVolunteerServiceDailyDao; | 
				
			|||
     | 
				
			|||
    @Override | 
				
			|||
    public void addVolunteerServiceDaily(FactVolunteerServiceDailyEntity entity) { | 
				
			|||
        factVolunteerServiceDailyDao.insert(entity); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    @Override | 
				
			|||
    public void clearVolunteerDemandServiceDailyStats(List<String> customerIds, String dateDimId) { | 
				
			|||
        factVolunteerServiceDailyDao.clearVolunteerDemandServiceDailyStats(customerIds, dateDimId); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,21 @@ | 
				
			|||
CREATE TABLE epmet_data_statistical.`fact_volunteer_service_daily` | 
				
			|||
( | 
				
			|||
    `ID`                  varchar(64) NOT NULL COMMENT '主键', | 
				
			|||
    `CUSTOMER_ID`         varchar(64) NOT NULL COMMENT '客户id', | 
				
			|||
    `DATE_ID`             varchar(8)  NOT NULL COMMENT 'yyyyMMdd', | 
				
			|||
    `MONTH_ID`            varchar(6)  NOT NULL COMMENT 'yyyyMM', | 
				
			|||
    `VOLUNTEER_TOTAL`     int(11) NOT NULL COMMENT '截止到当前dateId,当前客户下,共有多少个爱心互助的志愿者', | 
				
			|||
    `PARTY_TOTAL`         int(11) NOT NULL COMMENT '截止到当前dateId,当前客户下,XX个爱心互助志愿者中,党员有多少个', | 
				
			|||
    `RESI_TOTAL`          int(11) NOT NULL COMMENT '截止到当前dateId,当前客户下,XX个爱心互助志愿者中,居民有多少个', | 
				
			|||
    `SERVICE_TOTAL`       int(11) NOT NULL COMMENT '服务总次数', | 
				
			|||
    `PARTY_SERVICE_TOTAL` int(11) NOT NULL COMMENT '党员服务总次数', | 
				
			|||
    `RESI_SERVICE_TOTAL`  int(11) NOT NULL COMMENT '居民服务总次数', | 
				
			|||
    `DEL_FLAG`            int(11) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', | 
				
			|||
    `REVISION`            int(11) NOT NULL COMMENT '乐观锁', | 
				
			|||
    `CREATED_BY`          varchar(32) NOT NULL COMMENT '创建人', | 
				
			|||
    `CREATED_TIME`        datetime    NOT NULL COMMENT '创建时间', | 
				
			|||
    `UPDATED_BY`          varchar(32) NOT NULL COMMENT '更新人', | 
				
			|||
    `UPDATED_TIME`        datetime    NOT NULL COMMENT '更新时间', | 
				
			|||
    PRIMARY KEY (`ID`), | 
				
			|||
    UNIQUE KEY `uni_vsd` (`CUSTOMER_ID`,`DATE_ID`,`DEL_FLAG`) | 
				
			|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='志愿者服务情况统计' | 
				
			|||
@ -0,0 +1,33 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			|||
 | 
				
			|||
<mapper namespace="com.epmet.dao.heart.IcUserDemandServiceDao"> | 
				
			|||
 | 
				
			|||
    <resultMap type="com.epmet.entity.heart.IcUserDemandServiceEntity" id="icUserDemandServiceMap"> | 
				
			|||
        <result property="id" column="ID"/> | 
				
			|||
        <result property="customerId" column="CUSTOMER_ID"/> | 
				
			|||
        <result property="demandRecId" column="DEMAND_REC_ID"/> | 
				
			|||
        <result property="serviceType" column="SERVICE_TYPE"/> | 
				
			|||
        <result property="serverId" column="SERVER_ID"/> | 
				
			|||
        <result property="serviceStartTime" column="SERVICE_START_TIME"/> | 
				
			|||
        <result property="serviceEndTime" column="SERVICE_END_TIME"/> | 
				
			|||
        <result property="finishDesc" column="FINISH_DESC"/> | 
				
			|||
        <result property="delFlag" column="DEL_FLAG"/> | 
				
			|||
        <result property="revision" column="REVISION"/> | 
				
			|||
        <result property="createdBy" column="CREATED_BY"/> | 
				
			|||
        <result property="createdTime" column="CREATED_TIME"/> | 
				
			|||
        <result property="updatedBy" column="UPDATED_BY"/> | 
				
			|||
        <result property="updatedTime" column="UPDATED_TIME"/> | 
				
			|||
    </resultMap> | 
				
			|||
     | 
				
			|||
    <select id="listDemandServiceCountPage" resultType="com.epmet.dto.heart.result.DemandServiceCountResultDTO"> | 
				
			|||
        select service.SERVER_ID, SERVICE_TYPE | 
				
			|||
        from ic_user_demand_rec damend | 
				
			|||
                 inner join ic_user_demand_service service on (damend.ID = service.DEMAND_REC_ID and service.DEL_FLAG = 0) | 
				
			|||
        where damend.DEL_FLAG = 0 | 
				
			|||
          and damend.STATUS = 'finished' | 
				
			|||
          and damend.REPORT_TIME <![CDATA[<]]> #{endTime} | 
				
			|||
          and damend.CUSTOMER_ID = #{customerId} | 
				
			|||
          and service.SERVICE_TYPE = #{serviceType} | 
				
			|||
    </select> | 
				
			|||
</mapper> | 
				
			|||
@ -0,0 +1,23 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			|||
 | 
				
			|||
<mapper namespace="com.epmet.dao.VolunteerInfoDao"> | 
				
			|||
 | 
				
			|||
    <resultMap type="com.epmet.entity.heart.VolunteerInfoEntity" id="volunteerInfoMap"> | 
				
			|||
        <result property="id" column="ID"/> | 
				
			|||
        <result property="userId" column="USER_ID"/> | 
				
			|||
        <result property="customerId" column="CUSTOMER_ID"/> | 
				
			|||
        <result property="volunteerIntroduce" column="VOLUNTEER_INTRODUCE"/> | 
				
			|||
        <result property="volunteerSignature" column="VOLUNTEER_SIGNATURE"/> | 
				
			|||
        <result property="delFlag" column="DEL_FLAG"/> | 
				
			|||
        <result property="revision" column="REVISION"/> | 
				
			|||
        <result property="createdBy" column="CREATED_BY"/> | 
				
			|||
        <result property="createdTime" column="CREATED_TIME"/> | 
				
			|||
        <result property="updatedBy" column="UPDATED_BY"/> | 
				
			|||
        <result property="updatedTime" column="UPDATED_TIME"/> | 
				
			|||
        <result property="gridId" column="GRID_ID"/> | 
				
			|||
        <result property="gridName" column="GRID_NAME"/> | 
				
			|||
    </resultMap> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</mapper> | 
				
			|||
@ -0,0 +1,37 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			|||
 | 
				
			|||
<mapper namespace="com.epmet.dao.stats.FactVolunteerServiceDailyDao"> | 
				
			|||
 | 
				
			|||
    <resultMap type="com.epmet.entity.stats.FactVolunteerServiceDailyEntity" id="factVolunteerServiceDailyMap"> | 
				
			|||
        <result property="id" column="ID"/> | 
				
			|||
        <result property="customerId" column="CUSTOMER_ID"/> | 
				
			|||
        <result property="dateId" column="DATE_ID"/> | 
				
			|||
        <result property="monthId" column="MONTH_ID"/> | 
				
			|||
        <result property="volunteerTotal" column="VOLUNTEER_TOTAL"/> | 
				
			|||
        <result property="partyTotal" column="PARTY_TOTAL"/> | 
				
			|||
        <result property="resiTotal" column="RESI_TOTAL"/> | 
				
			|||
        <result property="serviceTotal" column="SERVICE_TOTAL"/> | 
				
			|||
        <result property="partyServiceTotal" column="PARTY_SERVICE_TOTAL"/> | 
				
			|||
        <result property="resiServiceTotal" column="RESI_SERVICE_TOTAL"/> | 
				
			|||
        <result property="delFlag" column="DEL_FLAG"/> | 
				
			|||
        <result property="revision" column="REVISION"/> | 
				
			|||
        <result property="createdBy" column="CREATED_BY"/> | 
				
			|||
        <result property="createdTime" column="CREATED_TIME"/> | 
				
			|||
        <result property="updatedBy" column="UPDATED_BY"/> | 
				
			|||
        <result property="updatedTime" column="UPDATED_TIME"/> | 
				
			|||
    </resultMap> | 
				
			|||
     | 
				
			|||
    <delete id="clearVolunteerDemandServiceDailyStats"> | 
				
			|||
        delete | 
				
			|||
        from fact_volunteer_service_daily | 
				
			|||
        where DATE_ID=#{dateDimId} | 
				
			|||
          and CUSTOMER_ID in | 
				
			|||
        <foreach collection="customerIds" open="(" separator="," close=")" item="customerId"> | 
				
			|||
            #{customerId} | 
				
			|||
        </foreach> | 
				
			|||
 | 
				
			|||
    </delete> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
</mapper> | 
				
			|||
					Loading…
					
					
				
		Reference in new issue