Browse Source

feature: 药房客户端处方列表下载优化

wuyongyi 2 years ago
parent
commit
d9a62fe2e0

+ 2 - 0
config_fillters/filters-dev.properties

@@ -19,4 +19,6 @@ test.doctor.ids=10178,112,10179,10470,7,10533
 test.admin.ids=1,7,10
 test.doctor.codes=169
 
+ywt.wxsite.domain=m-qa.ywtinfo.com
+ywt.mgadpi.domain=mgapi-qa.ywtinfo.com
 

+ 35 - 0
src/main/java/com/ywt/mg/configs/DomainConfigurer.java

@@ -0,0 +1,35 @@
+package com.ywt.mg.configs;
+
+import com.ywt.mg.core.utils.Checker;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DomainConfigurer {
+    @Value("${ywt.wxsite.domain}")
+    private String ywtWxsiteDomainStr;
+
+    public String getHttpsYwtWxsiteDomain() {
+        return Checker.getStringValue("https://" + this.ywtWxsiteDomainStr);
+    }
+
+    public String getHttpYwtWxsiteDomain() {
+        return Checker.getStringValue("http://" + this.ywtWxsiteDomainStr);
+    }
+
+
+
+    @Value("${ywt.mgadpi.domain}")
+    private String ywtMgadpiDomainStr;
+
+
+    public String getYwtHttpsMgapiDomain(){
+        return Checker.getStringValue("https://"+this.ywtMgadpiDomainStr);
+    }
+
+    public String getYwtHttpMgapiDomain(){
+        return Checker.getStringValue("http://"+this.ywtMgadpiDomainStr);
+    }
+
+
+}

+ 44 - 6
src/main/java/com/ywt/mg/web/controllers/pharmacy/PharmacyController.java

@@ -1,9 +1,12 @@
 package com.ywt.mg.web.controllers.pharmacy;
 
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.ywt.mg.configs.DomainConfigurer;
 import com.ywt.mg.core.MGRight;
 import com.ywt.mg.core.MGRightTypeDef;
 import com.ywt.mg.core.utils.Checker;
+import com.ywt.mg.core.utils.RandomUtil;
 import com.ywt.mg.core.utils.serializers.JsonSerializer;
 import com.ywt.mg.domain.models.ConstantDef;
 import com.ywt.mg.params.downloadRecord.DownloadFileRequest;
@@ -15,18 +18,19 @@ import com.ywt.mg.services.DownloadRecordService;
 import com.ywt.mg.services.IdGenerator;
 import com.ywt.mg.services.PharmacyService;
 import com.ywt.mg.web.BaseResponse;
+import com.ywt.mg.web.DataResponse;
 import com.ywt.mg.web.controllers.hospital.HospNatOrderController;
 import io.swagger.annotations.ApiOperation;
+import org.eclipse.jetty.util.UrlEncoded;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.Base64;
+import java.util.Map;
 
 @RestController("/pharmacy")
 @RequestMapping({"/pharmacy"})
@@ -47,6 +51,9 @@ public class PharmacyController {
     @Autowired
     private PharmacyService pharmacyService;
 
+    @Autowired
+    private DomainConfigurer domainConfigurer;
+
 
     @ApiOperation(value = "按条件查询下载记录列表")
     @RequestMapping(value = {"/downloadRecordList"}, method = RequestMethod.POST)
@@ -59,10 +66,41 @@ public class PharmacyController {
         return downloadRecordService.queryPharDownloadRecordList(request);
     }
 
+    @MGRight(rightCode = {"/pharmacy/downloadPrescriptionFile"}, type = MGRightTypeDef.Right)
+    @RequestMapping({"/downloadPrescriptionFile"})
+    BaseResponse downloadPrescriptionlist(@RequestBody Map<String, Object> map) {
+        DataResponse<Object> dataResponse = new DataResponse<>();
+        try {
+//            map.put("pharmacyId", userService.getPharmacyId());
+//            map.put("adminId", userService.getAdminId());
+
+            String uData = Base64.getEncoder().encodeToString(JsonSerializer.toJson(map).getBytes());
+            String randomValue = RandomUtil.getRandomCode(8, 3);
+            String url = domainConfigurer.getYwtHttpsMgapiDomain() + "/downloadService/pharmacy/downloadFile?k=" + UrlEncoded.encodeString(uData) + "&randomValue=" + randomValue;
+            dataResponse.setData(url);
+            return dataResponse.succeed();
+        } catch (Exception e) {
+            logger.error("/pharmacyPrescription/downloadPrescriptionList:{},{}", JsonSerializer.toJson(map), e.getMessage(), e);
+            return dataResponse.failed(BaseResponse.PARAMETER_ERROR, "处理失败");
+        }
+    }
+
+    private String getStrFromJsonNode(JsonNode node, String def) {
+        if (node == null) return def;
+        return node.asText(def);
+    }
+
+
     @ApiOperation(value = "下载文件")
-    @RequestMapping(value = {"/downloadFile"}, method = RequestMethod.GET)
+    @RequestMapping(value = {"/downloadFile"})
     @MGRight(menuCode = {"/pharmacy/downloadFile"}, type = MGRightTypeDef.Menu | MGRightTypeDef.Logined)
-    public void downloadFile(@Validated DownloadFileRequest request, HttpServletResponse httpServletResponse) {
+    public void downloadFile(@RequestParam(value = "k") String k,  HttpServletResponse httpServletResponse) {
+        String key = new String(Base64.getDecoder().decode(k));
+        JsonNode jsonNode = JsonSerializer.readToNode(key);
+        String downloadId = getStrFromJsonNode(jsonNode.get("id"), "0");
+        int downId = Integer.parseInt(downloadId);
+        DownloadFileRequest request = new DownloadFileRequest();
+        request.setDownloadRecordId(downId);
         downloadRecordService.downloadFile(request, httpServletResponse);
     }
 

+ 5 - 1
src/main/resources/application.properties

@@ -59,4 +59,8 @@ spring.datasource.ywtMeal.initial-size=1
 spring.datasource.ywtMeal.validation-query=SELECT 1
 spring.datasource.ywtMeal.test-on-borrow=false
 spring.datasource.ywtMeal.test-while-idle=true
-spring.datasource.ywtMeal.time-between-eviction-runs-millis=18800
+spring.datasource.ywtMeal.time-between-eviction-runs-millis=18800
+
+#域名
+ywt.wxsite.domain=@ywt.wxsite.domain@
+ywt.mgadpi.domain=@ywt.mgadpi.domain@