From 139ab6c2f107e4e9b9ada2ffefb2849b4c4f2bd2 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 04 二月 2026 10:01:43 +0800
Subject: [PATCH] 云仓对接
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicCloudWarehouseController.java | 66 +++++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java | 21 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierCloudShopServiceImpl.java | 20 +
ruoyi-system/src/main/resources/mapper/system/TCrmSupplierCloudShopMapper.xml | 18 +
ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java | 21 +
ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinicCloudWarehouse.java | 46 +++
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicCloudWarehouseServiceImpl.java | 20 +
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCloudConfigMapper.java | 16 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/VipApiGoodsQuery.java | 28 ++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmClinicCloudWarehouseMapper.java | 16 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCloudConfigServiceImpl.java | 20 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierCloudShopController.java | 20 +
ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmClinicDTO.java | 6
ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmClinicCloudWarehouseService.java | 16 +
ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmSupplierCloudShopService.java | 16 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java | 7
ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmSupplierDTO.java | 4
ruoyi-system/src/main/resources/mapper/system/TCrmClinicCloudWarehouseMapper.xml | 18 +
ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpCloudGoodsExcel.java | 23 +
ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmSupplierCloudShop.java | 46 +++
ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCloudConfigService.java | 16 +
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmSupplierCloudShopMapper.java | 16 +
ruoyi-system/src/main/resources/mapper/system/TSysCloudConfigMapper.xml | 20 +
ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml | 14
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierServiceImpl.java | 18 +
ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCloudConfig.java | 54 ++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java | 95 +++++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/ApiGoodsSpecPush.java | 49 +++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/trade/TradePush.java | 25 +
ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmSupplierVO.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierController.java | 8
32 files changed, 752 insertions(+), 20 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicCloudWarehouseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicCloudWarehouseController.java
new file mode 100644
index 0000000..eda9f5a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicCloudWarehouseController.java
@@ -0,0 +1,66 @@
+package com.ruoyi.web.controller.api;
+
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.utils.WebUtils;
+import com.ruoyi.system.importExcel.TErpCloudGoodsExcel;
+import com.ruoyi.system.model.TSysCloudConfig;
+import com.ruoyi.system.service.TCrmClinicCloudWarehouseService;
+import com.ruoyi.system.service.TSysCloudConfigService;
+import com.ruoyi.web.controller.yuncang.api.basic.WarehouseQuery;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.sql.Wrapper;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 诊所仓库 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Api(tags = "诊所云仓仓库")
+@RestController
+@RequestMapping("/t-crm-clinic-cloud-warehouse")
+public class TCrmClinicCloudWarehouseController {
+
+ private final TCrmClinicCloudWarehouseService tCrmClinicCloudWarehouseService;
+ private final TSysCloudConfigService sysCloudConfigService;
+
+
+ @Autowired
+ public TCrmClinicCloudWarehouseController(TCrmClinicCloudWarehouseService tCrmClinicCloudWarehouseService, TSysCloudConfigService sysCloudConfigService) {
+ this.tCrmClinicCloudWarehouseService = tCrmClinicCloudWarehouseService;
+ this.sysCloudConfigService = sysCloudConfigService;
+ }
+
+ @ApiOperation(value = "查询云仓仓库列表",notes = "cloudWarehouse:云仓类型 1=旺店通")
+ @GetMapping("/queryCloudWarehouseList")
+ public R<JSONObject> queryCloudWarehouseList(@RequestParam Integer cloudWarehouse) {
+ // 查询云仓配置
+ TSysCloudConfig sysCloudConfig = sysCloudConfigService.getOne(Wrappers.lambdaQuery(TSysCloudConfig.class)
+ .eq(TSysCloudConfig::getCloudWarehouse, cloudWarehouse)
+ .last("LIMIT 1"));
+ JSONObject jsonObject = WarehouseQuery.warehouseQuery(sysCloudConfig.getSid(), sysCloudConfig.getAppKey(), sysCloudConfig.getAppSecret(), sysCloudConfig.getUrl());
+ return R.ok(jsonObject);
+
+ }
+
+
+}
+
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
index 7e56b49..f7bcc2c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmClinicController.java
@@ -84,8 +84,9 @@
private final RedisCache redisCache;
private final RestTemplate restTemplate;
private final WeixinProperties wxConfig;
+ private final TCrmClinicCloudWarehouseService crmClinicCloudWarehouseService;
@Autowired
- public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService, TokenService tokenService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService, RedisCache redisCache, RestTemplate restTemplate, WeixinProperties wxConfig) {
+ public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService, TokenService tokenService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService, RedisCache redisCache, RestTemplate restTemplate, WeixinProperties wxConfig, TCrmClinicCloudWarehouseService crmClinicCloudWarehouseService) {
this.crmClinicService = crmClinicService;
this.crmSupplierService = crmSupplierService;
this.crmBranchService = crmBranchService;
@@ -99,6 +100,7 @@
this.redisCache = redisCache;
this.restTemplate = restTemplate;
this.wxConfig = wxConfig;
+ this.crmClinicCloudWarehouseService = crmClinicCloudWarehouseService;
}
/**
@@ -274,6 +276,9 @@
if(Objects.nonNull(crmWarehouse)){
crmSupplierVO.setWarehouseName(crmWarehouse.getWarehouseName());
}
+ // 获取云仓关联信息
+ List<TCrmClinicCloudWarehouse> crmClinicCloudWarehouses = crmClinicCloudWarehouseService.list(Wrappers.lambdaQuery(TCrmClinicCloudWarehouse.class).eq(TCrmClinicCloudWarehouse::getClinicId, crmSupplier.getId()));
+ crmSupplierVO.setCrmClinicCloudWarehouses(crmClinicCloudWarehouses);
return R.ok(crmSupplierVO);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierCloudShopController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierCloudShopController.java
new file mode 100644
index 0000000..eb5379e
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierCloudShopController.java
@@ -0,0 +1,20 @@
+package com.ruoyi.web.controller.api;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 供应商店铺 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@RestController
+@RequestMapping("/t-crm-supplier-cloud-shop")
+public class TCrmSupplierCloudShopController {
+
+}
+
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierController.java
index ddd66b6..53885e9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCrmSupplierController.java
@@ -50,11 +50,13 @@
private final TCrmSupplierService crmSupplierService;
private final ISysUserService sysUserService;
private final TCrmWarehouseService crmWarehouseService;
+ private final TCrmSupplierCloudShopService crmSupplierCloudShopService;
@Autowired
- public TCrmSupplierController(TCrmSupplierService crmSupplierService, ISysUserService sysUserService, TCrmWarehouseService crmWarehouseService) {
+ public TCrmSupplierController(TCrmSupplierService crmSupplierService, ISysUserService sysUserService, TCrmWarehouseService crmWarehouseService, TCrmSupplierCloudShopService crmSupplierCloudShopService) {
this.crmSupplierService = crmSupplierService;
this.sysUserService = sysUserService;
this.crmWarehouseService = crmWarehouseService;
+ this.crmSupplierCloudShopService = crmSupplierCloudShopService;
}
/**
@@ -114,6 +116,10 @@
if(Objects.nonNull(crmWarehouse)){
crmSupplierVO.setWarehouseName(crmWarehouse.getWarehouseName());
}
+ // 查询云仓店铺信息
+ List<TCrmSupplierCloudShop> crmSupplierCloudShops = crmSupplierCloudShopService.list(Wrappers.lambdaQuery(TCrmSupplierCloudShop.class)
+ .eq(TCrmSupplierCloudShop::getSupplierId, crmSupplier.getId()));
+ crmSupplierVO.setCrmSupplierCloudShops(crmSupplierCloudShops);
return R.ok(crmSupplierVO);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
index ccc238c..34b3bd9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpGoodsController.java
@@ -20,9 +20,11 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.WebUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.*;
+import com.ruoyi.system.importExcel.TErpCloudGoodsExcel;
import com.ruoyi.system.importExcel.TErpGoodsExcel;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.PageAddListQuery;
@@ -842,5 +844,98 @@
}
return R.ok();
}
+
+ @Log(title = "云仓商品关联导入模板-导出", businessType = BusinessType.EXPORT)
+ @ApiOperation(value = "云仓商品关联导入模板")
+ @PostMapping("/cloudGoodsImportTemplate")
+ public void cloudGoodsImportTemplate() {
+ List<TErpCloudGoodsExcel> pageList = new ArrayList<>();
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TErpCloudGoodsExcel.class, pageList);
+ HttpServletResponse response = WebUtils.response();
+ assert response != null;
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("云仓商品关联导入模板.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Log(title = "云仓商品导入-导入", businessType = BusinessType.IMPORT)
+ @ApiOperation(value = "云仓商品信息导入",notes = "cloudWarehouse:云仓类型 1=旺店通")
+ @PostMapping("/importCloudGoodsFile")
+ public AjaxResult importCloudGoodsFile(@RequestParam(value = "file") MultipartFile file,
+ @RequestParam(value = "cloudWarehouse") Integer cloudWarehouse) {
+ ImportParams params = new ImportParams();
+ params.setHeadRows(1); //表头行数
+ InputStream inputStream = null;
+ ArrayList<String> names = new ArrayList<>();
+ ArrayList<TErpGoods> tErpGoods = new ArrayList<>();
+
+ try {
+ inputStream = file.getInputStream();
+ List<TErpCloudGoodsExcel> erpCloudGoodsExcels = ExcelImportUtil.importExcel(inputStream, TErpCloudGoodsExcel.class, params);
+ Set<String> collect = erpCloudGoodsExcels.stream().map(TErpCloudGoodsExcel::getCloudSpecCode).collect(Collectors.toSet());
+ if (collect.size() != erpCloudGoodsExcels.size()) {
+ return AjaxResult.error("导入数据中商品规格编码重复");
+ }
+ for (TErpCloudGoodsExcel erpCloudGoodsExcel : erpCloudGoodsExcels) {
+ // 判空
+ if (StringUtils.isBlank(erpCloudGoodsExcel.getGoodsName())) {
+ names.add("云仓商品名称不能为空");
+ continue;
+ }
+ if (StringUtils.isBlank(erpCloudGoodsExcel.getCloudGoodsCode())) {
+ names.add("云仓商品编码不能为空");
+ continue;
+ }
+ if (StringUtils.isBlank(erpCloudGoodsExcel.getCloudSpecCode())) {
+ names.add("云仓商品规格编码不能为空");
+ continue;
+ }
+ TErpGoods erpGoods = erpGoodsService.getOne(Wrappers.lambdaQuery(TErpGoods.class)
+ .eq(TErpGoods::getGoodsName, erpCloudGoodsExcel.getGoodsName())
+ .last("LIMIT 1"));
+ if (Objects.isNull(erpGoods)) {
+ names.add(erpCloudGoodsExcel.getGoodsName() + " :信息有误,未查询到匹配得商品。");
+ continue;
+ }
+ erpGoods.setCloudWarehouse(cloudWarehouse);
+ erpGoods.setCloudGoodsCode(erpCloudGoodsExcel.getCloudGoodsCode());
+ erpGoods.setCloudSpecCode(erpCloudGoodsExcel.getCloudSpecCode());
+ tErpGoods.add(erpGoods);
+ }
+ erpGoodsService.updateBatchById(tErpGoods);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return AjaxResult.error("记录导入失败!");
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }
+ if (!names.isEmpty()) {
+ return AjaxResult.error("导入失败记录如下:", names);
+ }
+ return AjaxResult.success();
+
+ }
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/ApiGoodsSpecPush.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/ApiGoodsSpecPush.java
new file mode 100644
index 0000000..076878a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/ApiGoodsSpecPush.java
@@ -0,0 +1,49 @@
+package com.ruoyi.web.controller.yuncang.api.basic;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.web.controller.yuncang.utils.WdtClient;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ApiGoodsSpecPush {
+
+ @SuppressWarnings("unchecked")
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+ WdtClient client = new WdtClient("apidevnew2", "hytycw02-test", "c7ae51196", "https://sandbox.wangdian.cn/openapi2/");
+ //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
+ //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
+
+ Map<String, Object> api_goods_info = new HashMap<String,Object>();
+ Map<String, Object>[] goods_list = new Map[1];
+
+ goods_list[0] = new HashMap<String,Object>();
+ goods_list[0].put("goods_id", "20260109100903");
+ goods_list[0].put("spec_id","20260109100903");
+ goods_list[0].put("goods_no", "stest");
+ goods_list[0].put("spec_no", "stes12");
+ goods_list[0].put("status", "1");
+
+ api_goods_info.put("platform_id", "127");
+ api_goods_info.put("shop_no", "hytycw02-test");
+ api_goods_info.put("goods_list", goods_list);
+
+ //通过第三方json解析工具类fastjson将map解析成json
+ String api_goods_info_json = JSON.toJSONString(api_goods_info);
+ //System.out.println(goods_list_json);
+
+ Map<String, String> params = new HashMap<String, String>();
+
+ params.put("api_goods_info", api_goods_info_json);
+ try {
+ String response = client.execute("api_goodsspec_push.php", params);
+ System.out.println(response);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/VipApiGoodsQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/VipApiGoodsQuery.java
new file mode 100644
index 0000000..40def1a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/basic/VipApiGoodsQuery.java
@@ -0,0 +1,28 @@
+package com.ruoyi.web.controller.yuncang.api.basic;
+
+import com.ruoyi.web.controller.yuncang.utils.WdtClient;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class VipApiGoodsQuery {
+
+ public static void main(String[] args) {
+ WdtClient client = new WdtClient("apidevnew2", "hytycw02-test", "c7ae51196", "https://sandbox.wangdian.cn/openapi2/");
+ //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
+ //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
+
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("start_time", "2019-01-01 00:00:00");
+ params.put("end_time", "2019-01-30 00:00:00");
+ params.put("page_no", "0");
+ params.put("page_size", "10");
+ params.put("shop_no", "hytycw02-test"); try {
+ String response = client.execute("vip_api_goods_query.php", params);
+ System.out.println(response);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/trade/TradePush.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/trade/TradePush.java
index aa19a43..bf0df8d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/trade/TradePush.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yuncang/api/trade/TradePush.java
@@ -34,7 +34,10 @@
*/
public static JSONObject tradePush(String sid, String appkey, String appsecret, String url,
TErpProcurement erpProcurement, List<TErpProcurementGoods> erpProcurementGoods,
- Integer trade_status,String clinicName,Integer status,Integer refund_status,String shop_no) {
+ Integer trade_status,String clinicName,Integer status,Integer refund_status,
+ String shop_no,String goods_id,String spec_id,String goods_no,String spec_no,
+ String receiver_name,String receiver_province,String receiver_city,
+ String receiver_district,String receiver_address,String receiver_mobile) {
WdtClient client = new WdtClient(sid, appkey, appsecret, url);
//测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
//调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
@@ -48,10 +51,10 @@
order_1.put("price", erpProcurementGood.getPurchasePrice());
order_1.put("status", status);
order_1.put("refund_status", refund_status);
- order_1.put("goods_id", "18344");
- order_1.put("spec_id", "18656");
- order_1.put("goods_no", "ghs2");
- order_1.put("spec_no", "ghs201812070212123");
+ order_1.put("goods_id", goods_id);
+ order_1.put("spec_id", spec_id);
+ order_1.put("goods_no", goods_no);
+ order_1.put("spec_no", spec_no);
order_1.put("goods_name", erpProcurementGood.getGoodsName());
order_1.put("discount", 0); //子订单折扣
order_1.put("adjust_amount", 0); //手工调整,特别注意:正的表示加价,负的表示减价
@@ -67,12 +70,12 @@
trade_1.put("trade_time", DateUtils.localDateTimeToDate(erpProcurement.getCreateTime()));
trade_1.put("pay_time", DateUtils.localDateTimeToDate(erpProcurement.getPayTime()));
trade_1.put("buyer_nick", clinicName);
- trade_1.put("receiver_name", "123");
- trade_1.put("receiver_province", "河南省");
- trade_1.put("receiver_city", "周口市");
- trade_1.put("receiver_district", "川汇区");
- trade_1.put("receiver_address", "123");
- trade_1.put("receiver_mobile", "26283920011");
+ trade_1.put("receiver_name", receiver_name);
+ trade_1.put("receiver_province", receiver_province);
+ trade_1.put("receiver_city", receiver_city);
+ trade_1.put("receiver_district", receiver_district);
+ trade_1.put("receiver_address", receiver_address);
+ trade_1.put("receiver_mobile", receiver_mobile);
// trade_1.put("logistics_type", 4);
trade_1.put("post_amount", 0);
trade_1.put("cod_amount", 0);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmClinicDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmClinicDTO.java
index 8dfbb27..d4f3756 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmClinicDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmClinicDTO.java
@@ -1,9 +1,12 @@
package com.ruoyi.system.dto;
import com.ruoyi.system.model.TCrmClinic;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+
+import java.util.List;
@Data
@ApiModel(value="TCrmClinicDTO对象", description="crm诊所管理")
@@ -12,4 +15,7 @@
@ApiModelProperty(value = "密码")
private String password;
+ @ApiModelProperty(value = "云仓仓库集合")
+ private List<TCrmClinicCloudWarehouse> crmClinicCloudWarehouses;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmSupplierDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmSupplierDTO.java
index 5b99b6c..64c14b8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmSupplierDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TCrmSupplierDTO.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.dto;
import com.ruoyi.system.model.TCrmSupplier;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -17,4 +18,7 @@
@ApiModelProperty(value = "仓库id")
private String warehouseId;
+ @ApiModelProperty(value = "云仓店铺对象集合")
+ private List<TCrmSupplierCloudShop> crmSupplierCloudShops;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpCloudGoodsExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpCloudGoodsExcel.java
new file mode 100644
index 0000000..78ebad1
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TErpCloudGoodsExcel.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.importExcel;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "云仓商品导入Excel")
+public class TErpCloudGoodsExcel {
+
+
+ @Excel(width = 30,name = "*商品名称")
+ private String goodsName;
+
+ @Excel(width = 30,name = "*商品编码")
+ private String cloudGoodsCode;
+
+ @Excel(width = 30,name = "*规格编码")
+ private String cloudSpecCode;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmClinicCloudWarehouseMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmClinicCloudWarehouseMapper.java
new file mode 100644
index 0000000..c53ceba
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmClinicCloudWarehouseMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
+
+/**
+ * <p>
+ * 诊所仓库 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TCrmClinicCloudWarehouseMapper extends BaseMapper<TCrmClinicCloudWarehouse> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmSupplierCloudShopMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmSupplierCloudShopMapper.java
new file mode 100644
index 0000000..1a56875
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TCrmSupplierCloudShopMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
+
+/**
+ * <p>
+ * 供应商店铺 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TCrmSupplierCloudShopMapper extends BaseMapper<TCrmSupplierCloudShop> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCloudConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCloudConfigMapper.java
new file mode 100644
index 0000000..143799c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysCloudConfigMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.model.TSysCloudConfig;
+
+/**
+ * <p>
+ * 云仓配置 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TSysCloudConfigMapper extends BaseMapper<TSysCloudConfig> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinicCloudWarehouse.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinicCloudWarehouse.java
new file mode 100644
index 0000000..c143d09
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmClinicCloudWarehouse.java
@@ -0,0 +1,46 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 诊所仓库
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_crm_clinic_cloud_warehouse")
+@ApiModel(value="TCrmClinicCloudWarehouse对象", description="诊所仓库")
+public class TCrmClinicCloudWarehouse implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty(value = "诊所id")
+ @TableField("clinic_id")
+ private String clinicId;
+
+ @ApiModelProperty(value = "云仓类型 1=旺店通")
+ @TableField("cloud_warehouse")
+ private Integer cloudWarehouse;
+
+ @ApiModelProperty(value = "仓库编号")
+ @TableField("cloud_warehouse_no")
+ private String cloudWarehouseNo;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmSupplierCloudShop.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmSupplierCloudShop.java
new file mode 100644
index 0000000..af8c2f6
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCrmSupplierCloudShop.java
@@ -0,0 +1,46 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 供应商店铺
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_crm_supplier_cloud_shop")
+@ApiModel(value="TCrmSupplierCloudShop对象", description="供应商店铺")
+public class TCrmSupplierCloudShop implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty(value = "供应商id")
+ @TableField("supplier_id")
+ private String supplierId;
+
+ @ApiModelProperty(value = "云仓类型 1=旺店通")
+ @TableField("cloud_warehouse")
+ private Integer cloudWarehouse;
+
+ @ApiModelProperty(value = "店铺编号")
+ @TableField("cloud_shop_no")
+ private String cloudShopNo;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
index 2b8ab00..0c71993 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TErpGoods.java
@@ -261,6 +261,27 @@
@ApiModelProperty(value = "下架 1平台操作 2供应商操作")
@TableField("state_user")
private Integer stateUser;
+
+ @ApiModelProperty(value = "云仓类型 1=旺店通")
+ @TableField("cloud_warehouse")
+ private Integer cloudWarehouse;
+
+ @ApiModelProperty(value = "货品ID")
+ @TableField("cloud_goods_id")
+ private String cloudGoodsId;
+
+ @ApiModelProperty(value = "规格ID")
+ @TableField("cloud_spec_id")
+ private String cloudSpecId;
+
+ @ApiModelProperty(value = "商品编码")
+ @TableField("cloud_goods_code")
+ private String cloudGoodsCode;
+
+ @ApiModelProperty(value = "规格编码")
+ @TableField("cloud_spec_code")
+ private String cloudSpecCode;
+
/**
* 新增执行
*/
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCloudConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCloudConfig.java
new file mode 100644
index 0000000..574dcbb
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TSysCloudConfig.java
@@ -0,0 +1,54 @@
+package com.ruoyi.system.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 云仓配置
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_sys_cloud_config")
+@ApiModel(value="TSysCloudConfig对象", description="云仓配置")
+public class TSysCloudConfig implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty(value = "云仓类型 1=旺店通")
+ @TableField("cloud_warehouse")
+ private Integer cloudWarehouse;
+
+ @ApiModelProperty(value = "卖家账号,接口请求的公共参数sid")
+ @TableField("sid")
+ private String sid;
+
+ @ApiModelProperty(value = "接口账号,接口请求的公共参数appkey")
+ @TableField("app_key")
+ private String appKey;
+
+ @ApiModelProperty(value = "接口秘钥,接口请求的参数appsecret ,用于计算签名")
+ @TableField("app_secret")
+ private String appSecret;
+
+ @ApiModelProperty(value = "接口地址,接口请求的公共参数url")
+ @TableField("url")
+ private String url;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmClinicCloudWarehouseService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmClinicCloudWarehouseService.java
new file mode 100644
index 0000000..9c26be9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmClinicCloudWarehouseService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
+
+/**
+ * <p>
+ * 诊所仓库 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TCrmClinicCloudWarehouseService extends IService<TCrmClinicCloudWarehouse> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmSupplierCloudShopService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmSupplierCloudShopService.java
new file mode 100644
index 0000000..2d7317f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TCrmSupplierCloudShopService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
+
+/**
+ * <p>
+ * 供应商店铺 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TCrmSupplierCloudShopService extends IService<TCrmSupplierCloudShop> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCloudConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCloudConfigService.java
new file mode 100644
index 0000000..f95b1a6
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TSysCloudConfigService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.TSysCloudConfig;
+
+/**
+ * <p>
+ * 云仓配置 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+public interface TSysCloudConfigService extends IService<TSysCloudConfig> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicCloudWarehouseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicCloudWarehouseServiceImpl.java
new file mode 100644
index 0000000..1d08025
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicCloudWarehouseServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.mapper.TCrmClinicCloudWarehouseMapper;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
+import com.ruoyi.system.service.TCrmClinicCloudWarehouseService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 诊所仓库 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Service
+public class TCrmClinicCloudWarehouseServiceImpl extends ServiceImpl<TCrmClinicCloudWarehouseMapper, TCrmClinicCloudWarehouse> implements TCrmClinicCloudWarehouseService {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java
index 264a56b..d89d1a6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmClinicServiceImpl.java
@@ -14,12 +14,11 @@
import com.ruoyi.system.mapper.TCrmClinicMapper;
import com.ruoyi.system.mapper.TCrmClinicPointsMapper;
import com.ruoyi.system.model.TCrmClinic;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
import com.ruoyi.system.model.TCrmClinicPoints;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.query.TCrmClinicQuery;
-import com.ruoyi.system.service.ISysUserService;
-import com.ruoyi.system.service.TCrmClinicService;
-import com.ruoyi.system.service.TErpProcurementService;
+import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.TCrmClinicVO;
import com.ruoyi.system.vo.TCrmSupplierVO;
import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +51,8 @@
private TErpProcurementService erpProcurementService;
@Autowired
private TCrmClinicPointsMapper crmClinicPointsMapper;
+ @Autowired
+ private TCrmClinicCloudWarehouseService crmClinicCloudWarehouseService;
@Override
public PageInfo<TCrmClinicVO> pageList(TCrmClinicQuery query) {
@@ -107,6 +108,12 @@
return R.fail(dto.getPhone()+"-账号已存在");
}
this.save(dto);
+ // 添加云仓仓库信息
+ List<TCrmClinicCloudWarehouse> crmClinicCloudWarehouses = dto.getCrmClinicCloudWarehouses();
+ for (TCrmClinicCloudWarehouse crmClinicCloudWarehouse : crmClinicCloudWarehouses) {
+ crmClinicCloudWarehouse.setClinicId(dto.getId());
+ }
+ crmClinicCloudWarehouseService.saveBatch(crmClinicCloudWarehouses);
// 添加账号
SysUser user = new SysUser();
user.setUserName(dto.getPhone());
@@ -132,6 +139,14 @@
return R.fail(dto.getPhone()+"-账号已存在");
}
this.updateById(dto);
+ // 删除云仓仓库信息
+ crmClinicCloudWarehouseService.remove(Wrappers.lambdaQuery(TCrmClinicCloudWarehouse.class).eq(TCrmClinicCloudWarehouse::getClinicId, dto.getId()));
+ // 添加云仓仓库信息
+ List<TCrmClinicCloudWarehouse> crmClinicCloudWarehouses = dto.getCrmClinicCloudWarehouses();
+ for (TCrmClinicCloudWarehouse crmClinicCloudWarehouse : crmClinicCloudWarehouses) {
+ crmClinicCloudWarehouse.setClinicId(dto.getId());
+ }
+ crmClinicCloudWarehouseService.saveBatch(crmClinicCloudWarehouses);
SysUser user = sysUserService.selectUserById(dto.getUserId());
if(Objects.nonNull(user)){
// 修改账号
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierCloudShopServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierCloudShopServiceImpl.java
new file mode 100644
index 0000000..51b51a5
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierCloudShopServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.mapper.TCrmSupplierCloudShopMapper;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
+import com.ruoyi.system.service.TCrmSupplierCloudShopService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 供应商店铺 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Service
+public class TCrmSupplierCloudShopServiceImpl extends ServiceImpl<TCrmSupplierCloudShopMapper, TCrmSupplierCloudShop> implements TCrmSupplierCloudShopService {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierServiceImpl.java
index c820888..3a281c6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TCrmSupplierServiceImpl.java
@@ -13,10 +13,12 @@
import com.ruoyi.system.mapper.TCrmSupplierMapper;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
import com.ruoyi.system.model.TCrmSupplierToWarehouse;
import com.ruoyi.system.query.TCrmBranchQuery;
import com.ruoyi.system.query.TCrmSupplierQuery;
import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.TCrmSupplierCloudShopService;
import com.ruoyi.system.service.TCrmSupplierService;
import com.ruoyi.system.service.TCrmSupplierToWarehouseService;
import com.ruoyi.system.vo.TCrmSupplierVO;
@@ -44,6 +46,8 @@
private ISysUserService sysUserService;
@Autowired
private TCrmSupplierToWarehouseService crmSupplierToWarehouseService;
+ @Autowired
+ private TCrmSupplierCloudShopService crmSupplierCloudShopService;
@Override
public PageInfo<TCrmSupplierVO> pageList(TCrmSupplierQuery query) {
@@ -86,6 +90,12 @@
// }
// crmSupplierToWarehouseService.saveBatch(crmSupplierToWarehouses);
// }
+ // 添加供应商云仓店铺信息
+ List<TCrmSupplierCloudShop> crmSupplierCloudShops = dto.getCrmSupplierCloudShops();
+ for (TCrmSupplierCloudShop crmSupplierCloudShop : crmSupplierCloudShops) {
+ crmSupplierCloudShop.setSupplierId(dto.getId());
+ }
+ crmSupplierCloudShopService.saveBatch(crmSupplierCloudShops);
// 添加账号
SysUser user = new SysUser();
user.setUserName(dto.getAccount());
@@ -126,6 +136,14 @@
// }
// crmSupplierToWarehouseService.saveBatch(crmSupplierToWarehouses);
// }
+ // 删除相关云仓店铺信息
+ crmSupplierCloudShopService.remove(Wrappers.lambdaQuery(TCrmSupplierCloudShop.class).eq(TCrmSupplierCloudShop::getSupplierId, dto.getId()));
+ // 添加供应商云仓店铺信息
+ List<TCrmSupplierCloudShop> crmSupplierCloudShops = dto.getCrmSupplierCloudShops();
+ for (TCrmSupplierCloudShop crmSupplierCloudShop : crmSupplierCloudShops) {
+ crmSupplierCloudShop.setSupplierId(dto.getId());
+ }
+ crmSupplierCloudShopService.saveBatch(crmSupplierCloudShops);
if(Objects.nonNull(user)){
// 修改账号
user.setPhonenumber(dto.getPhone());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCloudConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCloudConfigServiceImpl.java
new file mode 100644
index 0000000..130703a
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysCloudConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.mapper.TSysCloudConfigMapper;
+import com.ruoyi.system.model.TSysCloudConfig;
+import com.ruoyi.system.service.TSysCloudConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 云仓配置 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2026-02-03
+ */
+@Service
+public class TSysCloudConfigServiceImpl extends ServiceImpl<TSysCloudConfigMapper, TSysCloudConfig> implements TSysCloudConfigService {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java
index f93aba5..d62856b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmClinicVO.java
@@ -1,11 +1,13 @@
package com.ruoyi.system.vo;
import com.ruoyi.system.model.TCrmClinic;
+import com.ruoyi.system.model.TCrmClinicCloudWarehouse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
+import java.util.List;
@Data
@ApiModel(value = "crm诊所管理VO")
@@ -29,4 +31,7 @@
@ApiModelProperty(value = "业绩状态 1=未达成 2=已达成")
private Integer performanceStatus = 1;
+ @ApiModelProperty(value = "诊所云仓仓库信息")
+ private List<TCrmClinicCloudWarehouse> crmClinicCloudWarehouses;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmSupplierVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmSupplierVO.java
index 1b41530..4e90caa 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmSupplierVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TCrmSupplierVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.vo;
import com.ruoyi.system.model.TCrmSupplier;
+import com.ruoyi.system.model.TCrmSupplierCloudShop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -17,4 +18,7 @@
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
+ @ApiModelProperty(value = "云仓店铺信息")
+ private List<TCrmSupplierCloudShop> crmSupplierCloudShops;
+
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TCrmClinicCloudWarehouseMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TCrmClinicCloudWarehouseMapper.xml
new file mode 100644
index 0000000..99a13bc
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TCrmClinicCloudWarehouseMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TCrmClinicCloudWarehouseMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TCrmClinicCloudWarehouse">
+ <id column="id" property="id" />
+ <result column="clinic_id" property="clinicId" />
+ <result column="cloud_warehouse" property="cloudWarehouse" />
+ <result column="cloud_warehouse_no" property="cloudWarehouseNo" />
+ </resultMap>
+
+ <!-- 通用查询结果列 -->
+ <sql id="Base_Column_List">
+ id, clinic_id, cloud_warehouse, cloud_warehouse_no
+ </sql>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TCrmSupplierCloudShopMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TCrmSupplierCloudShopMapper.xml
new file mode 100644
index 0000000..b3b3c1e
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TCrmSupplierCloudShopMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TCrmSupplierCloudShopMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TCrmSupplierCloudShop">
+ <id column="id" property="id" />
+ <result column="supplier_id" property="supplierId" />
+ <result column="cloud_warehouse" property="cloudWarehouse" />
+ <result column="cloud_shop_no" property="cloudShopNo" />
+ </resultMap>
+
+ <!-- 通用查询结果列 -->
+ <sql id="Base_Column_List">
+ id, supplier_id, cloud_warehouse, cloud_shop_no
+ </sql>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
index 4497677..20d5976 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
@@ -30,6 +30,11 @@
<result column="clinic_purchase_price" property="clinicPurchasePrice"/>
<result column="platform_commission_price" property="platformCommissionPrice"/>
<result column="retail_price" property="retailPrice"/>
+ <result column="cloud_warehouse" property="cloudWarehouse"/>
+ <result column="cloud_goods_id" property="cloudGoodsId"/>
+ <result column="cloud_spec_id" property="cloudSpecId"/>
+ <result column="cloud_goods_code" property="cloudGoodsCode"/>
+ <result column="cloud_spec_code" property="cloudSpecCode"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="create_by" property="createBy"/>
@@ -44,7 +49,8 @@
low_unit_id, is_prescription_drug, goods_spec, warning_inventory, sales_amount, packing_unit_id, instructions_use,
side_effect, clinic_purchase_price, platform_commission_price, create_time, update_time, create_by,`state`,
update_by, disabled,simplified_code,dosage_form,usage_classification,product_brand,place_of_origin,ingredient,
- trait,indication,taboo,precautions,interaction,storage,supplier_name,cover,detail_pictures,retail_price
+ trait,indication,taboo,precautions,interaction,storage,supplier_name,cover,detail_pictures,retail_price,
+ cloud_warehouse,cloud_goods_code,cloud_spec_code,cloud_goods_id,cloud_spec_id
</sql>
@@ -68,7 +74,7 @@
t1.content_state,
t1.content_remark,
t1.state_remark,
- t1.cover,t1.detail_pictures,t1.retail_price,
+ t1.cover,t1.detail_pictures,t1.retail_price,t1.cloud_warehouse,t1.cloud_goods_code,t1.cloud_spec_code,t1.cloud_goods_id,t1.cloud_spec_id,
case t1.goods_source
when 1 then t2.supplier_name
when 2 then t1.supplier_name
@@ -342,7 +348,7 @@
t1.interaction,
t1.content,t1.content_state,
t1.storage,t1.state_remark,
- t1.cover,t1.detail_pictures,t1.retail_price,
+ t1.cover,t1.detail_pictures,t1.retail_price,t1.cloud_warehouse,t1.cloud_goods_code,t1.cloud_spec_code,t1.cloud_goods_id,t1.cloud_spec_id,
t2.supplier_name
from t_erp_goods t1 left join t_crm_supplier t2 on t1.supplier_clinic_id = t2.id and t1.goods_source =1
where t1.disabled = 0 and t1.goods_source =1
@@ -417,7 +423,7 @@
t1.update_time,
t1.create_id,
t3.type_name,
- t1.cover,t1.detail_pictures,t1.retail_price
+ t1.cover,t1.detail_pictures,t1.retail_price,t1.cloud_warehouse,t1.cloud_goods_code,t1.cloud_goods_id,t1.cloud_spec_id,t1.cloud_spec_code
FROM t_erp_goods t1
LEFT JOIN t_crm_supplier t2 ON t1.supplier_clinic_id = t2.id
left join t_erp_goods_type t3 on t1.type_id = t3.id
diff --git a/ruoyi-system/src/main/resources/mapper/system/TSysCloudConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TSysCloudConfigMapper.xml
new file mode 100644
index 0000000..7f00475
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TSysCloudConfigMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TSysCloudConfigMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TSysCloudConfig">
+ <id column="id" property="id" />
+ <result column="cloud_warehouse" property="cloudWarehouse" />
+ <result column="sid" property="sid" />
+ <result column="app_key" property="appKey" />
+ <result column="app_secret" property="appSecret" />
+ <result column="url" property="url" />
+ </resultMap>
+
+ <!-- 通用查询结果列 -->
+ <sql id="Base_Column_List">
+ id, cloud_warehouse, sid, app_key, app_secret, url
+ </sql>
+
+</mapper>
--
Gitblit v1.7.1