Przeglądaj źródła

1.完善订单档期业务 2.新增生成订单档期定时任务 3.新增生成订单档期日志

wjj 1 tydzień temu
rodzic
commit
44cb150264

+ 51 - 2
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -221,6 +221,12 @@ public class Task {
     @Autowired
     private IQwSopTempVoiceService qwSopTempVoiceService;
 
+    @Autowired
+    private FsOrderSopLogMapper fsOrderSopLogMapper;
+
+    @Autowired
+    private IQwExternalContactService qwExternalContactService;
+
     public static final String SOP_TEMP_VOICE_KEY = "sop:tempVoice";
     public void syncExpressToWx() {
         List<FsWxExpressTask> fsWxExpressTasks = fsWxExpressTaskMapper.selectPendingData();
@@ -1836,7 +1842,7 @@ public class Task {
     }
 
     //用户信息采集 自动退款
-    void autoRefund(){
+    public void autoRefund(){
         List<FsUserInformationCollection> collections = userInformationCollectionMapper.selectAutoRefundOrderCode();
         if (ObjectUtil.isNotEmpty(collections)) {
             for(FsUserInformationCollection collection :collections) {
@@ -1853,7 +1859,7 @@ public class Task {
     }
 
     //不包含套餐包,医生已确认用户信息采集自动确认
-    void autoConfirm(){
+    public void autoConfirm(){
         List<FsUserInformationCollection> collections = userInformationCollectionMapper.selectAutoConfirm();
         if (ObjectUtil.isNotEmpty(collections)) {
             for(FsUserInformationCollection collection :collections) {
@@ -1871,6 +1877,49 @@ public class Task {
         }
     }
 
+    public void orderSop(){
+        logger.info("开始生成档期标签");
+        List<FsOrderSopLog> fsOrderSopLogs = fsOrderSopLogMapper.selectFsOrderSopLogNoSopList();
+        if (CollectionUtils.isNotEmpty(fsOrderSopLogs)) {
+            for (FsOrderSopLog fsOrderSopLog : fsOrderSopLogs) {
+                logger.info("生成档期标签日志信息:{}",fsOrderSopLog);
+                try {
+                    int i = 0;
+                    List<String> names = qwExternalContactService.selectTagNameByFsUserId(fsOrderSopLog.getFsUserId());
+                    if (fsOrderSopLog.getType() == 1) {
+                        //信息采集订单
+                        FsStoreOrder fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderId(fsOrderSopLog.getOrderId());
+                        if (fsStoreOrder != null && fsStoreOrder.getIsPay() == 1) {
+                            FsStoreOrder map = new FsStoreOrder();
+                            map.setTagNames(JSON.toJSONString(names));
+                            map.setOrderId(fsStoreOrder.getOrderId());
+                            i = fsStoreOrderMapper.updateFsStoreOrder(map);
+                        }
+                    } else if (fsOrderSopLog.getType() == 2) {
+                        FsStoreOrderScrm fsStoreOrderScrm = fsStoreOrderScrmMapper.selectFsStoreOrderById(fsOrderSopLog.getOrderId());
+                        if (fsStoreOrderScrm != null) {
+                            FsStoreOrderScrm map = new FsStoreOrderScrm();
+                            map.setTagNames(JSON.toJSONString(names));
+                            map.setId(fsStoreOrderScrm.getId());
+                            i = fsStoreOrderScrmMapper.updateFsStoreOrder(map);
+                        }
+                    }
+                    if (i > 0) {
+                        FsOrderSopLog map = new FsOrderSopLog();
+                        map.setId(fsOrderSopLog.getId());
+                        map.setStatus(1);
+                        map.setUpdateTime(new Date());
+                        fsOrderSopLogMapper.updateFsOrderSopLog(map);
+                    }
+                    Thread.sleep(1000);
+                } catch (Exception e) {
+                    logger.info("生成档期标签失败,日志id:{}", fsOrderSopLog.getId());
+                    continue;
+                }
+            }
+        }
+    }
+
 
 
 }

+ 38 - 0
fs-service/src/main/java/com/fs/his/domain/FsOrderSopLog.java

@@ -0,0 +1,38 @@
+package com.fs.his.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 订单生成档期标签日志对象 fs_order_sop_log
+ *
+ * @author fs
+ * @date 2025-11-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FsOrderSopLog extends BaseEntity{
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Long orderId;
+
+    /** 类型:1-信息采集订单 2-商城订单 */
+    @Excel(name = "类型:1-信息采集订单 2-商城订单")
+    private Integer type;
+
+    /** 状态:0-未生成 1-已生成 */
+    @Excel(name = "状态:0-未生成 1-已生成")
+    private Integer status;
+
+    //会员id
+    private Long fsUserId;
+
+
+}

+ 65 - 0
fs-service/src/main/java/com/fs/his/mapper/FsOrderSopLogMapper.java

@@ -0,0 +1,65 @@
+package com.fs.his.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fs.his.domain.FsOrderSopLog;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * 订单生成档期标签日志Mapper接口
+ * 
+ * @author fs
+ * @date 2025-11-07
+ */
+public interface FsOrderSopLogMapper extends BaseMapper<FsOrderSopLog>{
+    /**
+     * 查询订单生成档期标签日志
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 订单生成档期标签日志
+     */
+    FsOrderSopLog selectFsOrderSopLogById(Long id);
+
+    /**
+     * 查询订单生成档期标签日志列表
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 订单生成档期标签日志集合
+     */
+    List<FsOrderSopLog> selectFsOrderSopLogList(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 新增订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    int insertFsOrderSopLog(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 修改订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    int updateFsOrderSopLog(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 删除订单生成档期标签日志
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 结果
+     */
+    int deleteFsOrderSopLogById(Long id);
+
+    /**
+     * 批量删除订单生成档期标签日志
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteFsOrderSopLogByIds(Long[] ids);
+
+    @Select("SELECT * FROM fs_order_sop_log WHERE status = 0")
+    List<FsOrderSopLog> selectFsOrderSopLogNoSopList();
+}

+ 61 - 0
fs-service/src/main/java/com/fs/his/service/IFsOrderSopLogService.java

@@ -0,0 +1,61 @@
+package com.fs.his.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.his.domain.FsOrderSopLog;
+
+/**
+ * 订单生成档期标签日志Service接口
+ * 
+ * @author fs
+ * @date 2025-11-07
+ */
+public interface IFsOrderSopLogService extends IService<FsOrderSopLog>{
+    /**
+     * 查询订单生成档期标签日志
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 订单生成档期标签日志
+     */
+    FsOrderSopLog selectFsOrderSopLogById(Long id);
+
+    /**
+     * 查询订单生成档期标签日志列表
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 订单生成档期标签日志集合
+     */
+    List<FsOrderSopLog> selectFsOrderSopLogList(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 新增订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    int insertFsOrderSopLog(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 修改订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    int updateFsOrderSopLog(FsOrderSopLog fsOrderSopLog);
+
+    /**
+     * 批量删除订单生成档期标签日志
+     * 
+     * @param ids 需要删除的订单生成档期标签日志主键集合
+     * @return 结果
+     */
+    int deleteFsOrderSopLogByIds(Long[] ids);
+
+    /**
+     * 删除订单生成档期标签日志信息
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 结果
+     */
+    int deleteFsOrderSopLogById(Long id);
+}

+ 94 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsOrderSopLogServiceImpl.java

@@ -0,0 +1,94 @@
+package com.fs.his.service.impl;
+
+import java.util.List;
+import com.fs.common.utils.DateUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fs.his.mapper.FsOrderSopLogMapper;
+import com.fs.his.domain.FsOrderSopLog;
+import com.fs.his.service.IFsOrderSopLogService;
+
+/**
+ * 订单生成档期标签日志Service业务层处理
+ * 
+ * @author fs
+ * @date 2025-11-07
+ */
+@Service
+public class FsOrderSopLogServiceImpl extends ServiceImpl<FsOrderSopLogMapper, FsOrderSopLog> implements IFsOrderSopLogService {
+
+    /**
+     * 查询订单生成档期标签日志
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 订单生成档期标签日志
+     */
+    @Override
+    public FsOrderSopLog selectFsOrderSopLogById(Long id)
+    {
+        return baseMapper.selectFsOrderSopLogById(id);
+    }
+
+    /**
+     * 查询订单生成档期标签日志列表
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 订单生成档期标签日志
+     */
+    @Override
+    public List<FsOrderSopLog> selectFsOrderSopLogList(FsOrderSopLog fsOrderSopLog)
+    {
+        return baseMapper.selectFsOrderSopLogList(fsOrderSopLog);
+    }
+
+    /**
+     * 新增订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    @Override
+    public int insertFsOrderSopLog(FsOrderSopLog fsOrderSopLog)
+    {
+        fsOrderSopLog.setCreateTime(DateUtils.getNowDate());
+        return baseMapper.insertFsOrderSopLog(fsOrderSopLog);
+    }
+
+    /**
+     * 修改订单生成档期标签日志
+     * 
+     * @param fsOrderSopLog 订单生成档期标签日志
+     * @return 结果
+     */
+    @Override
+    public int updateFsOrderSopLog(FsOrderSopLog fsOrderSopLog)
+    {
+        fsOrderSopLog.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateFsOrderSopLog(fsOrderSopLog);
+    }
+
+    /**
+     * 批量删除订单生成档期标签日志
+     * 
+     * @param ids 需要删除的订单生成档期标签日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsOrderSopLogByIds(Long[] ids)
+    {
+        return baseMapper.deleteFsOrderSopLogByIds(ids);
+    }
+
+    /**
+     * 删除订单生成档期标签日志信息
+     * 
+     * @param id 订单生成档期标签日志主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFsOrderSopLogById(Long id)
+    {
+        return baseMapper.deleteFsOrderSopLogById(id);
+    }
+}

+ 12 - 7
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -2,7 +2,6 @@ package com.fs.his.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.net.URLDecoder;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
@@ -63,9 +62,7 @@ import com.fs.hisapi.param.RecipeDetailParam;
 import com.fs.hisapi.service.HisApiService;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
-import com.fs.huifuPay.domain.HuifuOrderConfirm;
 import com.fs.huifuPay.domain.HuifuOrderConfirmResult;
-import com.fs.huifuPay.sdk.opps.core.utils.DateTools;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.im.dto.*;
 import com.fs.im.service.IImService;
@@ -115,7 +112,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
-    import javax.annotation.PostConstruct;
+import javax.annotation.PostConstruct;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
@@ -311,6 +308,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
     @Autowired
     private IQwExternalContactService qwExternalContactService;
 
+    @Autowired
+    private IFsOrderSopLogService fsOrderSopLogService;
+
     //ERP 类型到服务的映射
     private Map<Integer, IErpOrderService> erpServiceMap;
     @PostConstruct
@@ -873,9 +873,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         Integer packageSubType = (Integer) packageJson.get("packageSubType");
         Integer productType = (Integer) packageJson.get("productType");
         FsStoreOrder order = new FsStoreOrder();
-        //获取用户档期标签
-        List<String> names = qwExternalContactService.selectTagNameByFsUserId(packageOrder.getUserId());
-        order.setTagNames(JSON.toJSONString(names));
         //确认订单返回结果
         if (result != null && result.getResp_code().equals("00000000") && (result.getTrans_stat().equals("S") || result.getTrans_stat().equals("P"))) {
             order.setZyyDivAmount(result.getYsyAmount());
@@ -1100,6 +1097,14 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
             order.setFollowStatus(0);
         }
         if (fsStoreOrderMapper.insertFsStoreOrder(order) > 0) {
+            //插入生成订单档期日志
+            FsOrderSopLog fsOrderSopLog = new FsOrderSopLog();
+            fsOrderSopLog.setOrderId(order.getOrderId());
+            fsOrderSopLog.setStatus(0);
+            fsOrderSopLog.setFsUserId(packageOrder.getUserId());
+            fsOrderSopLog.setType(1);
+            fsOrderSopLog.setCreateTime(DateUtils.getNowDate());
+            fsOrderSopLogService.insertFsOrderSopLog(fsOrderSopLog);
             if (packageOrder.getCycle() >= followRate) {
                 FsFollow fsFollow = new FsFollow();
                 fsFollow.setTempId(FollowTempId + 0L);

+ 4 - 0
fs-service/src/main/java/com/fs/his/vo/FsStoreOrderListVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class FsStoreOrderListVO {
@@ -70,4 +71,7 @@ public class FsStoreOrderListVO {
     //发货时间
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date deliverySendTime;
+
+    //档期标签名称
+    private List<String> tagNames;
 }

+ 12 - 9
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -59,8 +59,8 @@ import com.fs.his.enums.FsStoreOrderLogEnum;
 import com.fs.his.enums.FsStoreOrderStatusEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.FsStoreOrderSalesParam;
+import com.fs.his.service.IFsOrderSopLogService;
 import com.fs.his.service.IFsPrescribeService;
-import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsUserWatchService;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.vo.*;
@@ -83,7 +83,6 @@ import com.fs.hisapi.service.HisApiService;
 import com.fs.huifuPay.domain.*;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentDelaytransConfirmrefundRequest;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
-import com.fs.huifuPay.sdk.opps.core.utils.DateTools;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.pay.pay.dto.OrderQueryDTO;
 import com.fs.pay.pay.dto.RefundDTO;
@@ -94,7 +93,6 @@ import com.fs.hisStore.constants.StoreConstants;
 import com.fs.hisStore.domain.*;
 import com.fs.hisStore.enums.*;
 import com.fs.hisStore.service.*;
-import com.fs.qw.service.IQwExternalContactService;
 import com.fs.system.service.ISysConfigService;
 import com.fs.wx.miniapp.config.WxMaProperties;
 import com.fs.ybPay.domain.OrderResult;
@@ -107,7 +105,6 @@ import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
 import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
-import jodd.util.StringUtil;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -132,7 +129,6 @@ import javax.annotation.PostConstruct;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
-import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -344,8 +340,10 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Autowired
     private WxMaProperties properties;
 
+
+
     @Autowired
-    private IQwExternalContactService qwExternalContactService;
+    private IFsOrderSopLogService fsOrderSopLogService;
 
     //ERP 类型到服务的映射
     private Map<Integer, IErpOrderService> erpServiceMap;
@@ -740,9 +738,6 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             Boolean isIntegral = false;
             //组合数据
             FsStoreOrderScrm storeOrder = new FsStoreOrderScrm();
-            //获取用户档期标签
-            List<String> names = qwExternalContactService.selectTagNameByFsUserId(userId);
-            storeOrder.setTagNames(JSON.toJSONString(names));
             storeOrder.setStoreHouseCode("CK01");
             storeOrder.setCompanyId(param.getCompanyId());
             storeOrder.setCompanyUserId(param.getCompanyUserId());
@@ -885,6 +880,14 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             if (flag == 0) {
                 return R.error("订单创建失败");
             }
+            //插入生成订单档期日志
+            FsOrderSopLog fsOrderSopLog = new FsOrderSopLog();
+            fsOrderSopLog.setOrderId(storeOrder.getId());
+            fsOrderSopLog.setStatus(0);
+            fsOrderSopLog.setFsUserId(storeOrder.getUserId());
+            fsOrderSopLog.setType(2);
+            fsOrderSopLog.setCreateTime(DateUtils.getNowDate());
+            fsOrderSopLogService.insertFsOrderSopLog(fsOrderSopLog);
             if (!isPay && storeOrder.getCompanyId() != null) {
                 // 添加订单审核
                 addOrderAudit(storeOrder);

+ 19 - 1
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -5740,8 +5740,26 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                 }
             }
             logger.info("处理后的外部联系人标签:{}",newTags);
+
             //查询sop标签
-            List<String> sopTagIds = qwSopMapper.selectSopTagIds();
+//            List<String> sopTagIds = redisCache.getCacheObject("sopTagIds:");
+//            if (CollectionUtils.isEmpty(sopTagIds)) {
+//                sopTagIds = qwSopMapper.selectSopTagIds();
+//                if(!CollectionUtils.isEmpty(sopTagIds)){
+//                    for (String s:sopTagIds) {
+//                        //多标签处理
+//                        if (s.contains(",")) {
+//                            sopTagIds.addAll(Arrays.asList(s.split(",")));
+//                        }
+//                    }
+//                    //标签去重
+//                    sopTagIds = sopTagIds.stream().distinct().collect(Collectors.toList());
+//                    //存入缓存
+//                    redisCache.setCacheObject("sopTagIds:",sopTagIds,2, TimeUnit.HOURS);
+//                }
+//            }
+            List<String> sopTagIds = qwSopService.selectSopTagIds();
+
             logger.info("SOP标签id:{}",sopTagIds);
             if (!CollectionUtils.isEmpty(sopTagIds)) {
                 //获取name

+ 1 - 1
fs-service/src/main/java/com/fs/sop/mapper/QwSopMapper.java

@@ -429,6 +429,6 @@ public interface QwSopMapper extends BaseMapper<QwSop> {
     List<QwSop> selectAllQwSopInfo(QwSop qwSop);
 
     @DataSource(DataSourceType.SOP)
-    @Select("SELECT DISTINCT tags FROM qw_sop")
+    //@Select("SELECT DISTINCT tags FROM qw_sop")
     List<String> selectSopTagIds();
 }

+ 17 - 7
fs-service/src/main/java/com/fs/sop/service/impl/QwSopServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.common.annotation.DataSource;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.DataSourceType;
 import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.PubFun;
@@ -51,6 +52,7 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -115,6 +117,9 @@ public class QwSopServiceImpl implements IQwSopService
     @Autowired
     private RocketMQTemplate rocketMQTemplate;
 
+    @Autowired
+    private RedisCache redisCache;
+
     /**
      * 查询企微sop
      *
@@ -1096,16 +1101,21 @@ public class QwSopServiceImpl implements IQwSopService
 
     @Override
     public List<String> selectSopTagIds() {
-        List<String> sopTagIds = qwSopMapper.selectSopTagIds();
+        List<String> sopTagIds = redisCache.getCacheObject("sopTagIds:");
         if(CollectionUtils.isEmpty(sopTagIds)){
-            for (String s:sopTagIds) {
-                //多标签处理
-                if (s.contains(",")) {
-                    sopTagIds.addAll(Arrays.asList(s.split(",")));
+            sopTagIds = qwSopMapper.selectSopTagIds();
+            if(CollectionUtils.isEmpty(sopTagIds)){
+                for (String s:sopTagIds) {
+                    //多标签处理
+                    if (s.contains(",")) {
+                        sopTagIds.addAll(Arrays.asList(s.split(",")));
+                    }
                 }
+                //标签去重
+                sopTagIds = sopTagIds.stream().distinct().collect(Collectors.toList());
+                //存入缓存
+                redisCache.setCacheObject("sopTagIds:",sopTagIds,2, TimeUnit.HOURS);
             }
-            //标签去重
-            sopTagIds = sopTagIds.stream().distinct().collect(Collectors.toList());
         }
         return sopTagIds;
     }

+ 78 - 0
fs-service/src/main/resources/mapper/his/FsOrderSopLogMapper.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.his.mapper.FsOrderSopLogMapper">
+    
+    <resultMap type="FsOrderSopLog" id="FsOrderSopLogResult">
+        <result property="id"    column="id"    />
+        <result property="orderId"    column="order_id"    />
+        <result property="type"    column="type"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="status"    column="status"    />
+        <result property="fsUserId"    column="fs_user_id"    />
+    </resultMap>
+
+    <sql id="selectFsOrderSopLogVo">
+        select id, order_id, type, create_time, update_time, status,fs_user_id from fs_order_sop_log
+    </sql>
+
+    <select id="selectFsOrderSopLogList" parameterType="FsOrderSopLog" resultMap="FsOrderSopLogResult">
+        <include refid="selectFsOrderSopLogVo"/>
+        <where>  
+            <if test="orderId != null "> and order_id = #{orderId}</if>
+            <if test="type != null "> and type = #{type}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+    
+    <select id="selectFsOrderSopLogById" parameterType="Long" resultMap="FsOrderSopLogResult">
+        <include refid="selectFsOrderSopLogVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertFsOrderSopLog" parameterType="FsOrderSopLog" useGeneratedKeys="true" keyProperty="id">
+        insert into fs_order_sop_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">order_id,</if>
+            <if test="type != null">type,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="status != null">status,</if>
+            <if test="fsUserId != null">fs_user_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="orderId != null">#{orderId},</if>
+            <if test="type != null">#{type},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="status != null">#{status},</if>
+            <if test="fsUserId != null">#{fsUserId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFsOrderSopLog" parameterType="FsOrderSopLog">
+        update fs_order_sop_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderId != null">order_id = #{orderId},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="fsUserId != null">fs_user_id = #{fsUserId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFsOrderSopLogById" parameterType="Long">
+        delete from fs_order_sop_log where id = #{id}
+    </delete>
+
+    <delete id="deleteFsOrderSopLogByIds" parameterType="String">
+        delete from fs_order_sop_log where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 4 - 0
fs-service/src/main/resources/mapper/sop/QwSopMapper.xml

@@ -569,4 +569,8 @@
         order by create_time desc
     </select>
 
+    <select id="selectSopTagIds" resultType="String">
+        SELECT DISTINCT tags FROM qw_sop
+    </select>
+
 </mapper>