|
|
@@ -0,0 +1,127 @@
|
|
|
+package com.wx.blink.backend.manager;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
|
|
|
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerMarketTeamDO;
|
|
|
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerVisitPlanDO;
|
|
|
+import com.wx.blink.backend.domain.dataobject.BlinkProviderDO;
|
|
|
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitPlanCalendarVO;
|
|
|
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitPlanStatisticsVO;
|
|
|
+import com.wx.blink.backend.domain.dto.BlinkCustomerVisitPlanVO;
|
|
|
+import com.wx.blink.backend.domain.qry.BlinkCustomerVisitPlanQry;
|
|
|
+import com.wx.blink.backend.objectmapper.BlinkCustomerVisitPlanMapper;
|
|
|
+import com.wx.blink.backend.repository.BlinkCustomerVisitPlanRepository;
|
|
|
+import com.wx.blink.backend.service.IBlinkCustomerVisitPlanService;
|
|
|
+import com.wx.blink.base.common.domain.PageResult;
|
|
|
+import com.wx.blink.base.common.domain.ResponseDTO;
|
|
|
+import com.wx.blink.base.common.util.BlinkEntityUtil;
|
|
|
+import com.wx.blink.base.common.util.BlinkPageUtil;
|
|
|
+import com.wx.blink.common.qry.BlinkCustomerQry;
|
|
|
+import com.wx.blink.common.vo.BlinkCustomerStatisticsVO;
|
|
|
+import com.wx.blink.common.vo.BlinkCustomerVO;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+@Service
|
|
|
+public class BlinkCustomerVisitPlanImpl extends ServiceImpl<BlinkCustomerVisitPlanRepository, BlinkCustomerVisitPlanDO> implements IBlinkCustomerVisitPlanService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BlinkCustomerVisitPlanRepository customerVisitPlanRepository;
|
|
|
+ @Resource
|
|
|
+ private BlinkCustomerVisitPlanMapper customerVisitPlanMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addOrUpdate(BlinkCustomerVisitPlanVO vo) {
|
|
|
+ BlinkCustomerVisitPlanDO visitPlanDO = customerVisitPlanMapper.customerVisitPlanDVOtoDomain(vo);
|
|
|
+ if (visitPlanDO != null) {
|
|
|
+ //有id更新,没有则新增
|
|
|
+ if (visitPlanDO.getId() == null || visitPlanDO.getId() == "") {
|
|
|
+ //创建人赋值
|
|
|
+ BlinkEntityUtil.setCreateInfo(visitPlanDO);
|
|
|
+ this.save(visitPlanDO);
|
|
|
+ } else {
|
|
|
+ //更新人赋值
|
|
|
+ BlinkEntityUtil.setUpdatedInfo(visitPlanDO);
|
|
|
+ this.updateById(visitPlanDO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void visitCancel(BlinkCustomerVisitPlanVO vo) {
|
|
|
+ UpdateWrapper<BlinkCustomerVisitPlanDO> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper
|
|
|
+ .eq("id", vo.getId())
|
|
|
+ .set("status", 2)
|
|
|
+ .set("cancel_reason", vo.getCancelReason())
|
|
|
+ .set("reason_description", vo.getReasonDescription());
|
|
|
+ this.update(null, updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void visitCompleted(BlinkCustomerVisitPlanVO vo) {
|
|
|
+ UpdateWrapper<BlinkCustomerVisitPlanDO> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper
|
|
|
+ .eq("id", vo.getId())
|
|
|
+ .set("status", 1)
|
|
|
+ .set("completed_customer_id", vo.getCompletedCustomerId())
|
|
|
+ .set("completed_project_id", vo.getCompletedProjectId())
|
|
|
+ .set("completed_visit_ssq", vo.getCompletedVisitSsq())
|
|
|
+ .set("completed_visit_address", vo.getCompletedVisitAddress())
|
|
|
+ .set("visit_result", vo.getVisitResult());
|
|
|
+ this.update(null, updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageResult<BlinkCustomerVisitPlanVO> visitPlanQueryPage(BlinkCustomerVisitPlanQry qry) {
|
|
|
+ Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
|
|
|
+ List<BlinkCustomerVisitPlanVO> list = customerVisitPlanRepository.visitPlanQueryPage(page, qry);
|
|
|
+ PageResult<BlinkCustomerVisitPlanVO> pageResult = BlinkPageUtil.convert2PageResult(page, list);
|
|
|
+ return pageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BlinkCustomerVisitPlanStatisticsVO visitPlanStatisticsInfo(BlinkCustomerVisitPlanQry qry) {
|
|
|
+ List<BlinkCustomerVisitPlanVO> list = customerVisitPlanRepository.visitPlanQueryPage(null, qry);
|
|
|
+ return getVisitPlanStatisticsInfo(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<BlinkCustomerVisitPlanCalendarVO> getVisitPlanCalendarNum() {
|
|
|
+ List<BlinkCustomerVisitPlanCalendarVO> list = customerVisitPlanRepository.getVisitPlanCalendarNum();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BlinkCustomerVisitPlanVO visitPlanSingleQuery(String id) {
|
|
|
+ BlinkCustomerVisitPlanQry qry = new BlinkCustomerVisitPlanQry();
|
|
|
+ qry.setId(id);
|
|
|
+ List<BlinkCustomerVisitPlanVO> list = customerVisitPlanRepository.visitPlanQueryPage(null, qry);
|
|
|
+ if(list!=null&&!list.isEmpty()) return list.get(0);
|
|
|
+ else return new BlinkCustomerVisitPlanVO();
|
|
|
+ }
|
|
|
+
|
|
|
+ public BlinkCustomerVisitPlanStatisticsVO getVisitPlanStatisticsInfo(List<BlinkCustomerVisitPlanVO> list){
|
|
|
+ Map<Integer, Integer> countTypes = list.stream()
|
|
|
+ .map(obj -> obj.getStatus() == null ? 0: obj.getStatus()) // 将null转为字符串"00",作为待审核的状态
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ status -> status,
|
|
|
+ Collectors.reducing(
|
|
|
+ 0, // 初始值
|
|
|
+ obj -> 1, // 映射函数,每个元素计为1
|
|
|
+ Integer::sum // 归约操作,累加
|
|
|
+ )
|
|
|
+ ));
|
|
|
+ BlinkCustomerVisitPlanStatisticsVO statisticsVO = new BlinkCustomerVisitPlanStatisticsVO();
|
|
|
+ statisticsVO.setToBeCompletedQty(countTypes.getOrDefault(0,0));
|
|
|
+ statisticsVO.setCompletedQty(countTypes.getOrDefault(1,0));
|
|
|
+ return statisticsVO;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|