From dd73b5edc202884fca6a3a7d9b1810c95d77e288 Mon Sep 17 00:00:00 2001 From: Gauthier LO Date: Thu, 12 Dec 2024 12:52:13 +0100 Subject: [PATCH 01/10] config --- .../stockDoChangeStock/SkuChangeRequest.java | 32 +++++ .../SkuChangeRequestBody.java | 112 ++++++++++++++++++ .../SkuChangeRequestErrorException.java | 11 ++ .../stockDoChangeStock/SkuChangeResponse.java | 64 ++++++++++ .../src/main/resources/application-dev.yml | 19 ++- 5 files changed, 234 insertions(+), 4 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequest.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestBody.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestErrorException.java create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeResponse.java diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequest.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequest.java new file mode 100644 index 000000000..adc218097 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequest.java @@ -0,0 +1,32 @@ +package org.jeecg.modules.business.domain.api.mabang.stockDoChangeStock; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.domain.api.mabang.Request; +import org.springframework.http.ResponseEntity; + +/** + * This class contains some key information and necessary procedures + * to send a request to mabang "get order list" API, for example: target URL, + * correspondent HTTP method, procedure to generate authorization. + *

+ * One can use static method {@code sendRequest} to send request with body, + * and then get respective response. Or use instance of this class, see below. + *

+ * Because data returned by target API is paginated. One can retrieve all data + * by calling next and hasNext. + */ +@Slf4j +public class SkuChangeRequest extends Request { + + public SkuChangeRequest(SkuChangeRequestBody body) { + super(body); + } + + + @Override + public SkuChangeResponse send() { + ResponseEntity res = rawSend(); + return SkuChangeResponse.parse(JSON.parseObject(res.getBody())); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestBody.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestBody.java new file mode 100644 index 000000000..341fb5015 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestBody.java @@ -0,0 +1,112 @@ +package org.jeecg.modules.business.domain.api.mabang.stockDoChangeStock; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; +import org.jeecg.modules.business.domain.api.mabang.RequestBody; +import org.jeecg.modules.business.domain.api.mabang.doSearchSkuListNew.SkuData; + +import java.math.BigDecimal; +import java.util.function.Function; + +@Getter +@Setter +public class SkuChangeRequestBody implements RequestBody { + + private String stockSku; + private String nameCn; + private String nameEn; + private Integer status; + private BigDecimal salePrice; + private BigDecimal declareValue; + private String declareName; + private String declareEname; + private String warehouse; + private String remark; + private Integer hasBattery; + private Integer magnetic; + private Integer powder; + private Integer isPaste; + private Integer noLiquidCosmetic; + private Integer isFlammable; + private Integer isKnife; + private Integer isGift; + private String supplier; + private String supplierLink; + + @Override + public String api() { + return "stock-do-change-stock"; + } + + @Override + public JSONObject parameters() { + JSONObject json = new JSONObject(); + putNonNull(json, "stockSku", stockSku); + putNonNull(json, "nameCN", nameCn); + putNonNull(json, "nameEN", nameEn); + putNonNull(json, "status", status); + putNonNull(json, "salePrice", salePrice); + putNonNull(json, "declareValue", declareValue); + putNonNull(json, "declareName", declareName); + putNonNull(json, "declareEname", declareEname); + JSONArray warehouseData = new JSONArray(); + JSONObject warehouse = new JSONObject(); + warehouse.put("name", this.warehouse); + warehouseData.add(warehouse); + json.put("warehouseData", warehouseData.toJSONString()); + putNonNull(json, "weight", remark); + putNonNull(json, "saleRemark", remark); + putNonNull(json, "hasBattery", hasBattery); + putNonNull(json, "magnetic", magnetic); + putNonNull(json, "powder", powder); + putNonNull(json, "ispaste", isPaste); + putNonNull(json, "noLiquidCosmetic", noLiquidCosmetic); + putNonNull(json, "is_flammable", isFlammable); + putNonNull(json, "is_knife", isKnife); + putNonNull(json, "isGift", isGift); + putNonNull(json, "autoCreateSupplier", 1); + JSONArray supplierData = new JSONArray(); + JSONObject supplier = new JSONObject(); + supplier.put("name", this.supplier); + supplier.put("productLinkAddress", this.supplierLink); + supplier.put("flag", 1); + supplierData.add(supplier); + json.put("suppliersData", supplierData.toJSONString()); + return json; + } + + public SkuChangeRequestBody(SkuData data) { + this.stockSku = data.getErpCode(); + this.nameCn = data.getNameCN(); + this.nameEn = data.getNameEN(); + this.salePrice = data.getSalePrice(); + this.declareValue = data.getDeclareValue(); + this.declareName = data.getDeclareNameZh(); + this.declareEname = data.getDeclareNameEn(); + this.warehouse = data.getWarehouse(); + this.remark = data.getSaleRemark(); + this.hasBattery = data.getHasBattery(); + this.magnetic = data.getMagnetic(); + this.powder = data.getPowder(); + this.isPaste = data.getIsPaste(); + this.noLiquidCosmetic = data.getNoLiquidCosmetic(); + this.isFlammable = data.getIsFlammable(); + this.isKnife = data.getIsKnife(); + this.isGift = data.getIsGift(); + this.supplier = data.getSupplier(); + this.supplierLink = data.getSupplierLink(); + } + + private void putNonNull(JSONObject json, String key, E value) { + if (value != null) { + json.put(key, value); + } + } + private void putNonNull(JSONObject json, String key, E value, Function mapper) { + if (value != null) { + json.put(key, mapper.apply(value)); + } + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestErrorException.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestErrorException.java new file mode 100644 index 000000000..96dc78085 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeRequestErrorException.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.business.domain.api.mabang.stockDoChangeStock; + +/** + * This class represents error that is returned by target stock-do-change-stock API + * Message will contain error details. + */ +public class SkuChangeRequestErrorException extends RuntimeException { + public SkuChangeRequestErrorException(String msg) { + super(msg); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeResponse.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeResponse.java new file mode 100644 index 000000000..ad8ecee25 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/stockDoChangeStock/SkuChangeResponse.java @@ -0,0 +1,64 @@ +package org.jeecg.modules.business.domain.api.mabang.stockDoChangeStock; + +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.domain.api.mabang.Response; + +/** + * Immutable object + */ +@Slf4j +@Getter +public class SkuChangeResponse extends Response { + /** + * Current page data + */ + private final JSONObject data; + + private final String stockId; + + private final String stockSku; + + public SkuChangeResponse(Code code, JSONObject data, String stockId, String stockSku) { + super(code); + this.data = data; + this.stockId = stockId; + this.stockSku = stockSku; + } + + /** + * Make an instance by parsing json, it only checks validity of code. + * if json is not valid, return null + * + * @param json the json to parse + * @return Instance + * @throws SkuChangeRequestErrorException if response code represents error. + */ + public static SkuChangeResponse parse(JSONObject json) throws SkuChangeRequestErrorException { + log.debug("Constructing a response by json."); + String code = json.getString("code"); + if (code.equals(Code.ERROR.value)) + throw new SkuChangeRequestErrorException(json.getString("message")); + + JSONObject data = json.getJSONObject("data"); + String stockId = data.getString("stockId"); + String stockSku = data.getString("stockSku"); + if(data != null) { + log.info("Constructed response: data contained {}", data); + } + else { + log.info("Data is null"); + } + return new SkuChangeResponse(Code.SUCCESS, data, stockId, stockSku); + } + + + + @Override + public String toString() { + return "SkuListResponse{" + + ", data=" + data + + '}'; + } +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index 5965d0d42..55fdc1e74 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -176,6 +176,11 @@ spring: host: 127.0.0.1 port: 6379 password: '' + #MongoDB 配置 + data: + mongodb: + authentication-database: xxx + uri: xxx #mybatis plus 设置 mybatis-plus: mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml @@ -189,7 +194,7 @@ mybatis-plus: table-underline: true configuration: # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 返回类型为Map,显示null对应的字段 call-setters-on-nulls: true #jeecg专用配置 @@ -237,6 +242,9 @@ jeecg: shippingInvoiceDetailDir: C://dev//invoices//shippingDetail shippingInvoicePdfDir: C://dev//invoices//pdf//shipping shippingInvoiceDetailPdfDir: C://dev//invoices//pdf//shippingDetail + invoiceDetailExportDir: xxx + # sku csv file for image search + skuCsvPath: xxx #webapp文件路径 webapp: /opt/webapp shiro: @@ -346,7 +354,10 @@ justauth: timeout: 1h mabang: api: - appkey: "87a1a0c46df86eb2683e74776894dae9" - devid: "200809" + appkey: "xxx" + devid: "xxx" company: - orgName: "WIA" \ No newline at end of file + orgName: "xxx" + jessy: + name: "xxx" + email: "xxx" \ No newline at end of file From 007a52e932afa044dcc229459a41c44ccd615d2d Mon Sep 17 00:00:00 2001 From: Gauthier LO Date: Fri, 13 Dec 2024 15:14:58 +0100 Subject: [PATCH 02/10] fix sku purchase stock in order --- .../java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml | 4 ++++ .../service/impl/purchase/PurchaseOrderServiceImpl.java | 2 ++ 2 files changed, 6 insertions(+) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml index c9e06aeb8..5911990b1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml @@ -183,6 +183,7 @@ JOIN client c ON s.owner_id = c.id WHERE c.id = #{clientId} AND po.erp_status IN ('1','2') + AND po.can_send = 1 AND poc.erp_status IN ('1','2') GROUP BY sku_id ) @@ -331,6 +332,7 @@ JOIN client c ON s.owner_id = c.id WHERE c.id = #{clientId} AND po.erp_status IN ('1','2') + AND po.can_send = 1 AND poc.erp_status IN ('1','2') GROUP BY sku_id ) @@ -411,6 +413,7 @@ JOIN client c ON s.owner_id = c.id WHERE c.id = #{clientId} AND po.erp_status IN ('1','2') + AND po.can_send = 1 AND poc.erp_status IN ('1','2') GROUP BY sku_id ) @@ -475,6 +478,7 @@ JOIN client c ON s.owner_id = c.id WHERE c.id = #{clientId} AND po.erp_status IN ('1','2') + AND po.can_send = 1 AND poc.erp_status IN ('1','2') GROUP BY sku_id ) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java index b450bcbc9..6f95ea3bc 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/purchase/PurchaseOrderServiceImpl.java @@ -206,6 +206,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl Date: Fri, 13 Dec 2024 15:36:43 +0100 Subject: [PATCH 03/10] fix: extra_fee shop ordering --- .../java/org/jeecg/modules/business/mapper/xml/ShopMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShopMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShopMapper.xml index e42722914..277125c69 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShopMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ShopMapper.xml @@ -55,6 +55,7 @@ ON s.owner_id = c.id WHERE s.active = '1' AND c.active = '1' + ORDER BY c.internal_code, s.erp_code