Prechádzať zdrojové kódy

销售端新增已完善采集信息菜单

cgp 6 dní pred
rodič
commit
43e51cabba

+ 17 - 0
fs-company/src/main/java/com/fs/hisStore/controller/FsUserInformationCollectionController.java

@@ -200,6 +200,23 @@ public class FsUserInformationCollectionController extends BaseController
         return getDataTable(list);
     }
 
+    /**
+     * 查询销售已完善信息采集列表
+     */
+    @PostMapping("/fullyCollectionInfoList")
+    public TableDataInfo fullyCollectionInfoList(@RequestBody FsUserInformationCollectionOverviewDTO queryDto) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        queryDto.setCompanyUserId(loginUser.getUser().getUserId());
+        //管理员查看所有数据
+        Long isAdmin = roleMapper.companyUserIsAdmin(queryDto.getCompanyUserId());
+        if (isAdmin != null) {
+            queryDto.setCompanyUserId(null);
+        }
+        startPage();
+        List<FsUserInformationCollectionOverviewVo> list =fsUserInformationCollectionService.fullyCollectionInfoList(queryDto);
+        return getDataTable(list);
+    }
+
     /**
      * 查询销售是否具有代填权限
      * */

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsUserInformationCollectionMapper.java

@@ -118,4 +118,9 @@ public interface FsUserInformationCollectionMapper extends BaseMapper<FsUserInfo
      * 获取未绑定的采集列表
      * */
     List<FsUserInformationCollectionOverviewVo> getUnBindCollectionList(FsUserInformationCollectionOverviewDTO queryDto);
+
+    /**
+     * 查询销售已完善信息采集列表
+     * */
+    List<FsUserInformationCollectionOverviewVo> fullyCollectionInfoList(FsUserInformationCollectionOverviewDTO queryDto);
 }

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsUserInformationCollectionService.java

@@ -176,4 +176,9 @@ public interface IFsUserInformationCollectionService extends IService<FsUserInfo
      * @param fsUserInformationCollection 待完善信息
      */
     void submitSalesInfo(FsUserInformationCollectionParam fsUserInformationCollection,FsUserInformationCollection sourceInfo);
+
+    /**
+     * 查询销售已完善信息采集列表
+     * */
+    List<FsUserInformationCollectionOverviewVo> fullyCollectionInfoList(FsUserInformationCollectionOverviewDTO queryDto);
 }

+ 47 - 12
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserInformationCollectionServiceImpl.java

@@ -490,8 +490,38 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
             //        .sorted(Comparator.comparing(AnswerVO::getValue, Comparator.nullsFirst(List::indexOf)).reversed()).collect(Collectors.toList())
             //        .stream()
             //        .sorted((a,b)-> Boolean.compare(b.getFlag(),a.getFlag())).collect(Collectors.toList());
-            List<AnswerVO> collect = vo.getAnswers().stream()
-                    .sorted(Comparator.comparing(AnswerVO::getSort)).collect(Collectors.toList());
+
+//            List<AnswerVO> collect = vo.getAnswers().stream()
+//                    .sorted(Comparator.comparing(AnswerVO::getSort)).collect(Collectors.toList());
+//
+//            vo.setAnswers(collect);
+
+            List<AnswerVO> answerList = vo.getAnswers();
+
+            // 1. 收集已有的非空 sort 值
+            Set<Integer> usedSorts = answerList.stream()
+                    .map(AnswerVO::getSort)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toSet());
+
+            // 2. 为 null 的元素分配不冲突的默认值(从1开始递增)
+            int nextDefault = 1;
+            for (AnswerVO answer : answerList) {
+                if (answer.getSort() == null) {
+                    // 找到下一个未使用的最小整数
+                    while (usedSorts.contains(nextDefault)) {
+                        nextDefault++;
+                    }
+                    answer.setSort(nextDefault);
+                    usedSorts.add(nextDefault); // 标记为已使用
+                    nextDefault++; // 继续下一个起始值(可选,也可以不加,但为了效率建议加)
+                }
+            }
+
+            // 3. 按 sort 升序排序
+            List<AnswerVO> collect = answerList.stream()
+                    .sorted(Comparator.comparing(AnswerVO::getSort))
+                    .collect(Collectors.toList());
 
             vo.setAnswers(collect);
         }
@@ -1322,9 +1352,10 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
     @Override
     public R bindUser(CollectionBindUserParam param) {
         //TODO 是否判断销售后续再做
-        if (param.getCompanyUserId() != null) {
-            return R.error("销售人员无法绑定");
-        }
+        log.error("-----------------销售id:{}",param.getCompanyUserId());
+//        if (param.getCompanyUserId() != null) {
+//            return R.error("销售人员无法绑定");
+//        }
         if (param.getUserId() == null) {
             return R.error("用户参数错误");
         }
@@ -1475,6 +1506,17 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
         fsUserInformationCollectionMapper.updateFsUserInformationCollection(sourceInfo);
     }
 
+    @Override
+    public List<FsUserInformationCollectionOverviewVo> fullyCollectionInfoList(FsUserInformationCollectionOverviewDTO queryDto) {
+        queryDto.setCompleteStatus(1);//已完善信息标识
+        PageHelper.startPage(queryDto.getPageNum(), queryDto.getPageSize());
+        List<FsUserInformationCollectionOverviewVo> resultList=fsUserInformationCollectionMapper.selectUserInformationCollectionOverviewByPage(queryDto);
+        if (CollectionUtils.isEmpty(resultList)){
+            return Collections.emptyList();
+        }
+        return resultList;
+    }
+
     /**
      * 校验必填备注:对于 open=true 且被勾选的选项,必须填写备注文本
      *
@@ -1511,13 +1553,11 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
 
             Map<Integer, Boolean> optionOpenMap = openConfigMap.get(title);
             if (optionOpenMap == null) {
-                log.error("模板中未找到该问题:{}", title);
                 continue;
             }
 
             List<Integer> selectedValues = answer.getValue();
             if (CollectionUtils.isEmpty(selectedValues)) {
-                log.error("该问题未选择任何选项:{}", title);
                 continue;
             }
 
@@ -1527,9 +1567,6 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
                 for (AnswerVO.Remarks remark : answer.getRemarksList()) {
                     if (StringUtils.isNotBlank(remark.getText())) {
                         remarkMap.put(remark.getValue(), remark.getText().trim());
-                        log.error("添加备注映射:{} -> {}", remark.getValue(), remark.getText());
-                    } else {
-                        log.error("备注文本为空白,跳过添加:{} -> '{}'", remark.getValue(), remark.getText());
                     }
                 }
             }
@@ -1538,10 +1575,8 @@ public class FsUserInformationCollectionServiceImpl extends ServiceImpl<FsUserIn
             for (Integer val : selectedValues) {
                 if (Boolean.TRUE.equals(optionOpenMap.get(val))) {
                     String text = remarkMap.get(val);
-                    log.error("检查选项 {} (open=true),备注文本:'{}'", val, text);
 
                     if (StringUtils.isBlank(text)) {
-                        log.warn("必填备注缺失:title={}, optionValue={}", title, val);
                         return false;
                     }
                 }

+ 35 - 0
fs-service/src/main/resources/mapper/hisStore/FsUserInformationCollectionMapper.xml

@@ -78,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="thirdPartyUserId != null "> and third_party_user_id = #{thirdPartyUserId}</if>
             <if test="fillFlag != null "> and fill_flag = #{fillFlag}</if>
             <if test="completeStatus != null "> and complete_status = #{completeStatus}</if>
+            <if test="qwTag != null "> and qw_tag = #{qwTag}</if>
         </where>
     </select>
     
@@ -132,6 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         infocollect.user_phone_four,
         infocollect.allergy,
         infocollect.remark,
+        infocollect.qw_tag,
         cu.nick_name,
         fd.doctor_name
         FROM fs_user_information_collection infocollect
@@ -174,6 +176,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         infocollect.user_phone_four,
         infocollect.allergy,
         infocollect.remark,
+        infocollect.qw_tag,
         cu.nick_name,
         fd.doctor_name
         FROM fs_user_information_collection infocollect
@@ -193,6 +196,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         ORDER BY infocollect.create_time DESC
     </select>
+    <select id="fullyCollectionInfoList" resultType="com.fs.hisStore.vo.FsUserInformationCollectionOverviewVo">
+        SELECT
+        infocollect.id,
+        infocollect.json_info,
+        infocollect.create_time,
+        infocollect.doctor_id,
+        infocollect.company_user_id,
+        infocollect.age,
+        infocollect.user_name,
+        infocollect.sex,
+        infocollect.user_phone_four,
+        infocollect.allergy,
+        infocollect.remark,
+        cu.nick_name,
+        fd.doctor_name
+        FROM fs_user_information_collection infocollect
+        LEFT JOIN company_user cu ON infocollect.company_user_id = cu.user_id
+        LEFT JOIN fs_doctor fd ON infocollect.doctor_id = fd.doctor_id
+        <where>
+            infocollect.user_id IS NOT NULL and infocollect.qw_tag = 1
+            <if test="userName != null and userName != ''">
+                AND infocollect.user_name LIKE CONCAT('%', #{userName}, '%')
+            </if>
+            <if test="companyUserName != null and companyUserName != ''">
+                AND cu.nick_name LIKE CONCAT('%', #{companyUserName}, '%')
+            </if>
+            <if test="doctorName != null and doctorName != ''">
+                AND fd.doctor_name LIKE CONCAT('%', #{doctorName}, '%')
+            </if>
+        </where>
+        ORDER BY infocollect.create_time DESC
+    </select>
 
     <insert id="insertFsUserInformationCollection" parameterType="FsUserInformationCollection" useGeneratedKeys="true" keyProperty="id">
         insert into fs_user_information_collection