Commit dcc62bd1 by fudahua

feat:批量操作待办

parent d661ee70
......@@ -25,7 +25,7 @@ public interface PendingTaskApiService {
/**
* 待办批量
* 待办批量 活动任务
*
* @param qdto
*/
......@@ -110,9 +110,9 @@ public interface PendingTaskApiService {
public ServiceResponse<Boolean> updateInvalidTime(String relationId, Date endTime);
/**
* 更新失效或者结束时间
* 更新失效或者结束时间 活动任务
*
* @param relationId
* @param businessId
* @param endTime
* @return
*/
......
......@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Set;
@Mapper
public interface PendingTaskMapper {
......@@ -39,6 +40,11 @@ public interface PendingTaskMapper {
TabPendingTask getByRelationId(String relationId);
/**
* 根据关联id 查询单条
*/
List<TabPendingTask> listByRelationId(@Param("relationIds") List<String> relationIds);
/**
* 分页查询待办任务表
*
* @param enterpriseId 企业id
......@@ -80,10 +86,10 @@ public interface PendingTaskMapper {
/**
* 更新失效时间
*
* @param enterpriseId 企业id
* @param businessId 企业id
* @return
*/
public int updateInvalidTimeByBusinessId(@Param("businessId") String businessId, @Param("") Date invalidTime);
public int updateInvalidTimeByBusinessId(@Param("businessId") String businessId, @Param("invalidTime") Date invalidTime);
/**
* 更新失效时间
......@@ -93,5 +99,17 @@ public interface PendingTaskMapper {
*/
public int deleteByBusinessId(@Param("businessId") String businessId);
/**
* 批量插入
*/
int insertBatch(@Param("list") List<TabPendingTask> list);
/**
* 更新删除状态到正常 活动任务
* @param relationIds
* @return
*/
int updateDelToNormalByRelationIds(@Param("relationIds") Set<String> relationIds, @Param("invalidTime") Date invalidTime);
}
\ No newline at end of file
......@@ -22,6 +22,14 @@ public interface PendingTaskService {
public boolean addOrUpdatePendingTask(PendingTaskBO task);
/**
* 新增或更新
*
* @param task
* @return
*/
public boolean addOrUpdateBatchPendingTask(List<PendingTaskBO> task);
/**
* 分页查询待办任务表
*
* @param enterpriseId 企业id
......@@ -55,6 +63,7 @@ public interface PendingTaskService {
*/
public boolean deletePendingTask(List<String> relationIds);
/**
* 删除执行人列表
*
......
......@@ -15,6 +15,9 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created 2021/12/15.
......@@ -44,6 +47,37 @@ public class PendingTaskServiceImpl implements PendingTaskService {
}
@Override
public boolean addOrUpdateBatchPendingTask(List<PendingTaskBO> tasks) {
if (CollectionUtils.isEmpty(tasks)) {
return true;
}
List<String> relationIds = tasks.stream().map(mid -> mid.getRelationId()).collect(Collectors.toList());
List<TabPendingTask> tabPendingTasks = pendingTaskMapper.listByRelationId(relationIds);
if (CollectionUtils.isNotEmpty(tabPendingTasks)) {
Map<String, TabPendingTask> pendingTaskMap = tabPendingTasks.stream().collect(Collectors.toMap(tab -> tab.getRelationId(), tab -> tab));
Set<String> hasRelationIds = pendingTaskMap.keySet();
pendingTaskMapper.updateDelToNormalByRelationIds(hasRelationIds,tasks.get(0).getInvalidTime());
tasks = tasks.stream().filter(mid->!pendingTaskMap.containsKey(mid.getRelationId())).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(tasks)) {
return true;
}
List<TabPendingTask> pendingTasks = EntityUtil.changeEntityListByJSON(TabPendingTask.class, tasks);
int size=100;
int len = pendingTasks.size();
int yu = len % size;
int nu = len / size+(yu>0?1:0);
for (int i=0;i<nu;i++) {
int start=i*size;
int end=(start+size)>len?(start+yu):(start+size);
List<TabPendingTask> midTask = pendingTasks.subList(start, end);
pendingTaskMapper.insertBatch(midTask);
}
return true;
}
@Override
public Page<PendingTaskBO> pagePendingTask(String enterpriseId, String storeId, String clerkId, int taskType, int finishFlag, int overdueFlag, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo);
List<TabPendingTask> tabPendingTasks = pendingTaskMapper.listPendingTask(enterpriseId, storeId, clerkId, taskType, finishFlag, overdueFlag);
......
......@@ -25,6 +25,7 @@ import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* Created 2021/12/16.
......@@ -46,14 +47,12 @@ public class PendingTaskApiServiceImpl implements PendingTaskApiService {
@Override
public ServiceResponse<Boolean> addPendingTaskBatch(List<PendingTaskQDTO> qdto) {
//后续优化
if (CollectionUtils.isEmpty(qdto)) {
return ServiceResponse.success(true);
}
qdto.forEach(mid -> {
this.addPendingTask(mid);
});
List<PendingTaskBO> list = EntityUtil.changeEntityListByJSON(PendingTaskBO.class, qdto);
pendingTaskService.addOrUpdateBatchPendingTask(list);
return ServiceResponse.success(true);
}
......
......@@ -217,6 +217,7 @@
from tab_haoban_notice_message
where enterprise_id = #{enterpriseId}
and store_id = #{storeId}
and delete_flag=0
<if test="clerkId != null">
and clerk_id =#{clerkId}
</if>
......@@ -233,6 +234,7 @@
from tab_haoban_notice_message
where enterprise_id = #{enterpriseId}
and read_flag=0
and delete_flag=0
and store_id = #{storeId}
<if test="clerkId != null">
and clerk_id =#{clerkId}
......@@ -250,6 +252,7 @@
WHERE enterprise_id = #{enterpriseId}
and clerk_id = #{clerkId}
and read_flag=0
and delete_flag=0
<if test="categoryType!=-1">
and category_type=#{categoryType}
</if>
......
......@@ -251,6 +251,16 @@
where relation_id = #{relationId}
</select>
<select id="listByRelationId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_pending_task
where relation_id in
<foreach collection="relationIds" open="(" separator="," close=")" item="item">
#{item}
</foreach>
</select>
<select id="listPendingTask" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
......@@ -309,8 +319,9 @@
<update id="updateInvalidTimeByBusinessId">
update tab_haoban_pending_task
set
update_time = now(),
invalid_time = #{invalidTime}
update_time = now(),
invalid_time = #{invalidTime},
overdue_time = #{invalidTime}
where business_id = #{businessId}
</update>
......@@ -321,4 +332,37 @@
update_time = now()
where business_id = #{businessId} and delete_flag=0
</update>
<insert id="insertBatch" >
insert into tab_haoban_pending_task ( enterprise_id, relation_id,
task_type, title, description,
task_status_flag, overdue_time, invalid_time,
store_id, clerk_id, finish_time,
finish_flag, overdue_flag, delete_flag,
create_time, update_time)
values
<foreach collection="list" item="item" separator=",">
( #{item.enterpriseId,jdbcType=VARCHAR}, #{item.relationId,jdbcType=VARCHAR},
#{item.taskType,jdbcType=INTEGER}, #{item.title,jdbcType=VARCHAR}, #{item.description,jdbcType=VARCHAR},
0, #{item.overdueTime,jdbcType=TIMESTAMP}, #{item.invalidTime,jdbcType=TIMESTAMP},
#{item.storeId,jdbcType=VARCHAR}, #{item.clerkId,jdbcType=VARCHAR}, #{item.finishTime,jdbcType=TIMESTAMP},
0, 0, 0,
now(), now())
</foreach>
</insert>
<update id="updateDelToNormalByRelationIds">
update tab_haoban_pending_task
set
delete_flag=0,
update_time = now(),
invalid_time = #{invalidTime},
overdue_time = #{invalidTime}
where
relation_id in
<foreach collection="relationIds" open="(" separator="," close=")" item="item">
#{item}
</foreach>
</update>
</mapper>
\ No newline at end of file
......@@ -75,16 +75,23 @@ public class ServiceTest {
@Test
public void test11() {
PendingTaskQDTO pendingTaskDTO = new PendingTaskQDTO();
pendingTaskDTO.setRelationId("relatrionId");
pendingTaskDTO.setTaskType(1 == TaskTypeEnum.TEL.getValue() ? PendingTaskTypeEnum.TEL_TASK.getType() : PendingTaskTypeEnum.PERFORMANCE.getType());
pendingTaskDTO.setTitle("标题");
pendingTaskDTO.setDescription("内容");
pendingTaskDTO.setStoreId("storeId");
pendingTaskDTO.setClerkId("clerkId");
pendingTaskDTO.setEnterpriseId("eid");
pendingTaskDTO.setOverdueTime(new Date());
pendingTaskApiService.addPendingTask(pendingTaskDTO);
List<PendingTaskQDTO> list=new ArrayList<>();
int i=310;
while (i-->0)
{
PendingTaskQDTO pendingTaskDTO = new PendingTaskQDTO();
pendingTaskDTO.setRelationId("relatrionId"+i);
pendingTaskDTO.setTaskType(1 == TaskTypeEnum.TEL.getValue() ? PendingTaskTypeEnum.TEL_TASK.getType() : PendingTaskTypeEnum.PERFORMANCE.getType());
pendingTaskDTO.setTitle("标题");
pendingTaskDTO.setDescription("内容");
pendingTaskDTO.setStoreId("storeId");
pendingTaskDTO.setClerkId("clerkId");
pendingTaskDTO.setEnterpriseId("eid");
pendingTaskDTO.setOverdueTime(new Date());
pendingTaskDTO.setInvalidTime(new Date());
list.add(pendingTaskDTO);
}
pendingTaskApiService.addPendingTaskBatch(list);
}
@Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment