Explorar o código

优化搭销会员处理接口

cgp hai 6 días
pai
achega
c14e5ad5fa

+ 4 - 1
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -2300,9 +2300,12 @@ public class Task {
             FsSopDoctorTask fsSopDoctorTask = new FsSopDoctorTask();
             fsSopDoctorTask.setUserId(log.getFsUserId()); // 客户ID
             fsSopDoctorTask.setDoctorId(log.getDoctorId()); // 医生ID
+            fsSopDoctorTask.setDoctorMemberSalesId(log.getDoctorMemberSalesId());
+            fsSopDoctorTask.setRemark(log.getRemark());
+            fsSopDoctorTask.setCompanyUserId(log.getCompanyUserId());
+            fsSopDoctorTask.setQwExternalContactId(log.getExId());
             fsSopDoctorTask.setStatus(0);//默认未处理状态
             fsSopDoctorTask.setCreateTime(DateUtils.getNowDate());
-            fsSopDoctorTask.setDoctorMemberSalesId(log.getDoctorMemberSalesId());
             int result = sopDoctorTaskMapper.insertFsSopDoctorTask(fsSopDoctorTask);;
             if (result>0) {
                 ids.add(log.getId());

+ 2 - 0
fs-service/src/main/java/com/fs/his/dto/FsDoctorTaskDTO.java

@@ -18,6 +18,8 @@ public class FsDoctorTaskDTO {
     private String orderCode;
     //处理结果
     private String remark;
+    //企业外部联系人id
+    private Long exId;
     //医生会员搭销id
     private Long doctorMemberSalesId;
 }

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

@@ -71,7 +71,7 @@ public interface FsSopDoctorTaskMapper extends BaseMapper<FsSopDoctorTask>{
     /**
      * 获取搭销会员待处理的总数
      */
-    @Select("SELECT count(*) FROM fs_sop_doctor_task WHERE doctor_member_sales_id = #{memberSalesId}")
+    @Select("SELECT count(*) FROM fs_sop_doctor_task WHERE doctor_member_sales_id = #{memberSalesId} and status=0")
     Long selectUnprocessedDoctorTaskCount(@Param("memberSalesId") Long memberSalesId);
 
     //根据订单号查询签收处理的医生任务

+ 12 - 3
fs-service/src/main/java/com/fs/his/service/impl/FsSopDoctorTaskServiceImpl.java

@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsSopDoctorTaskMapper;
 import com.fs.his.domain.FsSopDoctorTask;
+import org.springframework.transaction.annotation.Transactional;
 
 import static com.fs.his.utils.PhoneUtil.decryptPhone;
 
@@ -148,6 +149,7 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int submitDoctorTask(FsDoctorTaskDTO addTaskDto) {
         // --- 1. 验证输入参数 ---
         if (addTaskDto == null || addTaskDto.getId() == null) {
@@ -182,12 +184,15 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
         doctorTask.setRemark(addTaskDto.getRemark());
         doctorTask.setUpdateTime(DateUtils.getNowDate());
         doctorTask.setSendDays(addTaskDto.getSendDays());
-        int updateResult = fsSopDoctorTaskMapper.updateFsSopDoctorTask(doctorTask);
+
 
         //如果是"签收"类型 额外处理
         if (addTaskDto.getHandleType() != null && addTaskDto.getHandleType() == 1) {
+            if (addTaskDto.getOrderCode() == null || addTaskDto.getOrderCode().isEmpty()) {
+                throw new CustomException("签收订单号不能为空");
+            }
             doctorTask.setOrderCode(addTaskDto.getOrderCode());
-            //签收的doctorTask缓存中
+            //缓存签收的doctorTask
             String signOffOrderCacheKey = "doctorMemberSaLes:"+ addTaskDto.getOrderCode();
             redisCache.setCacheObject(signOffOrderCacheKey,doctorTask);
             //修改fs_store_order表的is_receive_notice为已签收
@@ -196,6 +201,8 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
             fsStoreOrder.setOrderCode(addTaskDto.getOrderCode());
             fsStoreOrderMapper.updateFsStoreOrderByOrderCode(fsStoreOrder);
         }
+        //更新task状态
+        int updateResult = fsSopDoctorTaskMapper.updateFsSopDoctorTask(doctorTask);
 
         // --- 3. "提醒时间"类型执行后续操作 ---
         if (addTaskDto.getHandleType() != null && addTaskDto.getHandleType() == 2) {
@@ -209,6 +216,8 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
             sopOrderLog.setStatus(0); // 0:未发送,1:已发送
             sopOrderLog.setFsUserId(fsDoctorMemberSales.getFsUserId());
             sopOrderLog.setCompanyUserId(addTaskDto.getCompanyUserId());
+            sopOrderLog.setRemark(addTaskDto.getRemark());
+            sopOrderLog.setExId(addTaskDto.getExId());
             sopOrderLog.setCreateTime(now);
             sopOrderLog.setSendTime(futureDate);
             sopOrderLog.setDoctorMemberSalesId(addTaskDto.getDoctorMemberSalesId());
@@ -237,7 +246,7 @@ public class FsSopDoctorTaskServiceImpl extends ServiceImpl<FsSopDoctorTaskMappe
      * @param daysToAdd 需要增加的天数
      * @return 计算后的未来日期(时间为 00:00:00)
      */
-    private Date calculateFutureDate(Date baseDate, Integer daysToAdd) {
+    public Date calculateFutureDate(Date baseDate, Integer daysToAdd) {
         if (baseDate == null || daysToAdd == null || daysToAdd <= 0) {
             throw new CustomException("基准日期和增加天数都不能为空且天数需大于0");
         }

+ 6 - 1
fs-service/src/main/java/com/fs/sop/domain/SopOrderLog.java

@@ -2,7 +2,6 @@ package com.fs.sop.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.fs.common.annotation.Excel;
 import lombok.Data;
 import com.fs.common.core.domain.BaseEntity;
@@ -62,4 +61,10 @@ public class SopOrderLog extends BaseEntity{
     //医生会员搭销id
     private Long doctorMemberSalesId;
 
+    //备注(签收/提醒 处理结果)
+    private String remark;
+
+    /** 订单号 */
+    private String orderCode;
+
 }

+ 11 - 2
fs-service/src/main/resources/mapper/sop/SopOrderLogMapper.xml

@@ -16,10 +16,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status"    column="status"    />
         <result property="doctorId"    column="doctor_id"    />
         <result property="doctorMemberSalesId"    column="doctor_member_sales_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="orderCode"    column="order_code"    />
     </resultMap>
 
     <sql id="selectSopOrderLogVo">
-        select id, sop_id, fs_user_id, is_buy, order_send_type, crate_time, update_time, send_time,status,doctor_id,doctor_member_sales_id from sop_order_log
+        select id, sop_id, fs_user_id, is_buy, order_send_type, crate_time, update_time, send_time,status,doctor_id,doctor_member_sales_id,remark,order_code from sop_order_log
     </sql>
 
     <select id="selectSopOrderLogList" parameterType="SopOrderLog" resultMap="SopOrderLogResult">
@@ -34,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="status != null "> and status = #{status}</if>
             <if test="doctorId != null "> and doctor_id = #{doctorId}</if>
             <if test="doctorMemberSalesId != null "> and doctor_member_sales_id = #{doctorMemberSalesId}</if>
+            <if test="orderCode != null "> and order_code = #{orderCode}</if>
         </where>
     </select>
     
@@ -42,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </select>
     <select id="queryUnsentSOPData" resultType="com.fs.sop.domain.SopOrderLog">
-        SELECT sol.id,sol.sop_id,sol.is_buy,sol.order_send_type,sol.status,sol.ex_id,sol.company_user_id,sol.doctor_id,sol.fs_user_id,sol.doctor_member_sales_id FROM sop_order_log sol WHERE sol.send_time &lt;=NOW() and sol.status=0
+        SELECT sol.id,sol.sop_id,sol.is_buy,sol.order_send_type,sol.status,sol.ex_id,sol.company_user_id,sol.doctor_id,sol.fs_user_id,sol.doctor_member_sales_id,sol.remark,sol.order_code FROM sop_order_log sol WHERE sol.send_time &lt;=NOW() and sol.status=0
     </select>
 
     <insert id="insertSopOrderLog" parameterType="SopOrderLog" useGeneratedKeys="true" keyProperty="id">
@@ -60,6 +63,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null">doctor_id,</if>
             <if test="fsUserId != null">fs_user_id,</if>
             <if test="doctorMemberSalesId != null">doctor_member_sales_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="orderCode != null">order_code,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sopId != null">#{sopId},</if>
@@ -74,6 +79,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null">#{doctorId},</if>
             <if test="fsUserId != null">#{fsUserId},</if>
             <if test="doctorMemberSalesId != null">#{doctorMemberSalesId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="orderCode != null">#{orderCode},</if>
          </trim>
     </insert>
 
@@ -90,6 +97,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="status != null">status = #{status},</if>
             <if test="doctorId != null">doctor_id = #{doctorId},</if>
             <if test="doctorMemberSalesId != null">doctor_member_sales_id = #{doctorMemberSalesId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="orderCode != null">order_code = #{orderCode},</if>
         </trim>
         where id = #{id}
     </update>