diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java index c019404b0..ce5ef07c4 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java @@ -128,5 +128,7 @@ public class LoginUser { private String clientId; /**Mabang username*/ private String mabangUsername; + /**User code*/ + private String code; } 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 db4e63fe5..086b9c4d1 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 @@ -531,7 +531,7 @@ public class SkuController { sku.setLabelData(map.get("labelData")); return sku; } - @PostMapping("syncSkus") + @PostMapping("/syncSkus") public Result syncSkus(@RequestBody List erpCodes) { Map newSkusNeedTreatmentMap; @@ -607,4 +607,11 @@ public class SkuController { page.setTotal(total); return Result.OK(page); } + + @GetMapping(value = "/latestSkuCounter") + public Result latestSkuCounter(@RequestParam(name= "userCode") String userCode, + @RequestParam(name= "clientCode") String clientCode, + @RequestParam(name= "date") String date) { + return Result.OK(skuService.latestSkuCounter(userCode, clientCode, date)); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/shippingInvoice/ShippingInvoiceFactory.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/shippingInvoice/ShippingInvoiceFactory.java index f132a8fdc..53ce8ea6c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/shippingInvoice/ShippingInvoiceFactory.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/shippingInvoice/ShippingInvoiceFactory.java @@ -4,7 +4,6 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.User; import org.apache.commons.lang3.tuple.Pair; import org.jeecg.modules.business.controller.UserException; import org.jeecg.modules.business.domain.codeGeneration.CompleteInvoiceCodeRule; @@ -17,9 +16,7 @@ import org.jeecg.modules.business.service.*; import org.jeecg.modules.business.vo.*; import org.jeecg.modules.business.vo.clientPlatformOrder.section.OrdersStatisticData; import org.jetbrains.annotations.NotNull; -import org.simpleframework.xml.core.Complete; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.stereotype.Component; @@ -61,6 +58,7 @@ public class ShippingInvoiceFactory { private final Environment env; private final SimpleDateFormat SUBJECT_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + private final SimpleDateFormat CREATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final List EU_COUNTRY_LIST = Arrays.asList("Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus", "Czech", "Denmark", "Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", @@ -1341,7 +1339,7 @@ public class ShippingInvoiceFactory { Client client = clientMapper.getClientFromPurchase(purchaseId); List purchaseOrderSkuList = purchaseOrderContentMapper.selectInvoiceDataByID(purchaseId); List promotionDetails = skuPromotionHistoryMapper.selectPromotionByPurchase(purchaseId); - BigDecimal eurToUsd = exchangeRatesMapper.getExchangeRateFromDate("EUR", "USD", order.getCreateTime().toString()); + BigDecimal eurToUsd = exchangeRatesMapper.getExchangeRateFromDate("EUR", "USD", CREATE_TIME_FORMAT.format(order.getCreateTime())); return new PurchaseInvoice(client, invoiceCode, "Purchase Invoice", purchaseOrderSkuList, promotionDetails, eurToUsd); } public CompleteInvoice buildExistingCompleteInvoice(String invoiceCode, String clientId, String start, String end, String filetype, String shippingMethod) throws UserException { 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 cae71e6da..81fcdf091 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 @@ -84,4 +84,6 @@ public interface SkuMapper extends BaseMapper { List fetchUnpairedSkus(@Param("shopId") String shopId, @Param("offset") Integer offset, @Param("size") Integer pageSize, @Param("column") String column, @Param("order") String order); int countUnpairedSkus(@Param("shopId") String shopId); + + List latestSkuCounter(@Param("userCode") String userCode, @Param("clientCode") String clientCode, @Param("date") String date); } 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 5e76bb155..88349c633 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 @@ -816,4 +816,9 @@ AND poc.erp_status <> 5 AND s.id = #{shopId}; + 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 0a5b85017..20bf72ad3 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 @@ -128,4 +128,6 @@ public interface ISkuService extends IService { List fetchUnpairedSkus(String shopId, int offset, Integer pageSize, String column, String order); int countUnpairedSkus(String shopId); + + int latestSkuCounter(String userCode, String clientCode, String date); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuListMabangServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuListMabangServiceImpl.java index c46012754..cc615db90 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuListMabangServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/SkuListMabangServiceImpl.java @@ -510,11 +510,19 @@ public class SkuListMabangServiceImpl extends ServiceImpl skuSyncUpsert(List erpCodes) { Map newSkusNeedTreatmentMap = new HashMap<>(); - SkuListRequestBody body = new SkuListRequestBody(); - body.setStockSkuList(String.join(",", erpCodes)); - SkuListRawStream rawStream = new SkuListRawStream(body); - SkuListStream stream = new SkuListStream(rawStream); - List skusFromMabang = stream.all(); + List skusFromMabang = new ArrayList<>(); + List> skusPartition = Lists.partition(erpCodes, 50); + for(List skuPartition : skusPartition) { + SkuListRequestBody body = new SkuListRequestBody(); + body.setStockSkuList(String.join(",", skuPartition)); + SkuListRawStream rawStream = new SkuListRawStream(body); + SkuListStream stream = new SkuListStream(rawStream); + List partialSkusFromMabang = stream.all(); + if(!partialSkusFromMabang.isEmpty()) { + skusFromMabang.addAll(partialSkusFromMabang); + } + } + if (!skusFromMabang.isEmpty()) { // we save the skuDatas in DB // and store skus that need manual treatment 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 b1277edb7..18357e2da 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 @@ -626,4 +626,14 @@ public class SkuServiceImpl extends ServiceImpl implements ISkuS public int countUnpairedSkus(String shopId) { return skuMapper.countUnpairedSkus(shopId); } + + @Override + public int latestSkuCounter(String userCode, String clientCode, String date) { + List skus = skuMapper.latestSkuCounter(userCode, clientCode, date); + List counters = skus.stream().map(sku -> { + String counter = sku.split("-")[0].substring(8 + userCode.length()); + return Integer.parseInt(counter); + }).collect(Collectors.toList()); + return counters.stream().max(Integer::compareTo).orElse(0) + 1; + } } \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index acfeb9353..992b13069 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -1830,4 +1830,11 @@ public class SysUserController { return Result.error("Mabang username not found"); return Result.ok(sysUser.getMabangUsername()); } + @GetMapping(value = "/userCode") + public Result getUserCode() { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if(sysUser.getCode() == null || sysUser.getCode().isEmpty()) + return Result.error(404,"User code not found"); + return Result.ok(sysUser.getCode()); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java index 279dd07fe..594daaeac 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java @@ -190,6 +190,8 @@ public class SysUser implements Serializable { private String clientId; /**Mabang username*/ private String mabangUsername; + /** User code is used to identify who created a sku*/ + private String code; /** * 登录首页地址