gaodm 5 роки тому
батько
коміт
b57b763208

+ 26 - 0
xlcs-service/src/main/java/com/diagbot/config/IdcConfigurer.java

@@ -0,0 +1,26 @@
+package com.diagbot.config;
+
+//import com.diagbot.idc.InvisibleIdCreater;
+
+import com.diagbot.idc.VisibleIdCreater;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: ID生成器配置
+ * @author: gaodm
+ * @time: 2018/9/20 10:43
+ */
+@Configuration
+public class IdcConfigurer {
+
+    @Bean
+    public VisibleIdCreater visibleIdCreater() {
+        return new VisibleIdCreater(0, 0);
+    }
+
+    //    @Bean
+    //    public InvisibleIdCreater invisibleIdCreater() {
+    //        return new InvisibleIdCreater(0, 0);
+    //    }
+}

+ 6 - 2
xlcs-service/src/main/java/com/diagbot/entity/InquiryInfo.java

@@ -3,7 +3,6 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -135,13 +134,18 @@ public class InquiryInfo implements Serializable {
     /**
      * 用户授权id
      */
-    private String userId;
+    private String mpiId;
 
     /**
      * 公众号id
      */
     private String appId;
 
+    /**
+     * 机器ID
+     */
+    private String machineId;
+
     /**
      * 备注
      */

+ 14 - 0
xlcs-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -13,6 +13,7 @@ import com.diagbot.entity.Request;
 import com.diagbot.entity.Response;
 import com.diagbot.enums.IdTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.idc.VisibleIdCreater;
 import com.diagbot.service.impl.InquiryDetailServiceImpl;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
@@ -26,6 +27,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.HospitalVO;
 import com.diagbot.vo.InquiryDetailVO;
+import com.diagbot.vo.InquiryMechVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
 import com.diagbot.vo.SaveInquiryDetailVO;
@@ -62,6 +64,9 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
     @Qualifier("inquiryDetailServiceImpl")
     private InquiryDetailServiceImpl inquiryDetailService;
 
+    @Autowired
+    private VisibleIdCreater visibleIdCreater;
+
     @Value("${nali.apiUrl}")
     private String apiUrl;
     @Value("${nali.appKey}")
@@ -123,6 +128,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
                     .set(StringUtil.isNotBlank(saveInquiryVO.getDepressionRange()), "depression_range", saveInquiryVO.getDepressionRange())
                     .set(StringUtil.isNotBlank(saveInquiryVO.getDepressionJudge()), "depression_judge", saveInquiryVO.getDepressionJudge())
                     .set(StringUtil.isNotBlank(saveInquiryVO.getDepressionAdvise()), "depression_advise", saveInquiryVO.getDepressionAdvise())
+                    .set(StringUtil.isNotBlank(saveInquiryVO.getMachineId()), "machine_id", saveInquiryVO.getMachineId())
                     .set("mpi_id", saveInquiryVO.getMpiId())
                     .set("app_id", saveInquiryVO.getAppId())
                     .eq("id", inquiryInfo.getId())
@@ -176,10 +182,18 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         return this.getPatList(inquiryPatVO);
     }
 
+    public String getMachineId() {
+        return visibleIdCreater.getNextId(6).toString();
+    }
+
     public List<InquiryDTO> getPatInquiryFac(InquiryPatInquiryVO inquiryPatInquiryVO) {
         return this.getPatInquiryList(inquiryPatInquiryVO);
     }
 
+    public List<InquiryDTO> getInquirysByMech(InquiryMechVO inquiryMechVO){
+        return this.getInquirysByMechId(inquiryMechVO);
+    }
+
     public List<InquiryDetail> getDetail(InquiryDetailVO inquiryDetailVO) {
         List<InquiryDetail> list = inquiryDetailFacade.list(new QueryWrapper<InquiryDetail>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())

+ 36 - 0
xlcs-service/src/main/java/com/diagbot/idc/AbstractIdCreater.java

@@ -0,0 +1,36 @@
+package com.diagbot.idc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: ID生成抽象类接口
+ * @author: gaodm
+ * @time: 2018/9/5 9:20
+ */
+public abstract class AbstractIdCreater<T> implements IdCreater<T> {
+
+    protected int machineId;
+    protected int dataCenterId;
+
+    public AbstractIdCreater(int machineId, int dataCenterId) {
+        this.machineId = machineId;
+        this.dataCenterId = dataCenterId;
+    }
+
+    @Override
+    public abstract Long getNextId(T param);
+
+    @Override
+    public List<Long> getNextIds(T param, int size) {
+        List<Long> longs = new ArrayList<>(size);
+        for (int i = 0; i < size; i++) {
+            longs.add(getNextId(param));
+        }
+        return longs;
+    }
+
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+}

+ 26 - 0
xlcs-service/src/main/java/com/diagbot/idc/IdCreater.java

@@ -0,0 +1,26 @@
+package com.diagbot.idc;
+
+import java.util.List;
+
+/**
+ * @Description: ID生成接口
+ * @author: gaodm
+ * @time: 2018/9/5 9:21
+ */
+public interface IdCreater<T> {
+
+    /**
+     * 生成一个id
+     *
+     * @return 生成的id
+     */
+    Long getNextId(T param);
+
+    /**
+     * 批量生成id
+     *
+     * @param size 生成数量
+     * @return 生成的id列表
+     */
+    List<Long> getNextIds(T param, int size);
+}

+ 62 - 0
xlcs-service/src/main/java/com/diagbot/idc/InvisibleIdCreater.java

@@ -0,0 +1,62 @@
+package com.diagbot.idc;//package com.diagbot.idc;
+//
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Qualifier;
+//import org.springframework.dao.DataAccessException;
+//import org.springframework.data.redis.connection.RedisConnection;
+//import org.springframework.data.redis.core.RedisCallback;
+//import org.springframework.data.redis.core.RedisTemplate;
+//
+//import java.util.List;
+//
+///**
+// * @Description: 不可见id由redis生成
+// * @author: gaodm
+// * @time: 2018/9/5 9:21
+// */
+//@SuppressWarnings("unchecked")
+//@Slf4j
+//public class InvisibleIdCreater extends AbstractIdCreater<Class> {
+//
+//    @Autowired
+//    @Qualifier("redisTemplateForIdc")
+//    RedisTemplate redisTemplate;
+//
+//    public InvisibleIdCreater(int machineId, int dataCenterId) {
+//        super(machineId, dataCenterId);
+//    }
+//
+//    @Override
+//    public Long getNextId(Class param) {
+//        final byte[] redis_key = redisTemplate.getKeySerializer().serialize("id_" + param.getName());
+//        Object execute = redisTemplate.execute(new RedisCallback() {
+//            @Override
+//            public Long doInRedis(RedisConnection connection) throws DataAccessException {
+//                Long incr = connection.incr(redis_key);
+//                return incr;
+//            }
+//        });
+//        return (Long) execute;
+//    }
+//
+//    @Override
+//    public List<Long> getNextIds(Class param, final int size) {
+//        final byte[] rawKey = redisTemplate.getKeySerializer().serialize("id_" + param.getName());
+//        //pipeline
+//        RedisCallback<List<Object>> pipelineCallback = new RedisCallback<List<Object>>() {
+//            @Override
+//            public List<Object> doInRedis(RedisConnection connection) throws DataAccessException {
+//                connection.openPipeline();
+//                for (int i = 0; i < size; i++) {
+//                    connection.incr(rawKey);
+//                }
+//                return connection.closePipeline();
+//            }
+//        };
+//
+//        List<Long> results = (List<Long>) redisTemplate.execute(pipelineCallback);
+//        return results;
+//    }
+//
+//}

+ 71 - 0
xlcs-service/src/main/java/com/diagbot/idc/VisibleIdCreater.java

@@ -0,0 +1,71 @@
+package com.diagbot.idc;
+
+
+import com.diagbot.util.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.commons.lang3.time.DateUtils;
+
+import java.util.Calendar;
+
+/**
+ * @Description: 可见id每秒递增
+ * @author: gaodm
+ * @time: 2018/9/5 10:45
+ */
+@Slf4j
+public class VisibleIdCreater extends AbstractIdCreater<Integer> {
+
+    private long lastTimestamp = -1L;
+
+    private long sequence = 0L;
+    private long sequenceMask = 9999;
+
+    public VisibleIdCreater(int machineId, int dataCenterId) {
+        super(machineId, dataCenterId);
+    }
+
+    @Override
+    /**
+     *  对外id生成规则
+     *  180905123451110001
+     *  180905 - 12345 -  1   -  1   -     1     - 0001
+     *   日期 -  秒数  - 业务 - 机器 - 数据中心 - 秒内自增
+     *  @param type 业务id 1.订单 2.交易 3.退款
+     *  @return 生成的id
+     */
+    public synchronized Long getNextId(Integer type) {
+
+        Calendar calendar = Calendar.getInstance();
+
+        long timestamp = timeGen() / 1000;
+
+        if (timestamp < lastTimestamp) {
+            log.error(String.format("clock is moving backwards. Rejecting requests until %d.", lastTimestamp));
+            throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1);
+            if (sequence > sequenceMask) {
+                //timestamp = tilNextMillis(lastTimestamp);
+                log.error(String.format("id creater sequence is full. wait to next time"));
+                return null;
+            }
+        } else {
+            sequence = getNewSequence();
+        }
+
+        lastTimestamp = timestamp;
+
+        String date = DateUtil.format(calendar.getTime(), "yyMMdd");
+        long seconds = DateUtils.getFragmentInSeconds(calendar, Calendar.DAY_OF_YEAR);
+
+        return Long.valueOf(date + String.format("%05d", seconds) + String.valueOf(type) + machineId + dataCenterId + sequence);
+    }
+
+    private long getNewSequence() {
+        return RandomUtils.nextInt(1000, 2000);
+    }
+
+}

+ 3 - 0
xlcs-service/src/main/java/com/diagbot/mapper/InquiryInfoMapper.java

@@ -4,6 +4,7 @@ import com.diagbot.dto.InquiryDTO;
 import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.InquiryMechVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
 
@@ -23,4 +24,6 @@ public interface InquiryInfoMapper extends BaseMapper<InquiryInfo> {
 
     public List<InquiryDTO> getPatInquiryList(InquiryPatInquiryVO inquiryPatInquiryVO);
 
+    public List<InquiryDTO> getInquirysByMechId(InquiryMechVO inquiryMechVO);
+
 }

+ 3 - 0
xlcs-service/src/main/java/com/diagbot/service/InquiryInfoService.java

@@ -4,6 +4,7 @@ import com.diagbot.dto.InquiryDTO;
 import com.diagbot.dto.InquiryPatDTO;
 import com.diagbot.entity.InquiryInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.InquiryMechVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
 
@@ -22,4 +23,6 @@ public interface InquiryInfoService extends IService<InquiryInfo> {
     public List<InquiryPatDTO> getPatList(InquiryPatVO inquiryPatVO);
 
     public List<InquiryDTO> getPatInquiryList(InquiryPatInquiryVO inquiryPatInquiryVO);
+
+    public List<InquiryDTO> getInquirysByMechId(InquiryMechVO inquiryMechVO);
 }

+ 6 - 0
xlcs-service/src/main/java/com/diagbot/service/impl/InquiryInfoServiceImpl.java

@@ -6,6 +6,7 @@ import com.diagbot.entity.InquiryInfo;
 import com.diagbot.mapper.InquiryInfoMapper;
 import com.diagbot.service.InquiryInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.InquiryMechVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
 import org.springframework.stereotype.Service;
@@ -33,4 +34,9 @@ public class InquiryInfoServiceImpl extends ServiceImpl<InquiryInfoMapper, Inqui
         return baseMapper.getPatInquiryList(inquiryPatInquiryVO);
     }
 
+    @Override
+    public List<InquiryDTO> getInquirysByMechId(InquiryMechVO inquiryMechVO){
+        return baseMapper.getInquirysByMechId(inquiryMechVO);
+    }
+
 }

+ 27 - 0
xlcs-service/src/main/java/com/diagbot/vo/InquiryMechVO.java

@@ -0,0 +1,27 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/2/3 9:50
+ */
+@Getter
+@Setter
+public class InquiryMechVO {
+    private static final long serialVersionUID = 1L;
+
+    @NotBlank(message = "请输入医院名称")
+    private String hospitalCode;
+
+    /**
+     * 机器ID
+     */
+    @NotBlank(message = "请输入机器ID")
+    private String machineId;
+
+}

+ 3 - 0
xlcs-service/src/main/java/com/diagbot/vo/SaveInquiryVO.java

@@ -80,6 +80,9 @@ public class SaveInquiryVO {
     @ApiModelProperty(value = "公众号Id")
     private String appId;
 
+    @ApiModelProperty(value = "机器Id")
+    private String machineId;
+
     @ApiModelProperty(value = "链接来源 菜单问诊from=1,菜单挂号from=2,公众号问诊from=3,当日挂号from=4,心理测试from=5", required = true)
     @NotBlank(message = "链接来源必传")
     private String from;

+ 18 - 0
xlcs-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.SaveInquiryDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.facade.InquiryInfoFacade;
 import com.diagbot.vo.InquiryDetailVO;
+import com.diagbot.vo.InquiryMechVO;
 import com.diagbot.vo.InquiryPatInquiryVO;
 import com.diagbot.vo.InquiryPatVO;
 import com.diagbot.vo.SaveInquiryVO;
@@ -16,6 +17,7 @@ import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -60,6 +62,13 @@ public class InquiryInfoController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "生成全局唯一机器编码[by:gaodm]",
+            notes = "")
+    @PostMapping("/getMachineId")
+    @SysLogger("getMachineId")
+    public RespDTO<String> getMachineId(){
+        return RespDTO.onSuc(inquiryInfoFacade.getMachineId());
+    }
 
     @ApiOperation(value = "获取机构下病人病历[by:zhoutg]",
             notes = "hospitalCode:医院名称<br>" +
@@ -74,6 +83,15 @@ public class InquiryInfoController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "获取机构下病人病历[by:gaodm]",
+            notes = "hospitalCode:医院名称<br>" +
+                    "machineId:机器ID<br>")
+    @PostMapping("/getInquirysByMech")
+    @SysLogger("getInquirysByMech")
+    public RespDTO<List<InquiryDTO>> getInquirysByMech(@RequestBody @Validated InquiryMechVO inquiryMechVO){
+        return RespDTO.onSuc(inquiryInfoFacade.getInquirysByMech(inquiryMechVO));
+    }
+
 
     @ApiOperation(value = "获取病历详情[by:zhoutg]",
             notes = "id:病历id<br>")

+ 12 - 0
xlcs-service/src/main/resources/mapper/InquiryInfoMapper.xml

@@ -29,6 +29,7 @@
         <result column="depression_advise" property="depressionAdvise" />
         <result column="mpi_id" property="mpiId" />
         <result column="app_id" property="appId" />
+        <result column="machine_id" property="machineId" />
         <result column="remark" property="remark" />
     </resultMap>
 
@@ -74,4 +75,15 @@
         order by gmt_modified desc
     </select>
 
+    <select id="getInquirysByMechId" resultType="com.diagbot.dto.InquiryDTO">
+        select * from xlcs_inquiry_info where is_deleted = 'N'
+        <if test="hospitalCode != null and hospitalCode != '' ">
+            and hospital_code = #{hospitalCode}
+        </if>
+        <if test="machineId != null and machineId != '' ">
+            and machine_id = #{machineId}
+        </if>
+        order by gmt_modified desc
+    </select>
+
 </mapper>