Sfoglia il codice sorgente

禁止销售药品功能

yjwang 1 settimana fa
parent
commit
e7b0d64a0f

+ 18 - 0
fs-service/src/main/java/com/fs/hisStore/dto/ForbiddenDrugItemDTO.java

@@ -0,0 +1,18 @@
+package com.fs.hisStore.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 禁止药品项
+ * **/
+@Data
+public class ForbiddenDrugItemDTO implements Serializable {
+    private Long id; // 唯一标识
+    private String name; // 禁止品种名称
+    private String type; // 类型(1=政策禁止,2=单方制剂禁止,3=剂型禁止,4=兴奋剂禁止)
+    private Integer sortNum; // 排序号
+    private String exceptionKey; // 例外关键词
+    private String remark; // 备注
+}

+ 15 - 16
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java

@@ -31,10 +31,12 @@ import com.fs.his.vo.FsStoreProductListSVO;
 import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.config.MedicalMallConfig;
 import com.fs.hisStore.domain.*;
+import com.fs.hisStore.dto.ForbiddenDrugItemDTO;
 import com.fs.hisStore.dto.FsStoreProductScrmInfoDTO;
 import com.fs.hisStore.mapper.*;
 import com.fs.hisStore.param.FsStoreCartCountParam;
 import com.fs.hisStore.service.IFsStoreProductCategoryScrmService;
+import com.fs.hisStore.util.ForbiddenDrugListManager;
 import com.fs.hisStore.utils.StoreAuditLogUtil;
 import com.fs.hisStore.util.BusinessScopeProductTypeUtil;
 import com.fs.statis.dto.ModifyMoreDTO;
@@ -111,6 +113,12 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
     @Autowired
     private IFsStoreProductCategoryScrmService fsStoreProductCategoryService;
 
+    private ForbiddenDrugListManager forbiddenListManager = new ForbiddenDrugListManager();
+
+    public void init() {
+        forbiddenListManager.initDefaultList();
+    }
+
     /**
      * 查询商品
      *
@@ -453,7 +461,13 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
         }
 
         product.setBusinessLink(param.getBusinessLink());
-        //校验店铺资质信息
+
+        //校验是否药品网络销售禁止清单
+        if(product.getIsDrug().equals("1")){//药品进入校验
+
+
+        }
+
         //获取店铺
         FsStoreScrm store = fsStoreScrmService.selectFsStoreByStoreId(product.getStoreId());
         if (store == null || 1 != store.getStatus()) {
@@ -1487,21 +1501,6 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
             }
         }
         return productTypeName;
-//        if (productType == null) {
-//            return "";
-//        }
-//        switch (productType) {
-//            case 1:
-//                return "乙类非处方药";
-//            case 2:
-//                return "处方药";
-//            case 3:
-//                return "保健食品";
-//            case 4:
-//                return "III类医疗器械";
-//            default:
-//                return "";
-//        }
     }
 
     /**

+ 112 - 0
fs-service/src/main/java/com/fs/hisStore/util/ForbiddenDrugListManager.java

@@ -0,0 +1,112 @@
+package com.fs.hisStore.util;
+
+import com.fs.hisStore.dto.ForbiddenDrugItemDTO;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ForbiddenDrugListManager {
+    private List<ForbiddenDrugItemDTO> forbiddenDrugList = new ArrayList<>();
+    private Long nextId = 1L;
+
+    /**
+     * 添加禁止药品(类似节目单添加节目)
+     * @param name 禁止品种名称
+     * @param type 类型1-4
+     * @param exceptionKey 关键字
+     * @param remark 备注
+     */
+    public void addItem(String name, String type, String exceptionKey, String remark) {
+        ForbiddenDrugItemDTO item = new ForbiddenDrugItemDTO();
+        item.setId(nextId++);
+        item.setName(name);
+        item.setType(type);
+        item.setExceptionKey(exceptionKey);
+        item.setRemark(remark);
+        int maxSort = forbiddenDrugList.stream().mapToInt(ForbiddenDrugItemDTO::getSortNum).max().orElse(0);
+        item.setSortNum(maxSort + 1);
+        forbiddenDrugList.add(item);
+        sortList();
+    }
+
+    /**
+     * 删除禁止药品
+     * @param id 禁止项ID
+     */
+    public boolean removeItem(Long id) {
+        return forbiddenDrugList.removeIf(item -> id.equals(item.getId()));
+    }
+
+    /**
+     * 调整排序
+     * @param id 禁止项ID
+     * @param direction 方向
+     */
+    public void adjustSort(Long id, String direction) {
+        ForbiddenDrugItemDTO target = forbiddenDrugList.stream()
+                .filter(item -> id.equals(item.getId()))
+                .findFirst()
+                .orElse(null);
+        if (target == null) return;
+
+        int targetIndex = forbiddenDrugList.indexOf(target);
+        int swapIndex = "up".equals(direction) ? targetIndex - 1 : targetIndex + 1;
+        if (swapIndex < 0 || swapIndex >= forbiddenDrugList.size()) return;
+        ForbiddenDrugItemDTO swapItem = forbiddenDrugList.get(swapIndex);
+        int tempSort = target.getSortNum();
+        target.setSortNum(swapItem.getSortNum());
+        swapItem.setSortNum(tempSort);
+        sortList();
+    }
+
+    /**
+     * 按排序号升序排列清单
+     */
+    private void sortList() {
+        forbiddenDrugList = forbiddenDrugList.stream()
+                .sorted(Comparator.comparingInt(ForbiddenDrugItemDTO::getSortNum))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取按顺序排列的禁止清单
+     */
+    public List<ForbiddenDrugItemDTO> getSortedForbiddenList() {
+        return new ArrayList<>(forbiddenDrugList);
+    }
+
+    /**
+     * 初始化默认禁止清单
+     */
+    public void initDefaultList() {
+        //政策禁止类
+        addItem("疫苗", "1", "", "政策明确禁止");
+        addItem("血液制品", "1", "", "政策明确禁止");
+        addItem("麻醉药品", "1", "", "政策明确禁止");
+        addItem("精神药品", "1", "", "政策明确禁止");
+        addItem("医疗用毒性药品", "1", "", "政策明确禁止");
+        addItem("放射性药品", "1", "", "政策明确禁止");
+        addItem("药品类易制毒化学品", "1", "", "政策明确禁止");
+        addItem("医疗机构制剂", "1", "", "政策明确禁止");
+        addItem("中药配方颗粒", "1", "", "政策明确禁止");
+
+        //剂型禁止类
+        addItem("注射剂", "3", "降糖", "降糖类注射剂例外");
+        addItem("含麻黄碱类复方制剂", "3", "麻黄", "含麻黄中成药例外");
+        addItem("含麻醉药品口服复方制剂", "3", "", "无例外");
+        addItem("含曲马多口服复方制剂", "3", "", "无例外");
+        addItem("右美沙芬口服单方制剂", "3", "", "无例外");
+
+        //兴奋剂禁止类
+        addItem("蛋白同化制剂", "4", "胰岛素", "胰岛素例外");
+        addItem("肽类激素", "4", "胰岛素", "胰岛素例外");
+
+        //外用剂型
+        String[] singleDrugs = {"地高辛", "丙吡胺", "奎尼丁", "哌唑嗪", "普鲁卡因胺", "普罗帕酮", "胺碘酮", "奎宁"};
+        for (String drug : singleDrugs) {
+            addItem(drug, "2", "外用", "外用剂型例外");
+        }
+    }
+}