From 2e57fd1af2be6491b8abe335f454605e5e18ba38 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Fri, 25 Nov 2022 22:15:03 +0800 Subject: [PATCH] =?UTF-8?q?:rocket:=20=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kicc/commonbiz/api/entity/MapTask.java | 4 + .../commonbiz/api/entity/MapTaskPreset.java | 4 + .../controller/MapTaskController.java | 73 +++++++++++++++++-- .../controller/MapTaskPresetController.java | 43 +++++++++++ .../service/IMapLogisticService.java | 4 + .../service/impl/MapLogisticServiceImpl.java | 55 +++++++++----- 6 files changed, 160 insertions(+), 23 deletions(-) diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTask.java b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTask.java index 030b5e3f..8c8b288b 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTask.java +++ b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTask.java @@ -96,6 +96,10 @@ public class MapTask extends CommonEntity { @ApiModelProperty("表格操作key") private String key; + @TableField(exist = false) + @ApiModelProperty("是否启动去Klab创建报告单") + private Boolean enabledCreateReport = false; + @TableField(exist = false) @ApiModelProperty("地图交接预设任务列表") private List mapTaskPreset; diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTaskPreset.java b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTaskPreset.java index 95da8f7e..7fbe839c 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTaskPreset.java +++ b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/MapTaskPreset.java @@ -95,4 +95,8 @@ public class MapTaskPreset extends CommonEntity { @ApiModelProperty("版本控制") private Integer version; + @TableField(exist = false) + @ApiModelProperty("是否启动去Klab创建报告单") + private Boolean enabledCreateReport = false; + } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java index b658fdd9..3e116edb 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskController.java @@ -1,5 +1,6 @@ package com.cloud.kicc.commonbiz.controller; +import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; @@ -8,19 +9,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.security.util.SecurityUtils; -import com.cloud.kicc.commonbiz.api.entity.MapLogisticPoint; -import com.cloud.kicc.commonbiz.api.entity.MapTask; -import com.cloud.kicc.commonbiz.api.entity.Message; +import com.cloud.kicc.commonbiz.api.entity.*; import com.cloud.kicc.commonbiz.api.enums.MapTaskStatusEnum; -import com.cloud.kicc.commonbiz.service.IMapTaskService; -import com.cloud.kicc.commonbiz.service.IMessageService; +import com.cloud.kicc.commonbiz.service.*; +import com.cloud.kicc.system.api.entity.User; +import com.cloud.kicc.system.api.feign.RemoteUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Response; import org.springframework.web.bind.annotation.*; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.util.Arrays; +import java.util.List; +import java.util.Map; /** *

@@ -38,6 +46,11 @@ public class MapTaskController { private final IMapTaskService iMapTaskService; private final IMessageService iMessageService; + private final OkHttpClient okHttpClient; + private final IMapLogisticService iMapLogisticService; + private final RemoteUserService remoteUserService; + private final HospitalService hospitalService; + private final OrgService orgService; private LambdaQueryWrapper getQueryWrapper(MapTask mapTask) { return new LambdaQueryWrapper() @@ -69,6 +82,32 @@ public class MapTaskController { @PutMapping("/update") @ApiOperation(value = "修改", notes = "修改") public R update(@RequestBody MapTask mapTask) { + if (StrUtil.isNotBlank(mapTask.getReceiptFileId()) && StrUtil.isBlank(mapTask.getBatchCode())) { + // todo: 生成每一批次操作的批次码,需求待讨论 + String batchCode = UUID.fromString(UUID.randomUUID().toString()).toString(); + mapTask.setBatchCode(batchCode); + + JSONObject jsonObject = new JSONObject(); + R user = remoteUserService.selectByUserId(mapTask.getCourierUserId(), SecurityConstants.FROM_IN); + Hospital hospital = hospitalService.getById(mapTask.getHospitalId()); + jsonObject.put("hospitalId", hospital.getKlabHospitalAccount()); + if (StrUtil.isNotBlank(mapTask.getOrgId())) { + Org org = orgService.getById(mapTask.getOrgId()); + jsonObject.put("institutionId", org.getKlabOrgAccount()); + // todo:交接点位置由自己设置 + } else jsonObject.put("institutionId", 0); + + // todo:任务科室医生还需讨论需求 + jsonObject.put("officeId", 0); + jsonObject.put("doctorId", 0); + + jsonObject.put("syUserId", user.getData().getKlabUserAccount()); + jsonObject.put("batchCode", mapTask.getBatchCode()); + jsonObject.put("taskType", mapTask.getTaskType()); + jsonObject.put("originImages", mapTask.getReceiptFileId()); + jsonObject.put("remark", mapTask.getRemarks()); + iMapLogisticService.internalSystemCreateReportForm(jsonObject); + } iMapTaskService.updateById(mapTask); return R.ok(); } @@ -111,5 +150,29 @@ public class MapTaskController { return R.ok(); } + @GetMapping("/listReport") + @ApiOperation(value = "根据批次码查询Klab报告单数据") + public R listReport(String batchCode) throws Exception{ + // 发送post请求并获得响应 + okhttp3.Request request = new okhttp3.Request + .Builder() + .url("https://openapi.kanglailab.com/api/kicc/report/listReportData?batchCode=" + batchCode) + .get() + .build(); + Response response = okHttpClient.newCall(request).execute(); + BufferedReader rd = new BufferedReader(new InputStreamReader(response.body().byteStream())); + StringBuffer result = new StringBuffer(); + String line; + while ((line = rd.readLine()) != null) { + result.append(line); + } + if (response.code() == 200) { + List list = JSONUtil.toList(result.toString(), Map.class); + return R.ok(list); + } else { + return R.error("Failed to Request the klab System!"); + } + } + } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java index 0f4e9f69..16538124 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/MapTaskPresetController.java @@ -1,14 +1,24 @@ package com.cloud.kicc.commonbiz.controller; +import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.core.constant.SecurityConstants; +import com.cloud.kicc.commonbiz.api.entity.Hospital; import com.cloud.kicc.commonbiz.api.entity.MapTaskPreset; +import com.cloud.kicc.commonbiz.api.entity.Org; +import com.cloud.kicc.commonbiz.service.HospitalService; +import com.cloud.kicc.commonbiz.service.IMapLogisticService; import com.cloud.kicc.commonbiz.service.IMapTaskPresetService; +import com.cloud.kicc.commonbiz.service.OrgService; +import com.cloud.kicc.system.api.entity.User; +import com.cloud.kicc.system.api.feign.RemoteUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -32,6 +42,10 @@ import java.util.Arrays; public class MapTaskPresetController { private final IMapTaskPresetService iMapTaskPresetService; + private final RemoteUserService remoteUserService; + private final HospitalService hospitalService; + private final OrgService orgService; + private final IMapLogisticService iMapLogisticService; private LambdaQueryWrapper getQueryWrapper(MapTaskPreset mapTaskPreset) { return new LambdaQueryWrapper() @@ -64,6 +78,35 @@ public class MapTaskPresetController { @PutMapping("/update") @ApiOperation(value = "修改", notes = "修改") public R update(@RequestBody MapTaskPreset mapTaskPreset) { + if (StrUtil.isNotBlank(mapTaskPreset.getReceiptFileId()) && StrUtil.isBlank(mapTaskPreset.getBatchCode())) { + // todo: 生成每一批次操作的批次码,需求待讨论 + String batchCode = UUID.fromString(UUID.randomUUID().toString()).toString(); + mapTaskPreset.setBatchCode(batchCode); + JSONObject jsonObject = new JSONObject(); + R user = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId(), SecurityConstants.FROM_IN); + if (StrUtil.isNotBlank(mapTaskPreset.getOrginPresetId())) { + Hospital hospital = hospitalService.getById(mapTaskPreset.getOrginPresetId()); + jsonObject.put("hospitalId", hospital.getKlabHospitalAccount()); + // todo:交接点位置由自己设置 + } else jsonObject.put("hospitalId", 0); + if (StrUtil.isNotBlank(mapTaskPreset.getDestinationPresetId())) { + Org org = orgService.getById(mapTaskPreset.getDestinationPresetId()); + jsonObject.put("institutionId", org.getKlabOrgAccount()); + // todo:交接点位置由自己设置 + } else jsonObject.put("institutionId", 0); + + // todo:任务科室医生还需讨论需求 + jsonObject.put("officeId", 0); + jsonObject.put("doctorId", 0); + + jsonObject.put("syUserId", user.getData().getKlabUserAccount()); + jsonObject.put("batchCode", mapTaskPreset); + jsonObject.put("taskType", 1); + jsonObject.put("originImages", mapTaskPreset.getReceiptFileId()); + jsonObject.put("remark", mapTaskPreset.getRemarks()); + jsonObject.put("batchCode", mapTaskPreset.getBatchCode()); + iMapLogisticService.internalSystemCreateReportForm(jsonObject); + } iMapTaskPresetService.updateById(mapTaskPreset); return R.ok(); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IMapLogisticService.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IMapLogisticService.java index 893285a2..b38d2bef 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IMapLogisticService.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IMapLogisticService.java @@ -1,5 +1,6 @@ package com.cloud.kicc.commonbiz.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import com.cloud.kicc.commonbiz.api.entity.MapLogistic; import com.cloud.kicc.commonbiz.api.entity.MapLogisticPoint; @@ -37,4 +38,7 @@ public interface IMapLogisticService extends IService { */ void mapPresetPointConfirmPushMsg(MapLogisticPoint mapLogisticPoint); + /** 内部系统创建报告单 */ + void internalSystemCreateReportForm(JSONObject jsonObject); + } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java index 51a77bf7..e19a1354 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/MapLogisticServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.UUID; import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; @@ -53,6 +54,8 @@ public class MapLogisticServiceImpl extends ServiceImpllambdaUpdate().eq(MapTask::getMapLogisticId, mapLogistic.getId())); @@ -61,14 +64,22 @@ public class MapLogisticServiceImpl extends ServiceImpl { mapTask.setMapLogisticId(mapLogistic.getId()); + if (StrUtil.isNotBlank(mapTask.getReceiptFileId()) && StrUtil.isBlank(mapTask.getBatchCode())) { + mapTask.setBatchCode(batchCode); + mapTask.setEnabledCreateReport(true); + } iMapTaskService.save(mapTask); - // 匹配查找跟地图任务关联的地图标记点数据,不需要包含其他收养样员的交接任务标记点,他们已经与自己的任务进行了id绑定 + // 匹配查找跟地图任务关联的地图标记点数据,不需要包含其他收样员的交接任务标记点,他们已经与自己的任务进行了id绑定 mapLogistic.getMapLogisticPoint().stream() .filter(item -> StrUtil.equals(item.getKey(), mapTask.getKey())).forEach(item -> item.setMapTaskId(mapTask.getId())); if (ObjectUtil.isNotEmpty(mapTask.getMapTaskPreset())) { mapTask.getMapTaskPreset().forEach(mapTaskPreset -> { mapTaskPreset.setMapLogisticId(mapLogistic.getId()); mapTaskPreset.setMapTaskId(mapTask.getId()); + if (StrUtil.isNotBlank(mapTaskPreset.getReceiptFileId()) && StrUtil.isBlank(mapTaskPreset.getBatchCode())) { + mapTaskPreset.setBatchCode(batchCode); + mapTaskPreset.setEnabledCreateReport(true); + } iMapTaskPresetService.save(mapTaskPreset); // 追加交接转办任务标记点,首次新增没有任何数据,后面会有收样员设置的位置数据覆盖 mapLogistic.getMapLogisticPoint().addAll(ListUtil.of( @@ -97,43 +108,51 @@ public class MapLogisticServiceImpl extends ServiceImpl item.setMapLogisticId(mapLogistic.getId())); - createReportFormSetData(mapLogistic); - - //ThreadUtil.execute(() -> createReportFormSetData(mapLogistic)); + ThreadUtil.execute(() -> createReportFormSetData(mapLogistic)); iMapLogisticPointService.saveBatch(mapLogistic.getMapLogisticPoint()); } private void createReportFormSetData(MapLogistic mapLogistic) { - String batchCode = UUID.fromString(UUID.randomUUID().toString()).toString(); mapLogistic.getMapTask().forEach(mapTask -> { - if (StrUtil.isNotEmpty(mapTask.getReceiptFileId())) { + if (mapTask.getEnabledCreateReport()) { + JSONObject jsonObject = new JSONObject(); R user = remoteUserService.selectByUserId(mapTask.getCourierUserId(), SecurityConstants.FROM_IN); - Org org = orgService.getById(mapTask.getOrgId()); Hospital hospital = hospitalService.getById(mapTask.getHospitalId()); - JSONObject jsonObject = new JSONObject(); jsonObject.put("hospitalId", hospital.getKlabHospitalAccount()); - jsonObject.put("institutionId", org.getKlabOrgAccount()); + if (StrUtil.isNotBlank(mapTask.getOrgId())) { + Org org = orgService.getById(mapTask.getOrgId()); + jsonObject.put("institutionId", org.getKlabOrgAccount()); + // todo:交接点位置由自己设置 + } else jsonObject.put("institutionId", 0); // todo:任务科室医生还需讨论需求 jsonObject.put("officeId", 0); jsonObject.put("doctorId", 0); jsonObject.put("syUserId", user.getData().getKlabUserAccount()); - jsonObject.put("batchCode", batchCode); - jsonObject.put("taskType", 0); + jsonObject.put("batchCode", mapTask.getBatchCode()); + jsonObject.put("taskType", mapTask.getTaskType()); jsonObject.put("originImages", mapTask.getReceiptFileId()); jsonObject.put("remark", mapTask.getRemarks()); internalSystemCreateReportForm(jsonObject); } mapTask.getMapTaskPreset().forEach(mapTaskPreset -> { - if (StrUtil.isNotEmpty(mapTaskPreset.getReceiptFileId())) { + JSONObject jsonObject = new JSONObject(); + if (mapTaskPreset.getEnabledCreateReport()) { R taskPresetUser = remoteUserService.selectByUserId(mapTaskPreset.getCourierUserId(), SecurityConstants.FROM_IN); - JSONObject jsonObject = new JSONObject(); - + if (StrUtil.isNotBlank(mapTaskPreset.getOrginPresetId())) { + Hospital hospital = hospitalService.getById(mapTaskPreset.getOrginPresetId()); + jsonObject.put("hospitalId", hospital.getKlabHospitalAccount()); // todo:交接点位置由自己设置 - jsonObject.put("hospitalId", 0); - jsonObject.put("institutionId", 0); + } else jsonObject.put("hospitalId", 0); + if (StrUtil.isNotBlank(mapTaskPreset.getDestinationPresetId())) { + Org org = orgService.getById(mapTaskPreset.getDestinationPresetId()); + jsonObject.put("institutionId", org.getKlabOrgAccount()); + // todo:交接点位置由自己设置 + } else jsonObject.put("institutionId", 0); + + // todo:任务科室医生还需讨论需求 jsonObject.put("officeId", 0); jsonObject.put("doctorId", 0); @@ -142,7 +161,7 @@ public class MapLogisticServiceImpl extends ServiceImpl