Pārlūkot izejas kodu

患者信息表增加认领逻辑

cgp 18 stundas atpakaļ
vecāks
revīzija
2ee06a2e88

+ 13 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -306,6 +306,9 @@ public class Task {
     @Autowired
     private FsProjectMapper projectMapper;
 
+    @Autowired
+    private IFsImportMemberService fsImportMemberService;
+
     public static final String SOP_TEMP_VOICE_KEY = "sop:tempVoice";
 
     // sop升单客户类型
@@ -2533,4 +2536,14 @@ public class Task {
         }
     }
 
+    /**
+     * 定时批量添加待销售认领客户信息
+     * */
+    public void batchAddCompanyCustomer(){
+        int i = fsImportMemberService.batchAddCompanyCustomer();
+        if (i > 0){
+            log.info("批量添加待销售认领客户信息成功,数量:{}",i);
+        }
+    }
+
 }

+ 3 - 0
fs-company/src/main/java/com/fs/company/controller/qw/FsCompanyCustomerController.java

@@ -142,6 +142,9 @@ public class FsCompanyCustomerController extends BaseController {
      */
     @PutMapping
     public AjaxResult edit(@RequestBody FsCompanyCustomer fsCompanyCustomer) {
+        // 获取当前登录用户id
+        Long currentUserId = SecurityUtils.getLoginUser().getUser().getUserId();
+        fsCompanyCustomer.setCompanyUserId(currentUserId);
         try {
             return toAjax(fsCompanyCustomerService.updateFsCompanyCustomer(fsCompanyCustomer));
         } catch (DuplicateKeyException e) {

+ 7 - 0
fs-service/src/main/java/com/fs/his/mapper/FsImportMemberMapper.java

@@ -67,4 +67,11 @@ public interface FsImportMemberMapper extends BaseMapper<FsImportMember>{
      * @return 结果
      */
     int batchInsertFsImportMember(@Param("memberList") List<FsImportMember> memberList);
+
+    /**
+     * 批量修改导入会员状态为已生成
+     * @param importMemberIds 导入会员ID集合
+     * @return 修改数量
+     */
+    int completionStatus(@Param("importMemberIds") List<Long> importMemberIds);
 }

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

@@ -66,4 +66,9 @@ public interface IFsImportMemberService extends IService<FsImportMember>{
     void batchInsert(List<MemberExcelDTO> list);
 
     Map<String,Object> importExcel(MultipartFile file);
+
+    /**
+     * 批量添加待销售认领客户信息
+     * */
+    int batchAddCompanyCustomer();
 }

+ 46 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsImportMemberServiceImpl.java

@@ -1,7 +1,6 @@
 package com.fs.his.service.impl;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -12,10 +11,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.his.dto.MemberExcelDTO;
 import com.fs.his.listenner.MemberImportListener;
 import org.springframework.beans.BeanUtils;
+import com.fs.qw.mapper.FsCompanyCustomerMapper;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.his.mapper.FsImportMemberMapper;
 import com.fs.his.domain.FsImportMember;
+import com.fs.qw.domain.FsCompanyCustomer;
 import com.fs.his.service.IFsImportMemberService;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -29,6 +31,9 @@ import org.springframework.web.multipart.MultipartFile;
 @Service
 public class FsImportMemberServiceImpl extends ServiceImpl<FsImportMemberMapper, FsImportMember> implements IFsImportMemberService {
 
+    @Autowired
+    private FsCompanyCustomerMapper fsCompanyCustomerMapper;
+
     /**
      * 查询导入会员
      * 
@@ -130,4 +135,44 @@ public class FsImportMemberServiceImpl extends ServiceImpl<FsImportMemberMapper,
         }
         return listener.getResult();
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int batchAddCompanyCustomer() {
+        // 1. 获取未加入到销售客户信息表的会员信息
+        FsImportMember queryImportMember = new FsImportMember();
+        queryImportMember.setStatus(0);
+        List<FsImportMember> fsImportMembers = baseMapper.selectFsImportMemberList(queryImportMember);
+
+        if (CollectionUtils.isEmpty(fsImportMembers)) {
+            return 0;
+        }
+
+        // 2. 将导入会员转换为销售客户对象
+        List<FsCompanyCustomer> companyCustomers = fsImportMembers.stream().map(member -> {
+            FsCompanyCustomer customer = new FsCompanyCustomer();
+            customer.setCustomerName(member.getMemberName());
+            customer.setPhone(member.getMemberPhone());
+            customer.setAddress(member.getAddress());
+            return customer;
+        }).collect(Collectors.toList());
+
+        // 3. 分批插入,并统计实际成功插入的数量
+        int batchSize = 500;
+        int totalInsertedCount = 0; // 记录总共成功插入了多少条
+
+        for (int i = 0; i < companyCustomers.size(); i += batchSize) {
+            int end = Math.min(i + batchSize, companyCustomers.size());
+            List<FsCompanyCustomer> subList = companyCustomers.subList(i, end);
+            // insertBatchFsCompanyCustomer 返回该批次实际影响的行数
+            int insertedInBatch = fsCompanyCustomerMapper.insertBatchFsCompanyCustomer(subList);
+            totalInsertedCount += insertedInBatch;
+        }
+        // 4. 合并需要更新状态的ID
+        List<Long> allProcessedIds = fsImportMembers.stream()
+                .map(FsImportMember::getId)
+                .collect(Collectors.toList());
+        // 6. 批量修改导入会员状态
+        return baseMapper.completionStatus(allProcessedIds);
+    }
 }

+ 6 - 0
fs-service/src/main/java/com/fs/qw/mapper/FsCompanyCustomerMapper.java

@@ -2,6 +2,7 @@ package com.fs.qw.mapper;
 
 import com.fs.qw.domain.FsCompanyCustomer;
 import com.fs.qw.param.TransferCustomerParam;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -55,4 +56,9 @@ public interface FsCompanyCustomerMapper {
      * @return 更新数量
      */
     int updateCompanyUserIdByIds(TransferCustomerParam param);
+
+    /**
+     *  批量插入客户信息
+     * */
+    int insertBatchFsCompanyCustomer(@Param("companyCustomers") List<FsCompanyCustomer> companyCustomers);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/service/impl/FsCompanyCustomerServiceImpl.java

@@ -71,6 +71,11 @@ public class FsCompanyCustomerServiceImpl implements IFsCompanyCustomerService {
             //若提交的号码是脱敏的号码,则不需要更新号码
             fsCompanyCustomer.setPhone(null);
         }
+        //更新之前查询一下(因为认领接口也走的这个逻辑)
+        FsCompanyCustomer oldCustomer = selectFsCompanyCustomerById(fsCompanyCustomer.getId());
+        if(oldCustomer.getCompanyUserId()!=null&&oldCustomer.getCompanyUserId()!=fsCompanyCustomer.getCompanyUserId()){
+            throw new CustomException("客户信息已被其它销售认领!");
+        }
         return fsCompanyCustomerMapper.updateFsCompanyCustomer(fsCompanyCustomer);
     }
 

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

@@ -66,6 +66,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </update>
 
+    <update id="completionStatus">
+        update fs_import_member set status = 1 where id in
+        <foreach item="id" collection="importMemberIds" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
     <delete id="deleteFsImportMemberById" parameterType="Long">
         delete from fs_import_member where id = #{id}
     </delete>

+ 9 - 0
fs-service/src/main/resources/mapper/qw/FsCompanyCustomerMapper.xml

@@ -129,6 +129,15 @@
         </trim>
     </insert>
 
+    <!-- 遇到重复电话直接忽略,继续插入下一条 -->
+    <insert id="insertBatchFsCompanyCustomer">
+        INSERT IGNORE INTO fs_company_customer (customer_name, address, phone)
+        VALUES
+        <foreach collection="companyCustomers" item="item" separator=",">
+            (#{item.customerName}, #{item.address}, #{item.item.phone})
+        </foreach>
+    </insert>
+
     <update id="updateFsCompanyCustomer" parameterType="com.fs.qw.domain.FsCompanyCustomer">
         update fs_company_customer
         <set>