Przeglądaj źródła

医生端搭销会员业务

wjj 1 tydzień temu
rodzic
commit
2ab1cd59a0

+ 32 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/FsDoctorMemberSalesController.java

@@ -0,0 +1,32 @@
+package com.fs.app.controller;
+
+import com.fs.common.core.domain.R;
+import com.fs.his.vo.FsDoctorPrescribeListDVO;
+import com.fs.qw.param.FsDoctorMemberSalesQueryParam;
+import com.fs.qw.service.IFsDoctorMemberSalesService;
+import com.fs.qw.vo.FsDoctorMemberSalesVO;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@RestController
+@RequestMapping("/doctor/memberSales")
+public class FsDoctorMemberSalesController extends AppBaseController {
+
+    @Autowired
+    private IFsDoctorMemberSalesService doctorMemberSalesService;
+
+    @GetMapping("/list")
+    public R selectFsDoctorMemberSalesVOList(FsDoctorMemberSalesQueryParam param){
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        Long doctorId = Long.parseLong(getDoctorId());
+        param.setDoctorId(doctorId);
+        List<FsDoctorMemberSalesVO> voList = doctorMemberSalesService.selectFsDoctorMemberSalesVOList(param);
+        PageInfo<FsDoctorMemberSalesVO> listPageInfo=new PageInfo<>(voList);
+        return R.ok().put("data", listPageInfo);
+    }
+}

+ 12 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/FsSopDoctorTaskController.java

@@ -19,6 +19,10 @@ import com.fs.his.vo.FsPatientVO;
 import com.fs.his.vo.FsStoreOrderListVO;
 import com.fs.his.vo.FsUserCouponListVO;
 import com.fs.his.vo.SopDoctorTaskVo;
+import com.fs.qw.param.FsDoctorMemberSalesQueryParam;
+import com.fs.qw.vo.FsDoctorMemberSalesVO;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import io.jsonwebtoken.Claims;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -261,4 +265,12 @@ public class FsSopDoctorTaskController extends BaseController
         String doctorId = claims.getSubject().toString();
         return doctorId;
     }
+
+    @GetMapping("/taskList")
+    public R selectFsDoctorMemberSalesVOList(FsSopDoctorTask param){
+        startPage();
+        List<FsSopDoctorTask> taskList = fsSopDoctorTaskService.selectFsSopDoctorTaskList(param);
+        PageInfo<FsSopDoctorTask> listPageInfo=new PageInfo<>(taskList);
+        return R.ok().put("data", listPageInfo);
+    }
 }

+ 13 - 0
fs-service/src/main/java/com/fs/his/mapper/FsSopDoctorTaskMapper.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.his.domain.FsSopDoctorTask;
 import com.fs.his.dto.SopDoctorTaskDto;
 import com.fs.his.vo.SopDoctorTaskVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 医生处理sop任务Mapper接口
@@ -60,4 +62,15 @@ public interface FsSopDoctorTaskMapper extends BaseMapper<FsSopDoctorTask>{
      * @return 结果
      */
     int deleteFsSopDoctorTaskByIds(Long[] ids);
+
+    /**
+     * 查询医生任务列表
+     */
+    List<FsSopDoctorTask> selectFsSopDoctorTaskList(FsSopDoctorTask task);
+
+    /**
+     * 获取搭销会员待处理的总数
+     */
+    @Select("SELECT count(*) FROM fs_sop_doctor_task WHERE doctor_member_sales_id = #{memberSalesId}")
+    Long selectUnprocessedDoctorTaskCount(@Param("memberSalesId") Long memberSalesId);
 }

+ 3 - 0
fs-service/src/main/java/com/fs/his/service/IFsSopDoctorTaskService.java

@@ -62,4 +62,7 @@ public interface IFsSopDoctorTaskService extends IService<FsSopDoctorTask>{
     int deleteFsSopDoctorTaskById(Long id);
 
     List<SopDoctorTaskVo> statsDoctorOverviewAllList(SopDoctorTaskDto queryDto);
+
+
+    List<FsSopDoctorTask> selectFsSopDoctorTaskList(FsSopDoctorTask task);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsSopDoctorTaskServiceImpl.java

@@ -117,4 +117,9 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
     public List<SopDoctorTaskVo> statsDoctorOverviewAllList(SopDoctorTaskDto queryDto) {
         return fsSopDoctorTaskMapper.selectFsSopDoctorTaskVoList(queryDto);
     }
+
+    @Override
+    public List<FsSopDoctorTask> selectFsSopDoctorTaskList(FsSopDoctorTask task) {
+        return fsSopDoctorTaskMapper.selectFsSopDoctorTaskList(task);
+    }
 }

+ 4 - 0
fs-service/src/main/java/com/fs/qw/mapper/FsDoctorMemberSalesMapper.java

@@ -3,6 +3,8 @@ package com.fs.qw.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.qw.domain.FsDoctorMemberSales;
+import com.fs.qw.param.FsDoctorMemberSalesQueryParam;
+import com.fs.qw.vo.FsDoctorMemberSalesVO;
 
 /**
  * 医生会员搭销Mapper接口
@@ -58,4 +60,6 @@ public interface FsDoctorMemberSalesMapper extends BaseMapper<FsDoctorMemberSale
      * @return 结果
      */
     int deleteFsDoctorMemberSalesByIds(Long[] ids);
+
+    List<FsDoctorMemberSalesVO> selectFsDoctorMemberSalesVOList(FsDoctorMemberSalesQueryParam param);
 }

+ 20 - 0
fs-service/src/main/java/com/fs/qw/param/FsDoctorMemberSalesQueryParam.java

@@ -0,0 +1,20 @@
+package com.fs.qw.param;
+
+import com.fs.his.param.BaseParam;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class FsDoctorMemberSalesQueryParam extends BaseParam implements Serializable {
+
+    private Long doctorId;
+
+    private String userName;
+
+    private String startTime;
+
+    private String endTime;
+}

+ 7 - 0
fs-service/src/main/java/com/fs/qw/service/IFsDoctorMemberSalesService.java

@@ -4,7 +4,9 @@ import java.util.List;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.common.core.domain.R;
 import com.fs.qw.domain.FsDoctorMemberSales;
+import com.fs.qw.param.FsDoctorMemberSalesQueryParam;
 import com.fs.qw.param.MemberSalesParam;
+import com.fs.qw.vo.FsDoctorMemberSalesVO;
 
 /**
  * 医生会员搭销Service接口
@@ -20,6 +22,11 @@ public interface IFsDoctorMemberSalesService extends IService<FsDoctorMemberSale
      */
     R push(MemberSalesParam param);
 
+    /**
+     * 获取医生销售推送的会员列表
+     */
+    List<FsDoctorMemberSalesVO> selectFsDoctorMemberSalesVOList(FsDoctorMemberSalesQueryParam param);
+
     /**
      * 查询医生会员搭销
      * 

+ 30 - 1
fs-service/src/main/java/com/fs/qw/service/impl/FsDoctorMemberSalesServiceImpl.java

@@ -1,15 +1,20 @@
 package com.fs.qw.service.impl;
 
+import java.util.Collections;
 import java.util.List;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.utils.StringUtils;
 import com.fs.his.domain.FsSopDoctorTask;
 import com.fs.his.mapper.FsSopDoctorTaskMapper;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.mapper.QwExternalContactMapper;
+import com.fs.qw.param.FsDoctorMemberSalesQueryParam;
 import com.fs.qw.param.MemberSalesParam;
+import com.fs.qw.vo.FsDoctorMemberSalesVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -17,6 +22,7 @@ import com.fs.qw.mapper.FsDoctorMemberSalesMapper;
 import com.fs.qw.domain.FsDoctorMemberSales;
 import com.fs.qw.service.IFsDoctorMemberSalesService;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 /**
  * 医生会员搭销Service业务层处理
@@ -59,7 +65,7 @@ public class FsDoctorMemberSalesServiceImpl extends ServiceImpl<FsDoctorMemberSa
             doctorTask.setCreateTime(DateUtils.getNowDate());
             doctorTask.setQwExternalContactId(memberSales.getExId());
             doctorTask.setCompanyUserId(memberSales.getCompanyUserId());
-            doctorTask.setRemark("新推送会员,第一随访");
+            doctorTask.setRemark("新推送会员");
             doctorTask.setUserId(memberSales.getFsUserId());
             doctorTask.setDoctorMemberSalesId(memberSales.getId());
             sopDoctorTaskMapper.insertFsSopDoctorTask(doctorTask);
@@ -75,6 +81,29 @@ public class FsDoctorMemberSalesServiceImpl extends ServiceImpl<FsDoctorMemberSa
         return R.error("推送失败");
     }
 
+    @Override
+    public List<FsDoctorMemberSalesVO> selectFsDoctorMemberSalesVOList(FsDoctorMemberSalesQueryParam param) {
+        //1.搭销会员信息
+        List<FsDoctorMemberSalesVO> voList = memberSalesMapper.selectFsDoctorMemberSalesVOList(param);
+
+        if (!CollectionUtils.isEmpty(voList)) {
+            for (FsDoctorMemberSalesVO vo : voList) {
+                if (!StringUtils.isEmpty(vo.getPhone())) {
+                    //
+                    boolean likelyEncryptedByEntropy = PhoneUtil.isLikelyEncryptedByEntropy(vo.getPhone());
+                    if (likelyEncryptedByEntropy) {
+                        String decryptPhone = PhoneUtil.decryptPhone(vo.getPhone());
+                        vo.setPhone(decryptPhone);
+                    }
+                }
+                //2.获取搭销会员待处理的总数
+                Long unprocessedDoctorTaskCount = sopDoctorTaskMapper.selectUnprocessedDoctorTaskCount(vo.getId());
+                vo.setUnprocessed(unprocessedDoctorTaskCount);
+            }
+        }
+        return voList;
+    }
+
     /**
      * 查询医生会员搭销
      * 

+ 52 - 0
fs-service/src/main/java/com/fs/qw/vo/FsDoctorMemberSalesVO.java

@@ -0,0 +1,52 @@
+package com.fs.qw.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FsDoctorMemberSalesVO {
+
+    private Long id;
+
+    /** 企业外部联系人id */
+    private Long exId;
+
+    /** 会员id */
+    private Long fsUserId;
+
+    /** 销售id */
+    private Long companyUserId;
+
+    /**
+     * 销售名称
+     */
+    private String companyUserName;
+
+    /** 销售公司 */
+    private Long companyId;
+
+    /** 医生id */
+    private Long doctorId;
+
+    /**
+     * 企微客户名称
+     */
+    private String userName;
+
+    /**
+     * 客户电话
+     */
+    private String phone;
+
+    /**
+     * 未处理条数
+     */
+    private Long unprocessed;
+
+    /** 创建时间 */
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 7 - 0
fs-service/src/main/resources/mapper/his/FsSopDoctorTaskMapper.xml

@@ -177,4 +177,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectFsSopDoctorTaskList" parameterType="FsSopDoctorTask" resultType="FsSopDoctorTask">
+        SELECT * FROM fs_sop_doctor_task
+        WHERE doctor_member_sales_id = #{doctorMemberSalesId} 
+        <if test="status != null "> and status = #{status} </if>
+        ORDER BY id DESC
+    </select>
 </mapper>

+ 12 - 0
fs-service/src/main/resources/mapper/qw/FsDoctorMemberSalesMapper.xml

@@ -83,4 +83,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectFsDoctorMemberSalesVOList" parameterType="com.fs.qw.param.FsDoctorMemberSalesQueryParam" resultType="com.fs.qw.vo.FsDoctorMemberSalesVO">
+        SELECT dms.*,qec.name userName,cu.nick_name companyUserName,u.phone FROM fs_doctor_member_sales dms
+        LEFT JOIN qw_external_contact qec ON dms.ex_id = qec.id
+        LEFT JOIN company_user cu ON dms.company_user_id = cu.user_id
+        LEFT JOIN fs_user u ON dms.fs_user_id = u.user_id
+        WHERE dms.doctor_id = #{doctorId}
+        <if test="startTime != null ">  and DATE(dms.create_time) &gt;= DATE(#{startTime})</if>
+        <if test="endTime != null ">  and DATE(dms.create_time) &lt;= DATE(#{endTime})</if>
+        <if test="userName != null and userName != '' "> and qec.name like concat('%', #{userName}, '%')</if>
+        order by dms.create_time desc
+    </select>
 </mapper>