From c5b7ba7db5718a89694e124287101826421c1d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=A2=81?= <2429105222@qq.com> Date: Wed, 14 Jun 2023 14:52:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/basic/BasicCorpController.java | 7 + .../controller/inout/PlatformController.java | 232 ++++++++++++++ .../com/glxp/api/dao/basic/BasicCorpDao.java | 3 + .../com/glxp/api/dao/inout/PlatformDao.java | 40 +++ .../dao/inout/UnitMaintainPlatformDao.java | 46 +++ .../inout/UnitMaintainPlatformEntity.java | 71 +++++ .../api/req/inout/PlatformLinkRequest.java | 46 +++ .../api/res/inout/PlatformLinkResponse.java | 42 +++ .../api/service/basic/BasicCorpService.java | 2 + .../basic/impl/BasicCorpServiceImpl.java | 5 + .../api/service/inout/PlatformService.java | 109 +++++++ .../inout/impl/PlatformServiceImpl.java | 291 ++++++++++++++++++ .../java/com/glxp/api/task/SyncHeartTask.java | 4 +- .../com/glxp/api/task/SyncThirdSysTask.java | 2 +- .../mybatis/mapper/basic/BasicCorpDao.xml | 7 + .../mybatis/mapper/inout/PlatformDao.xml | 106 +++++++ .../mapper/inout/UnitMaintainPlatformDao.xml | 168 ++++++++++ 17 files changed, 1178 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/inout/PlatformController.java create mode 100644 src/main/java/com/glxp/api/dao/inout/PlatformDao.java create mode 100644 src/main/java/com/glxp/api/dao/inout/UnitMaintainPlatformDao.java create mode 100644 src/main/java/com/glxp/api/entity/inout/UnitMaintainPlatformEntity.java create mode 100644 src/main/java/com/glxp/api/req/inout/PlatformLinkRequest.java create mode 100644 src/main/java/com/glxp/api/res/inout/PlatformLinkResponse.java create mode 100644 src/main/java/com/glxp/api/service/inout/PlatformService.java create mode 100644 src/main/java/com/glxp/api/service/inout/impl/PlatformServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/inout/PlatformDao.xml create mode 100644 src/main/resources/mybatis/mapper/inout/UnitMaintainPlatformDao.xml diff --git a/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java b/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java index 549b79918..c9362f972 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java @@ -522,5 +522,12 @@ public class BasicCorpController { return ResultVOUtils.success(getCorpList); } + @AuthRuleAnnotation("") + @GetMapping("/udiwms/basic/unit/maintain/getCorpLists") + public BaseResponse getCorpLists() { + List getCorpList = basicUnitMaintainService.getCorpLists(); + return ResultVOUtils.success(getCorpList); + } + } diff --git a/src/main/java/com/glxp/api/controller/inout/PlatformController.java b/src/main/java/com/glxp/api/controller/inout/PlatformController.java new file mode 100644 index 000000000..56ca604cb --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inout/PlatformController.java @@ -0,0 +1,232 @@ +package com.glxp.api.controller.inout; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.inout.UnitMaintainPlatformEntity; +import com.glxp.api.entity.system.PlatformEntity; +import com.glxp.api.req.inout.PlatformLinkRequest; +import com.glxp.api.req.system.DeleteRequest; +import com.glxp.api.req.system.PlatformUserInfoRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.inout.PlatformLinkResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.inout.PlatformService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@Slf4j +public class PlatformController { + + @Resource + private PlatformService platformService; + @Resource + private CustomerService customerService; + + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/remove") + public BaseResponse remove(@RequestBody PlatformEntity platformEntity) { + if (platformService.remove(platformEntity.getId()) > 0) { + ResultVOUtils.success("删除成功"); + } + return ResultVOUtils.error(500, "删除失败"); + } + + + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/update") + public BaseResponse update(@RequestBody PlatformEntity platformEntity) { + if (StrUtil.isBlank(platformEntity.getName()) || StrUtil.isBlank(platformEntity.getHost())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空"); + } + return platformService.update(platformEntity); + } + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/platform/list") + public BaseResponse list(@RequestParam Map params) { + List list = platformService.list(params); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(pageInfo.getList()); + return ResultVOUtils.success(pageSimpleResponse); + } + + /** + * 测试账号连通性 + * + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/testUserInfo") + public BaseResponse testUserInfo(@RequestBody PlatformUserInfoRequest platformUserInfoRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + + PlatformEntity platformEntity = platformService.getPlatformById(platformUserInfoRequest.getPlatformId()); + if (null == platformEntity || StrUtil.isBlank(platformEntity.getHost())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + + String url = platformEntity.getHost() + "/verify"; + Map map = new HashMap<>(); + map.put("username", platformUserInfoRequest.getUsername()); + map.put("password", platformUserInfoRequest.getPassword()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + + HttpEntity request = new HttpEntity<>(JSON.toJSONString(map), headers); + RestTemplate restTemplate = new RestTemplate(); + log.error(url); + + String result = restTemplate.postForObject(url, request, String.class, map); + log.error(result); + Map object = JSON.parseObject(result, Map.class); + if (!String.valueOf(object.get("code")).equals("20000")) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, String.valueOf(object.get("message"))); + } + Map data = JSON.parseObject(JSON.toJSONString(object.get("data")), Map.class); + + ObjectMapper mapper = new ObjectMapper(); + UnitMaintainPlatformEntity unitMaintainPlatformEntity = mapper.convertValue(data, UnitMaintainPlatformEntity.class); + return ResultVOUtils.success(unitMaintainPlatformEntity); + } + + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/link") + public BaseResponse update(@RequestBody PlatformLinkRequest platformLinkRequest) { + //判断此数据是否重复 + String verifyResult = platformService.verifyUnitMaintainPlatform(platformLinkRequest); + if (!verifyResult.equals("success")) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, verifyResult); + } + UnitMaintainPlatformEntity unitMaintainPlatform = new UnitMaintainPlatformEntity(); + BeanUtil.copyProperties(platformLinkRequest, unitMaintainPlatform); + unitMaintainPlatform.setCustomerId(Long.valueOf(unitMaintainPlatform.getUnitId())); + platformService.saveUnitPlatform(unitMaintainPlatform); + return ResultVOUtils.success("关联成功"); + } + + /** + * 获取往来单位与自助平台关联数据 + */ + @AuthRuleAnnotation("") + @GetMapping("/udiwms/platform/getLinkPlatformList") + public BaseResponse getLinkPlatformList(PlatformLinkRequest platformLinkRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + platformLinkRequest.setCustomerId(String.valueOf(customerService.getUserBean().getCustomerId())); + List list = platformService.getLinkPlatformList(platformLinkRequest); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(pageInfo.getList()); + return ResultVOUtils.success(pageSimpleResponse); + } + + /** + * 解绑往来单位和自助平台的关联 + * + * @param deleteRequest + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/unbind") + public BaseResponse unbindPlatform(DeleteRequest deleteRequest) { + if (StrUtil.isBlank(deleteRequest.getId())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + platformService.unbindPlatform(deleteRequest.getId()); + return ResultVOUtils.success(); + } + + /** + * 获取对应平台单据类型 + * + * @return + */ + @AuthRuleAnnotation("") + @GetMapping("/udiwms/platform/getTargetActions") + public BaseResponse getTargetActions(String platformId, String invSubCode, String apiKey, String apiSecret) { + if (StrUtil.isBlank(platformId)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return platformService.getTargetActions(platformId, invSubCode, apiKey, apiSecret); + } + + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/platform/getTargetInv") + public BaseResponse getTargetInv(String platformId, String apiKey, String apiSecret) { + if (StrUtil.isBlank(platformId)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return platformService.getTargetInv(platformId, apiKey, apiSecret); + } + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/platform/getTargetSubInv") + public BaseResponse getTargetSubInv(String platformId, String invCode, String apiKey, String apiSecret) { + if (StrUtil.isBlank(platformId)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return platformService.getTargetSubInv(platformId, invCode, apiKey, apiSecret); + } + + /** + * 测试自助平台连通性 + * + * @param host + * @return + */ + @AuthRuleAnnotation("") + @GetMapping("udiwms/platform/testPlatformConnection") + public BaseResponse testPlatformConnection(String host) { + if (StrUtil.isBlank(host)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return platformService.testPlatformConnection(host); + } + + /** + * 获取客户详情 + * + * @param platformLinkRequest + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udiwms/platform/getPlatFormDelect") + public BaseResponse getPlatFormDelect(@RequestBody PlatformLinkRequest platformLinkRequest) { + + List platformLinkResponses = platformService.selectDelectList(platformLinkRequest); + PageInfo pageInfo = new PageInfo<>(platformLinkResponses); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(pageInfo.getList()); + + return ResultVOUtils.success(pageSimpleResponse); + } + +} diff --git a/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java index 2656ad80c..c9874040c 100644 --- a/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java +++ b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java @@ -63,4 +63,7 @@ public interface BasicCorpDao extends BaseMapperPlus getCorpList(); + + List getCorpLists(); + } diff --git a/src/main/java/com/glxp/api/dao/inout/PlatformDao.java b/src/main/java/com/glxp/api/dao/inout/PlatformDao.java new file mode 100644 index 000000000..0101cdcd9 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inout/PlatformDao.java @@ -0,0 +1,40 @@ +package com.glxp.api.dao.inout; + + +import com.glxp.api.entity.system.PlatformEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface PlatformDao { + + int batchSave(List list); + + List list( Map map); + + int count(Map map); + + PlatformEntity get(String id); + + /** + * 根据名称和访问地址查询平台信息 + * + * @param name + * @param host + * @return + */ + List selectByNameAndHost(@Param("name") String name, @Param("host") String host); + + PlatformEntity selectById(@Param("platformId") String platformId); + + int insert(PlatformEntity platformEntity); + + List selectList(@Param("id") String id, @Param("name") String name, @Param("host") String host); + + int deleteById(@Param("id") String id); + + void updateById(PlatformEntity platformEntity); +} diff --git a/src/main/java/com/glxp/api/dao/inout/UnitMaintainPlatformDao.java b/src/main/java/com/glxp/api/dao/inout/UnitMaintainPlatformDao.java new file mode 100644 index 000000000..35688b554 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inout/UnitMaintainPlatformDao.java @@ -0,0 +1,46 @@ +package com.glxp.api.dao.inout; + + +import com.glxp.api.entity.inout.UnitMaintainPlatformEntity; +import com.glxp.api.req.inout.PlatformLinkRequest; +import com.glxp.api.res.inout.PlatformLinkResponse; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface UnitMaintainPlatformDao { + + /** + * 查询医院客户列表 + * + * @param page + * @param customerId + * @param key + * @return + */ + List getLinkPlatformList(@Param("customerId") String customerId, @Param("key") String key); + + /** + * 根据客户ID查询关联数据 + * + * @param customerId + * @return + */ + List selectByCustomerId(@Param("customerId") Long customerId); + + void updateById(UnitMaintainPlatformEntity maintainPlatform); + + void insert(UnitMaintainPlatformEntity unitMaintainPlatformEntity); + + List selectList(PlatformLinkRequest platformLinkRequest); + + UnitMaintainPlatformEntity findLinkData(@Param("customerId") long customerId, @Param("action") String action, @Param("unitId") String unitId); + + void deleteById(String id); + + Long selectCount(@Param("unitId") String unitId, @Param("action") String action); + + List selectDelectList(@Param("platformId") String platformId); +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inout/UnitMaintainPlatformEntity.java b/src/main/java/com/glxp/api/entity/inout/UnitMaintainPlatformEntity.java new file mode 100644 index 000000000..78d30c5b7 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inout/UnitMaintainPlatformEntity.java @@ -0,0 +1,71 @@ +package com.glxp.api.entity.inout; + +import lombok.Data; + +/** + * 医院客户表 + */ +@Data +public class UnitMaintainPlatformEntity { + + private Integer id; + + /** + * 往来单位ID + */ + private String unitId; + + /** + * 客户ID + */ + private Long customerId; + + /** + * 平台ID + */ + private String platformId; + + /** + * 源单据类型 + */ + private String sourceAction; + + /** + * 目标单据类型 + */ + private String targetAction; + + /** + * 仓库码 + */ + private String invCode; + + /** + * 分库码 + */ + private String invSubCode; + + /** + * 应用名称 + */ + private String appid; + + /** + * 秘钥 + */ + private String secretKey; + + /** + * 应用ID + */ + private String apiKey; + + + //目标单据类型 + private String targetName; + + private String invName; + + private String invSubName; + +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/req/inout/PlatformLinkRequest.java b/src/main/java/com/glxp/api/req/inout/PlatformLinkRequest.java new file mode 100644 index 000000000..0c46aecca --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/PlatformLinkRequest.java @@ -0,0 +1,46 @@ +package com.glxp.api.req.inout; + + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +/** + * 医院客户请求参数 + */ +@Data +public class PlatformLinkRequest extends ListPageRequest { + + private Integer id; + + private String unitId; + + private String corpName; + + private String platformId; + + private String platformUsername; + + private String platformPassword; + + private String appid; + + private String apiKey; + + private String secretKey; + + private String sourceAction; + + private String targetAction; + + private String invCode; + + private String invSubCode; + + private String key; + + private String customerId; + + private String invName; + private String invSubName; + private String targetName; +} diff --git a/src/main/java/com/glxp/api/res/inout/PlatformLinkResponse.java b/src/main/java/com/glxp/api/res/inout/PlatformLinkResponse.java new file mode 100644 index 000000000..e6a5ba096 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inout/PlatformLinkResponse.java @@ -0,0 +1,42 @@ +package com.glxp.api.res.inout; + +import lombok.Data; + +/** + * 往来单位关联自助平台数据实体类 + */ +@Data +public class PlatformLinkResponse { + + //往来单位ID + private Long id; + //往来单位编码 + private String unitId; + //往来单位名称 + private String corpName; + //往来单位类型 + private Integer corpType; + //拼音码 + private String pinyinCode; + //自助平台名称 + private String platformName; + //自助平台ID + private String platformId; + + private String socurceName; + + //本地单据类型 + private String sourceAction; + private String sourceName; + //目标单据类型 + private String targetAction; + private String targetName; + + private String invCode; + private String invName; + private String invSubCode; + private String invSubName; + + private String name; + private String host; +} diff --git a/src/main/java/com/glxp/api/service/basic/BasicCorpService.java b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java index c1ef129ea..5dc88a603 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicCorpService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java @@ -55,4 +55,6 @@ public interface BasicCorpService { List selectCorpList(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest); + List getCorpLists(); + } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java index 4c6638100..50e57fc33 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java @@ -167,4 +167,9 @@ public class BasicCorpServiceImpl implements BasicCorpService { } return false; } + + @Override + public List getCorpLists() { + return basicCorpDao.getCorpLists(); + } } diff --git a/src/main/java/com/glxp/api/service/inout/PlatformService.java b/src/main/java/com/glxp/api/service/inout/PlatformService.java new file mode 100644 index 000000000..845f181a9 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/PlatformService.java @@ -0,0 +1,109 @@ +package com.glxp.api.service.inout; + + + +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.entity.inout.UnitMaintainPlatformEntity; +import com.glxp.api.entity.system.PlatformEntity; +import com.glxp.api.req.inout.PlatformLinkRequest; +import com.glxp.api.res.inout.PlatformLinkResponse; + +import java.util.List; +import java.util.Map; + +public interface PlatformService { + + + public int save(PlatformEntity platformEntity); + + public int remove(String id); + + public BaseResponse update(PlatformEntity platformEntity); + + List list(Map map); + + int count(Map map); + + PlatformEntity get(String id); + + /** + * 查询往来单位和自助平台关联数据 + * + * @param platformLinkRequest + * @return + */ + List getLinkPlatformList(PlatformLinkRequest platformLinkRequest); + + /** + * 往来单位和自助平台解绑 + * + * @param id + */ + void unbindPlatform(String id); + + /** + * 获取自助平台单据类型 + * + * @param platformId + * @return + */ + BaseResponse getTargetActions(String platformId, String invSubCode,String apiKey,String apiSecret); + + + //获取自助平台一级仓库 + BaseResponse getTargetInv(String platformId,String apiKey,String apiSecret); + + + //获取自助平台一级仓库所属分库 + BaseResponse getTargetSubInv(String platformId, String invCode,String apiKey,String apiSecret); + + /** + * 测试自助平台连通性 + * + * @param host + * @return + */ + BaseResponse testPlatformConnection(String host); + + /** + * 根据ID查询自助平台信息 + * + * @param platformId + * @return + */ + PlatformEntity getPlatformById(String platformId); + + /** + * 保存医院客户关联关系 + * + * @param unitMaintainPlatform + */ + void saveUnitPlatform(UnitMaintainPlatformEntity unitMaintainPlatform); + + /** + * 校验关联数据 + * + * @param platformLinkRequest + * @return + */ + public String verifyUnitMaintainPlatform(PlatformLinkRequest platformLinkRequest); + + /** + * 查询关联数据 + * + * @param customerId + * @param action + * @param unitId + * @return + */ + UnitMaintainPlatformEntity findLinkData(long customerId, String action, String unitId); + + /** + * 获取客户关联详情 + * @param platformId + * @return + */ + List selectDelectList(PlatformLinkRequest platformLinkRequest); + + +} diff --git a/src/main/java/com/glxp/api/service/inout/impl/PlatformServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/PlatformServiceImpl.java new file mode 100644 index 000000000..5f27bfe09 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/impl/PlatformServiceImpl.java @@ -0,0 +1,291 @@ +package com.glxp.api.service.inout.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageHelper; + +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.inout.PlatformDao; +import com.glxp.api.dao.inout.UnitMaintainPlatformDao; +import com.glxp.api.entity.inout.UnitMaintainPlatformEntity; +import com.glxp.api.entity.system.PlatformEntity; +import com.glxp.api.req.inout.PlatformLinkRequest; +import com.glxp.api.res.inout.PlatformLinkResponse; +import com.glxp.api.service.inout.PlatformService; +import com.glxp.api.util.HttpClient; +import com.glxp.api.util.OkHttpCli; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class PlatformServiceImpl implements PlatformService { + + @Resource + private PlatformDao platformDao; + @Resource + private UnitMaintainPlatformDao unitMaintainPlatformDao; + @Resource + private OkHttpCli okHttpCli; + + public int save(PlatformEntity platformEntity) { + if (StringUtils.isEmpty(platformEntity.getId())) { + platformEntity.setId(String.valueOf(IdUtil.getSnowflake().nextId())); + } + return platformDao.insert(platformEntity); + } + + public int remove(String id) { + return platformDao.deleteById(id); + } + + public BaseResponse update(PlatformEntity platformEntity) { + if (StrUtil.isBlank(platformEntity.getId())) { + if (!verifyPlatformExist(platformEntity)) { + save(platformEntity); + return ResultVOUtils.success("添加成功"); + } else { + return ResultVOUtils.error(500, "已存在相同数据"); + } + } + platformDao.updateById(platformEntity); + return ResultVOUtils.success("更新成功"); + } + + private boolean verifyPlatformExist(PlatformEntity platformEntity) { + //校验名称和地址是否重复 + List list = platformDao.selectByNameAndHost(platformEntity.getName(), platformEntity.getHost()); + if (CollUtil.isEmpty(list)) { + return false; + } + return true; + } + + public List list(Map map) { + if (map.get("page") != null && map.get("limit") != null) { + Integer page = Integer.valueOf(String.valueOf(map.get("page"))); + Integer limit = Integer.valueOf(String.valueOf(map.get("limit"))); + PageHelper.offsetPage((page - 1) * limit, limit); + } + List list = platformDao.selectList(String.valueOf(map.get("id")), String.valueOf(map.get("name")), String.valueOf(map.get("host"))); + return list; + } + + public int count(Map map) { + return platformDao.count(map); + } + + public PlatformEntity get(String id) { + return platformDao.get(id); + } + + /** + * 查询往来单位和自助平台关联数据 + * + * @param platformLinkRequest + * @return + */ + public List getLinkPlatformList(PlatformLinkRequest platformLinkRequest) { + if (null == platformLinkRequest) { + return Collections.emptyList(); + } + if (null != platformLinkRequest.getPage() && null != platformLinkRequest.getLimit()) { + PageHelper.offsetPage((platformLinkRequest.getPage() - 1) * platformLinkRequest.getLimit(), platformLinkRequest.getLimit()); + } + return unitMaintainPlatformDao.getLinkPlatformList(platformLinkRequest.getCustomerId(), platformLinkRequest.getKey()); + } + + /** + * 往来单位和自助平台解绑 + * + * @param id + */ + public void unbindPlatform(String id) { + unitMaintainPlatformDao.deleteById(id); + } + + /** + * 获取自助平台单据类型 + * + * @param platformId + * @return + */ + public BaseResponse getTargetActions(String platformId, String invSubCode,String apiKey,String apiSecret) { + PlatformEntity platformEntity = platformDao.get(platformId); + if (null == platformEntity) { + return ResultVOUtils.success(); + } + String host = platformEntity.getHost(); + Map paramMap = new HashMap<>(); + paramMap.put("invSubCode", invSubCode); + String resp = okHttpCli.doGet(host + "/udiwms/bussinessType/udimsFilter",paramMap,buildHeader(apiKey,apiSecret)); + if (StrUtil.isNotBlank(resp) && resp.contains("20000")) { + return JSON.parseObject(resp, BaseResponse.class); + } else { + log.error("获取自助平台单据类型异常"); + return ResultVOUtils.error(500, "获取自助平台接口异常"); + } + } + + //获取自助平台一级仓库 + public BaseResponse getTargetInv(String platformId,String apiKey,String apiSecret) { + PlatformEntity platformEntity = platformDao.get(platformId); + if (null == platformEntity) { + return ResultVOUtils.success(); + } + String host = platformEntity.getHost(); + String url = host + "/spms/inv/warehouse/filterInv/forUdims"; + log.info("拉取自助平台仓库数据:" + url); + String resp = okHttpCli.doGet(url,buildHeader(apiKey,apiSecret)); + log.info("拉取结果:" + resp); + if (StrUtil.isNotBlank(resp) && resp.contains("20000")) { + try { + return JSON.parseObject(resp, BaseResponse.class); + } catch (Exception e) { + log.error("格式化自助平台仓库信息异常", e); + return ResultVOUtils.error(500, "调用自助平台接口异常"); + } + } else { + log.error("获取自助平台仓库失败"); + return ResultVOUtils.error(500, "调用自助平台接口异常"); + } + } + + + //获取自助平台一级仓库所属分库 + public BaseResponse getTargetSubInv(String platformId, String invCode,String apiKey,String apiSecret) { + PlatformEntity platformEntity = platformDao.get(platformId); + if (null == platformEntity) { + return ResultVOUtils.success(); + } + String host = platformEntity.getHost(); + Map paramMap = new HashMap<>(); + paramMap.put("invCode", invCode); + String resp = okHttpCli.doGet(host + "/spms/sub/inv/warehouse/getSubInvForUdims",paramMap,buildHeader(apiKey,apiSecret)); + if (StrUtil.isNotBlank(resp) && resp.contains("20000")) { + return JSON.parseObject(resp, BaseResponse.class); + } else { + log.error("获取自助平台分库失败"); + return ResultVOUtils.error(500, "获取自助平台接口异常"); + } + } + + /** + * 测试自助平台连通性 + * + * @param host + * @return + */ + public BaseResponse testPlatformConnection(String host) { + String testUrl = host + "/udiwms/auth/device/connect"; + String response = HttpUtil.get(testUrl); + if (StrUtil.isNotBlank(response)) { + try { + BaseResponse result = JSONUtil.toBean(response, BaseResponse.class); + if (result.getCode() == 20000) { + return ResultVOUtils.success(); + } + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } catch (Exception e) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + } else { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + } + + /** + * 根据ID查询自助平台信息 + * + * @param platformId + * @return + */ + public PlatformEntity getPlatformById(String platformId) { + return platformDao.selectById(platformId); + } + + /** + * 保存医院客户关联关系 + * + * @param unitMaintainPlatformEntity + */ + public void saveUnitPlatform(UnitMaintainPlatformEntity unitMaintainPlatformEntity) { + if (null != unitMaintainPlatformEntity.getId()) { + unitMaintainPlatformDao.updateById(unitMaintainPlatformEntity); + } else { + unitMaintainPlatformDao.insert(unitMaintainPlatformEntity); + } + + //更新当前客户关联数据的所有key + List list = unitMaintainPlatformDao.selectByCustomerId(unitMaintainPlatformEntity.getCustomerId()); + if (CollUtil.isNotEmpty(list)) { + for (UnitMaintainPlatformEntity maintainPlatform : list) { + maintainPlatform.setAppid(unitMaintainPlatformEntity.getAppid()); + maintainPlatform.setApiKey(unitMaintainPlatformEntity.getApiKey()); + maintainPlatform.setSecretKey(unitMaintainPlatformEntity.getSecretKey()); + unitMaintainPlatformDao.updateById(maintainPlatform); + } + } + + } + + @Override + public String verifyUnitMaintainPlatform(PlatformLinkRequest platformLinkRequest) { + List list = unitMaintainPlatformDao.selectList(platformLinkRequest); + if (CollUtil.isEmpty(list)) { + return "success"; + } else { + for (UnitMaintainPlatformEntity maintainPlatform : list) { + if (maintainPlatform.getId().equals(platformLinkRequest.getId())) { + return "success"; + } else { + return "重复添加"; + } + } + } + return "重复添加"; + } + + /** + * 查询关联数据 + * + * @param customerId + * @param action + * @param unitId + * @return + */ + public UnitMaintainPlatformEntity findLinkData(long customerId, String action, String unitId) { + return unitMaintainPlatformDao.findLinkData(customerId, action, unitId); + } + + @Override + public List selectDelectList(PlatformLinkRequest platformLinkRequest) { + if (null == platformLinkRequest) { + return Collections.emptyList(); + } + if (null != platformLinkRequest.getPage() && null != platformLinkRequest.getLimit()) { + PageHelper.offsetPage((platformLinkRequest.getPage() - 1) * platformLinkRequest.getLimit(), platformLinkRequest.getLimit()); + } + return unitMaintainPlatformDao.selectDelectList(platformLinkRequest.getPlatformId()); + } + + public String[] buildHeader(String apiKey,String apiSecret) { + String[] headers = {"api_key", apiKey, "secret_key", apiSecret}; + return headers; + } +} diff --git a/src/main/java/com/glxp/api/task/SyncHeartTask.java b/src/main/java/com/glxp/api/task/SyncHeartTask.java index 2dcc0989d..61fdbc44a 100644 --- a/src/main/java/com/glxp/api/task/SyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/SyncHeartTask.java @@ -21,8 +21,8 @@ import javax.annotation.Resource; import java.util.Arrays; -@Component -@EnableScheduling +//@Component +//@EnableScheduling public class SyncHeartTask implements SchedulingConfigurer { final Logger logger = LoggerFactory.getLogger(SyncHeartTask.class); diff --git a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java index d10c44f95..692a06f69 100644 --- a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java +++ b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java @@ -34,7 +34,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; @Component -@EnableScheduling +//@EnableScheduling @Slf4j public class SyncThirdSysTask implements SchedulingConfigurer { diff --git a/src/main/resources/mybatis/mapper/basic/BasicCorpDao.xml b/src/main/resources/mybatis/mapper/basic/BasicCorpDao.xml index 9644c13e2..83ac4e605 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicCorpDao.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicCorpDao.xml @@ -343,4 +343,11 @@ WHERE erpId NOT IN (SELECT customerId FROM sup_company) AND corpType = 2; + + diff --git a/src/main/resources/mybatis/mapper/inout/PlatformDao.xml b/src/main/resources/mybatis/mapper/inout/PlatformDao.xml new file mode 100644 index 000000000..0499e086c --- /dev/null +++ b/src/main/resources/mybatis/mapper/inout/PlatformDao.xml @@ -0,0 +1,106 @@ + + + + + + replace into auth_platform + (id, name, host) + values + + (#{item.id}, #{item.name,jdbcType=VARCHAR}, #{item.host,jdbcType=VARCHAR}) + + + + + + + + + + + + + + + insert into auth_platform(id, name, host) + VALUES (#{id}, #{name}, #{host}) + + + + + + delete + from auth_platform + where id = #{id} + + + + update auth_platform + + + name = #{name}, + + + host = #{host}, + + + where id = #{id} + + diff --git a/src/main/resources/mybatis/mapper/inout/UnitMaintainPlatformDao.xml b/src/main/resources/mybatis/mapper/inout/UnitMaintainPlatformDao.xml new file mode 100644 index 000000000..cb9cdedd7 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inout/UnitMaintainPlatformDao.xml @@ -0,0 +1,168 @@ + + + + + + + + + update io_unit_maintain_platform + + + unitId = #{unitId}, + + + customerId = #{customerId}, + + + platformId = #{platformId}, + + + sourceAction = #{sourceAction}, + + + targetAction = #{targetAction}, + + + invCode = #{invCode}, + + + invSubCode = #{invSubCode}, + + + appid = #{appid}, + + + apiKey = #{apiKey}, + + + secretKey = #{secretKey}, + + + invName = #{invName}, + + + invSubName = #{invSubName}, + + + targetName = #{targetName} + + + where id = #{id} + + + + insert into io_unit_maintain_platform (unitId, customerId, platformId, sourceAction, targetAction, invCode, + invSubCode, appid, apiKey, secretKey, invName, invSubName, targetName) + VALUES (#{unitId}, #{customerId}, #{platformId}, #{sourceAction}, #{targetAction}, #{invCode}, #{invSubCode}, + #{appid}, #{apiKey}, #{secretKey}, #{invName}, #{invSubName}, #{targetName}) + + + + + + + + delete + from io_unit_maintain_platform + where id = #{id} + + + + + + \ No newline at end of file