package com.glxp.api.http.sync; import cn.hutool.core.convert.Convert; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson2.JSON; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BasicExportTypeEnum; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.IOOrderStatusEntity; import com.glxp.api.entity.sync.SyncEditLogEntity; import com.glxp.api.entity.sync.SyncEditTypeEntity; import com.glxp.api.entity.system.SyncDataSetEntity; import com.glxp.api.idc.service.FileService; import com.glxp.api.req.basic.BasicDataRequest; import com.glxp.api.req.basic.DeleteBasicDataRequest; import com.glxp.api.req.basic.ProductInfoFilterRequest; import com.glxp.api.req.inout.RefreshInoiceRequest; import com.glxp.api.req.inout.ReviewFinishRequest; import com.glxp.api.req.inout.ReviewSpmsRequest; import com.glxp.api.req.sync.BasicExportStatusRequest; import com.glxp.api.req.sync.OrderStatusFilterRequest; import com.glxp.api.req.sync.SyncUpLoadRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.inout.RefreshInoiceResponse; import com.glxp.api.res.inv.InvPreProductResponse; import com.glxp.api.res.inv.InvPreinProductResponse; import com.glxp.api.res.inv.InvProductResponse; import com.glxp.api.res.sync.*; import com.glxp.api.res.system.SyncDataSetResponse; import com.glxp.api.service.sync.SyncDataSetService; import com.glxp.api.service.sync.SyncEditLogService; import com.glxp.api.service.sync.SyncEditTypeService; import com.glxp.api.util.OkHttpCli; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; @Service public class SpGetHttpClient { @Resource private OkHttpCli okHttpCli; @Resource SyncDataSetService syncDataSetService; @Resource SyncEditLogService syncEditLogService; @Resource SyncEditTypeService syncEditTypeService; @Value("${API_KEY}") private String apiKey; @Value("${API_SECRET}") private String apiSecret; public String getIpUrl() { SyncDataSetEntity syncDataSetEntity = syncDataSetService.findSet(); return syncDataSetEntity.getSyncIp(); } public String[] buildHeader() { String[] headers = {"api_key", apiKey, "secret_key", apiSecret}; return headers; } public BaseResponse postData(String taskId, BasicExportTypeEnum exportType, Object data) { SyncUpLoadRequest build = SyncUpLoadRequest.builder().taskId(taskId).exportType(exportType).data(data).build(); String result = okHttpCli.doPostJson(getIpUrl() + "/sps/sync/upload/data", JSONUtil.toJsonStr(build), buildHeader()); return JSONObject.parseObject(result, new TypeReference>() { }); } //上传扫码单据 public BaseResponse postAllOrder(SpsSyncOrderResponse spsSyncOrderResponse) { String json = JSONUtil.toJsonStr(spsSyncOrderResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/orderApi/sps/sync/order/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //上传业务单据 public BaseResponse postAllBusOrder(SpsSyncBusOrderResponse spsSyncOrderResponse) { String json = JSONUtil.toJsonStr(spsSyncOrderResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/busOrderApi/sps/sync/busOrder/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //上传单据类型 public BaseResponse postAllBusType(SpsSyncBusResponse spsSyncBusResponse) { String json = JSONUtil.toJsonStr(spsSyncBusResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/sps/sync/busType/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //上传用户信息 public BaseResponse postAllUser(SpsSyncDataResponse syncDataResponse) { String json = JSONUtil.toJsonStr(syncDataResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/sps/sync/allUser/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //获取自助平台验收单据---直连接口 public BaseResponse getReviewOrder(ReviewSpmsRequest reviewSpmsRequest, String userId) { String json = JSONUtil.toJsonStr(reviewSpmsRequest); List header = (List) Convert.toList(buildHeader()); header.add("ADMIN_ID"); header.add(userId); String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/udiwms/order/getReviews", json, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //同步删除基础数据---直连接口 public BaseResponse deleteBasicData(BasicDataRequest basicDataRequest, String userId) { //日志参数类 DeleteBasicDataRequest deleteBasicDataRequest = new DeleteBasicDataRequest(); deleteBasicDataRequest.setRecordCode("DL"+new SimpleDateFormat("yyyyMMddHHmmssSSSS").format(System.currentTimeMillis())); deleteBasicDataRequest.setUserId(userId); String json =""; switch (basicDataRequest.getKey()){ case "BASIC_MAINTAIN": deleteBasicDataRequest.setDataType(basicDataRequest.getKey()); deleteBasicDataRequest.setParam(JSONUtil.toJsonStr(basicDataRequest.getDeleteRequest()) + basicDataRequest.getKey()); deleteBasicDataRequest.setName("耗材字典维护"); basicDataRequest.setDeleteBasicDataRequest(deleteBasicDataRequest); json = JSONUtil.toJsonStr(basicDataRequest); break; case "BASIC_MANAGE": deleteBasicDataRequest.setDataType(basicDataRequest.getKey()); deleteBasicDataRequest.setParam(JSONUtil.toJsonStr(basicDataRequest.getDeleteCompanyFileRequest()) + basicDataRequest.getKey()); deleteBasicDataRequest.setName("供应商器械信息"); basicDataRequest.setDeleteBasicDataRequest(deleteBasicDataRequest); json = JSONUtil.toJsonStr(basicDataRequest); break; case "BASIC_CORP_MAINTAIN": deleteBasicDataRequest.setDataType(basicDataRequest.getKey()); deleteBasicDataRequest.setParam(JSONUtil.toJsonStr(basicDataRequest.getDeleteRequest()) + basicDataRequest.getKey()); deleteBasicDataRequest.setName("往来信息维护"); basicDataRequest.setDeleteBasicDataRequest(deleteBasicDataRequest); json = JSONUtil.toJsonStr(basicDataRequest); break; case "BASIC_BUSINESS_TYPE": deleteBasicDataRequest.setDataType(basicDataRequest.getKey()); deleteBasicDataRequest.setParam(JSONUtil.toJsonStr(basicDataRequest.getDeleteRequest()) + basicDataRequest.getKey()); deleteBasicDataRequest.setName("单据类型设置"); basicDataRequest.setDeleteBasicDataRequest(deleteBasicDataRequest); json = JSONUtil.toJsonStr(basicDataRequest); break; default: break; } List header = (List) Convert.toList(buildHeader()); header.add("ADMIN_ID"); header.add(userId); // 自助统一删除接口 // ---- /udiwms/basicData/deleteBasicData String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/udiwms/basicData/deleteBasicData", json, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference() { }); //插入操作日志 insertLog(deleteBasicDataRequest,response,userId); //插入操作数据类型记录表 insertType(deleteBasicDataRequest); return response; } public void insertLog( DeleteBasicDataRequest deleteBasicDataRequest,BaseResponse response,String userId){ SyncEditLogEntity syncEditLogEntity = new SyncEditLogEntity(); syncEditLogEntity.setRecordCode(deleteBasicDataRequest.getRecordCode()); syncEditLogEntity.setOperType(2); syncEditLogEntity.setDataType(deleteBasicDataRequest.getDataType()); syncEditLogEntity.setUrl("/udiwms/basicData/deleteBasicData"); syncEditLogEntity.setParam(deleteBasicDataRequest.getParam()); syncEditLogEntity.setJsonResult(JSON.toJSONString(response.getData())); syncEditLogEntity.setDirectType(1); syncEditLogEntity.setOperUser(userId); syncEditLogEntity.setUpdateTime(new Date()); syncEditLogService.insertLog(syncEditLogEntity); } public void insertType(DeleteBasicDataRequest deleteBasicDataRequest){ SyncEditTypeEntity syncEditTypeEntity = new SyncEditTypeEntity(); syncEditTypeEntity.setCode(deleteBasicDataRequest.getDataType()); syncEditTypeEntity.setName(deleteBasicDataRequest.getName()); syncEditTypeService.insertType(syncEditTypeEntity); } public BaseResponse getSimpleOrder(ReviewSpmsRequest reviewSpmsRequest, String userId) { String json = JSONUtil.toJsonStr(reviewSpmsRequest); List header = (List) Convert.toList(buildHeader()); header.add("ADMIN_ID"); header.add(userId); String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/udiwms/order/getSimpleOrder", json, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } public BaseResponse getIoOrderInvoices(RefreshInoiceRequest refreshInoiceRequest) { String json = JSONUtil.toJsonStr(refreshInoiceRequest); String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/udiwms/inout/order/refrshInvoice", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //验收自助平台单据--直连接口 public BaseResponse reviewOrder(ReviewFinishRequest reviewFinishRequest, String userId) { List header = (List) Convert.toList(buildHeader()); header.add("ADMIN_ID"); header.add(userId); String json = JSONUtil.toJsonStr(reviewFinishRequest); String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/spms/inout/order/web/updateStatus", json, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } //确认自助平台单据--直连接口 public BaseResponse updateCheckStatus(IoOrderEntity orderEntity, String userId) { List header = (List) Convert.toList(buildHeader()); header.add("ADMIN_ID"); header.add(userId); String json = JSONUtil.toJsonStr(orderEntity); String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/udiwms/inout/order/updateOrder", json, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } public BaseResponse getOrderByBillNo(String billNo) { List header = (List) Convert.toList(buildHeader()); String result = okHttpCli.doGet(getIpUrl() + "/directToSpms" + "/udiwms/inout/order/findByBillNo/" + "?billNo=" + billNo, Convert.toStrArray(header)); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } // 最小销售标识获取国家库信息 public BaseResponse> getSyncDi(ProductInfoFilterRequest productInfoFilterRequest) { Map paramMap = new HashMap<>(16); paramMap.put("nameCode", productInfoFilterRequest.getNameCode()); paramMap.put("page", productInfoFilterRequest.getPage() + ""); paramMap.put("limit", productInfoFilterRequest.getLimit() + ""); String response = okHttpCli.doGet(getIpUrl() + "/directToSpms" + "/udiwms/udiinfo/superSearch", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } public BaseResponse updateSynsSet(SyncDataSetResponse syncDataSetResponse) { String json = JSONUtil.toJsonStr(syncDataSetResponse); try { String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/system/param/syncData/save", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } catch (Exception e) { e.printStackTrace(); } return ResultVOUtils.error(500, "连接上级服务失败"); } public BaseResponse> getOrderStatus() { Map paramMap = new HashMap<>(16); paramMap.put("status", 1 + ""); String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/status", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } public BaseResponse> getOrders(String orderId) { Map paramMap = new HashMap<>(16); paramMap.put("orderId", orderId); String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/dlByStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } public BaseResponse postOrder(String orderId) { OrderStatusFilterRequest orderStatusFilterRequest = new OrderStatusFilterRequest(); orderStatusFilterRequest.setOrderId(orderId); orderStatusFilterRequest.setStatus(2); String json = JSONUtil.toJsonStr(orderStatusFilterRequest); String result = okHttpCli.doPostJson(getIpUrl() + "/spms/inout/order/updateStatus", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } public BaseResponse> getBasicStatus(String type, String status) { Map paramMap = new HashMap<>(16); paramMap.put("type", type); paramMap.put("status", status); String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } public BaseResponse testConnect() { String response = okHttpCli.doGet(getIpUrl() + "/udispsync/sync/testConnection"); try { BaseResponse data = JSONObject.parseObject(response, new TypeReference>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "网络错误!"); } } public BaseResponse> getBasicStatus(BasicExportStatusRequest basicExportStatusRequest) { Map paramMap = new HashMap<>(16); if (basicExportStatusRequest.getType() != null) paramMap.put("type", basicExportStatusRequest.getType() + ""); if (basicExportStatusRequest.getStatus() != null) paramMap.put("status", basicExportStatusRequest.getStatus() + ""); if (basicExportStatusRequest.getId() != null) paramMap.put("id", basicExportStatusRequest.getId()); if (basicExportStatusRequest.getScheduleType() != null) paramMap.put("scheduleType", basicExportStatusRequest.getScheduleType() + ""); String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } public String getBasicData(String id, String type) { BasicExportStatusRequest basicExportStatusRequest = new BasicExportStatusRequest(); basicExportStatusRequest.setId(id); basicExportStatusRequest.setType(type); String json = JSONUtil.toJsonStr(basicExportStatusRequest); String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/downloadByStatus", json, buildHeader()); return result; } public BaseResponse postBasicStatus(String id) { BasicExportStatusRequest basicStatusFilterRequest = new BasicExportStatusRequest(); basicStatusFilterRequest.setId(id); String json = JSONUtil.toJsonStr(basicStatusFilterRequest); String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/deleteByStatus", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } /** * 从中继服务拉取UDI自助平台数据 * * @return */ public String pullData(BasicExportTypeEnum exportType) { Map paramMap = new WeakHashMap<>(1); paramMap.put("exportType", exportType.name()); String result = okHttpCli.doGet(getIpUrl() + "/sps/sync/data", paramMap, buildHeader()); return result; } /** * 拉取UDI自助平台基础数据 * * @return */ public String pullBasicData() { String result = okHttpCli.doGet(getIpUrl() + "/sps/sync/basicData", null, buildHeader()); return result; } /** * 拉取UDI自助平台其他数据 * * @return */ public String pullOtherData() { String result = okHttpCli.doGet(getIpUrl() + "/sps/sync/otherData", null, buildHeader()); return result; } public void finishTask(String id) { BasicExportStatusRequest basicExportStatusRequest = new BasicExportStatusRequest(); basicExportStatusRequest.setId(id); String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/udiinfo/finishTask" , JSONUtil.toJsonStr(basicExportStatusRequest), buildHeader()); } /** * 上传第三方基础信息数据 * * @param spsSyncThrDataResponse * @return */ public BaseResponse postThrData(SpsSyncThrDataResponse spsSyncThrDataResponse) { String json = JSONUtil.toJsonStr(spsSyncThrDataResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/syncToSpms" + "/sps/sync/thrData/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } /** * 上传第三方产品信息数据 * * @param spsSyncThrProductsResponse * @return */ public BaseResponse postThrProducts(SpsSyncThrProductsResponse spsSyncThrProductsResponse) { String json = JSONUtil.toJsonStr(spsSyncThrProductsResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/syncToSpms" + "/sps/sync/thrData/products/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } /** * 上传系统设置数据 * * @param spsSyncSysSettingResponse * @return */ public BaseResponse postSysSetting(SpsSyncSysSettingResponse spsSyncSysSettingResponse) { String json = JSONUtil.toJsonStr(spsSyncSysSettingResponse); String result = okHttpCli.doPostJson(getIpUrl() + "/syncToSpms" + "/sps/sync/sys/setting", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } /** * 上传模板文件到中继服务 * * @param fileNameList * @return */ @Resource FileService fileService; public BaseResponse postTemplateFile(List fileNameList) { return fileService.upload(fileNameList); } //下载普通库存 public BaseResponse> getInvData(Integer page, Integer limit) { Map paramMap = new HashMap<>(16); paramMap.put("page", page + ""); paramMap.put("limit", limit + ""); String response = okHttpCli.doGet(getIpUrl() + "/syncToSpms" + "/spms/inv/product/vail", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } //下载寄售库存 public BaseResponse> getInvPreData(Integer page, Integer limit) { Map paramMap = new HashMap<>(16); paramMap.put("page", page + ""); paramMap.put("limit", limit + ""); String response = okHttpCli.doGet(getIpUrl() + "/syncToSpms" + "/spms/inv/pre/product/vail", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } //下载预验收库存 public BaseResponse> getInvPreInData(Integer page, Integer limit) { Map paramMap = new HashMap<>(16); paramMap.put("page", page + ""); paramMap.put("limit", limit + ""); String response = okHttpCli.doGet(getIpUrl() + "/syncToSpms" + "/spms/inv/preIn/product/vail", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { }); return data; } catch (Exception e) { e.printStackTrace(); return ResultVOUtils.error(500, "下载失败!"); } } }