diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/SkuController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/SkuController.java index 473f48a17..7a64c65c5 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/SkuController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/SkuController.java @@ -3,6 +3,7 @@ package org.jeecg.modules.business.controller.admin; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.base.CaseFormat; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -33,6 +34,8 @@ import java.io.IOException; import java.util.*; import java.util.stream.Collectors; +import static org.jeecg.common.util.SqlInjectionUtil.specialFilterContentForDictSql; + /** * @Description: SKU表 * @Author: jeecg-boot @@ -343,13 +346,53 @@ public class SkuController { .collect(Collectors.toList()) ); } + @GetMapping("/skuListByClient") + public Result skusListByClient(@RequestParam("clientId") String clientId) { + List skus = skuService.listByClientId(clientId); + return Result.OK(skus); + } @GetMapping("/skusByClient") - public Result skusByClient(@RequestParam String clientId) { - List skuOrdersPage = skuService.fetchSkusByClient(clientId); + public Result skusByClient(@RequestParam(name = "clientId") String clientId, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "50") Integer pageSize, + @RequestParam(name = "column", defaultValue = "erp_code") String column, + @RequestParam(name = "order", defaultValue = "ASC") String order, + @RequestParam(name = "erpCodes", required = false) String erpCodes, + @RequestParam(name = "zhNames", required = false) String zhNames, + @RequestParam(name = "enNames", required = false) String enNames + ) { + String parsedColumn = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column.replace("_dictText", "")); + String parsedOrder = order.toUpperCase(); + if(!parsedOrder.equals("ASC") && !parsedOrder.equals("DESC")) { + return Result.error("Error 400 Bad Request"); + } + try { + specialFilterContentForDictSql(parsedColumn); + } catch (RuntimeException e) { + return Result.error("Error 400 Bad Request"); + } + List allSkuOrdersPage = new ArrayList<>(); + List skuOrdersPage = new ArrayList<>(); + int total = 0; + if(erpCodes != null || zhNames != null || enNames != null) { + List erpCodeList = erpCodes == null ? null : Arrays.asList(erpCodes.split(",")); + List zhNameList = zhNames == null ? null : Arrays.asList(zhNames.split(",")); + List enNameList = enNames == null ? null : Arrays.asList(enNames.split(",")); + allSkuOrdersPage = skuService.fetchSkusByClientWithFilters(clientId, 1, -1, parsedColumn, parsedOrder, erpCodeList, zhNameList, enNameList); + skuOrdersPage = skuService.fetchSkusByClientWithFilters(clientId, pageNo, pageSize, parsedColumn, parsedOrder, erpCodeList, zhNameList, enNameList); + + } + else { + allSkuOrdersPage = skuService.fetchSkusByClient(clientId, 1, -1, parsedColumn, parsedOrder); + skuOrdersPage = skuService.fetchSkusByClient(clientId, pageNo, pageSize, parsedColumn, parsedOrder); + } + total = allSkuOrdersPage.size(); IPage page = new Page<>(); page.setRecords(skuOrdersPage); - page.setTotal(skuOrdersPage.size()); + page.setCurrent(pageNo); + page.setSize(pageSize); + page.setTotal(total); return Result.OK(page); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java index 913f2b3af..e6b0d835d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java @@ -508,7 +508,7 @@ public class InvoiceController { * @return A triplet of order, shipping invoice availability and purchase invoice availability */ @GetMapping(value = "/preShipping/ordersStatusByShops") - public Result getOrdersStatusByShops(@RequestParam("shopIds") String shopIds, + public Result getOrdersStatusByShops(@RequestParam(name = "shopIds") String shopIds, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "50") Integer pageSize, @RequestParam(name = "column", defaultValue = "order_time") String column, diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/SkuMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/SkuMapper.java index a853e6e62..1047e8685 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/SkuMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/SkuMapper.java @@ -54,7 +54,8 @@ public interface SkuMapper extends BaseMapper { List getSkuQuantitiesFromOrderIds(@Param("orderIds") List orderIds); - List fetchSkusByClient(@Param("clientId") String clientId); + List fetchSkusByClient(@Param("clientId") String clientId, @Param("offset") Integer offset, @Param("size") Integer pageSize, @Param("column") String column, @Param("order") String order); + List fetchSkusByClientWithFilters(@Param("clientId") String clientId, @Param("offset") Integer offset, @Param("size") Integer pageSize, @Param("column") String column, @Param("order") String order, @Param("erpCodes") String erpCodesRegex, @Param("zhNames") String zhNamesRegex, @Param("enNames") String enNamesRegex); String getIdFromErpCode(@Param("erpCode") String erpCode); @@ -65,4 +66,6 @@ public interface SkuMapper extends BaseMapper { void updateBatchStockByIds(@Param("skus") List skuToUpdate); List getInventoryByInvoiceNumber(@Param("invoiceNumber") String invoiceNumber); + + List listByClientId(@Param("clientId") String clientId); } 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 0b80bae6f..bcc68487f 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 @@ -160,7 +160,7 @@ JOIN shop s ON po.shop_id = s.id JOIN client c ON s.owner_id = c.id WHERE c.id = #{clientId} - AND po.erp_status IN ('1','2') + AND po.erp_status IN ('1','2') AND poc.erp_status IN ('1','2') GROUP BY sku_id ) @@ -208,7 +208,92 @@ LEFT JOIN sales_42 s42 ON s.id = s42.sku_id LEFT JOIN sales_7 s7 ON s.id = s7.sku_id LEFT JOIN qtyInOrdersNotShipped ON s.id = qtyInOrdersNotShipped.ID - WHERE client_sku.client_id = #{clientId}; + WHERE client_sku.client_id = #{clientId} + ORDER BY ${column} ${order} + + LIMIT #{offset}, #{size} + + ; + + + SELECT s.id, + s.erp_code, + p.en_name as productEn, + p.zh_name as product + FROM sku s + JOIN client_sku ON s.id = client_sku.sku_id + JOIN product p ON s.product_id = p.id + WHERE client_sku.client_id = #{clientId}; + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ISkuService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ISkuService.java index ecc8062f6..c981cee02 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ISkuService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/ISkuService.java @@ -95,12 +95,13 @@ public interface ISkuService extends IService { List getSkuQuantitiesFromOrderIds(List orderIds); - List fetchSkusByClient(String clientId); + List fetchSkusByClient(String clientId, Integer pageNo, Integer pageSize, String column, String order); + List fetchSkusByClientWithFilters(String clientId, Integer pageNo, Integer pageSize, String column, String order, List erpCodes, List zhNames, List enNames); void addSkuQuantity(Map quantityPurchased); - String getIdFromErpCode(String erpCode); Sku getByErpCode(String erpCode); void updateBatchStockByIds(List skuToUpdate); List getInventoryByInvoiceNumber(String invoiceNumber); + List listByClientId(String clientId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuServiceImpl.java index 067a1794a..5be3da6e3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuServiceImpl.java @@ -417,8 +417,37 @@ public class SkuServiceImpl extends ServiceImpl implements ISkuS } @Override - public List fetchSkusByClient(String clientId) { - return skuMapper.fetchSkusByClient(clientId); + public List fetchSkusByClient(String clientId, Integer pageNo, Integer pageSize, String column, String order) { + int offset = (pageNo - 1) * pageSize; + return skuMapper.fetchSkusByClient(clientId, offset, pageSize, column, order); + } + + @Override + public List fetchSkusByClientWithFilters(String clientId, Integer pageNo, Integer pageSize, String column, String order, List erpCodes, List zhNames, List enNames) { + int offset = (pageNo - 1) * pageSize; + StringBuilder erpCodesRegex= new StringBuilder(), zhNamesRegex = new StringBuilder(), enNamesRegex = new StringBuilder(); + if(erpCodes != null){ + erpCodesRegex.append("^"); + for(String name : erpCodes){ + erpCodesRegex.append("(?=.*").append(name).append(")"); + } + erpCodesRegex.append(".*"); + } + if(enNames != null){ + enNamesRegex.append("^"); + for(String name : enNames){ + enNamesRegex.append("(?=.*").append(name).append(")"); + } + enNamesRegex.append(".*"); + } + if(zhNames != null){ + zhNamesRegex.append("^"); + for(String name : zhNames){ + zhNamesRegex.append("(?=.*").append(name).append(")"); + } + zhNamesRegex.append(".*$"); + } + return skuMapper.fetchSkusByClientWithFilters(clientId, offset, pageSize, column, order, erpCodesRegex.toString(), zhNamesRegex.toString(), enNamesRegex.toString()); } @Override @@ -446,4 +475,9 @@ public class SkuServiceImpl extends ServiceImpl implements ISkuS return skuMapper.getInventoryByInvoiceNumber(invoiceNumber); } + @Override + public List listByClientId(String clientId) { + return skuMapper.listByClientId(clientId); + } + } \ No newline at end of file