diff --git a/hiver-core/src/main/java/cc/hiver/core/base/HiverBasePageQuery.java b/hiver-core/src/main/java/cc/hiver/core/base/HiverBasePageQuery.java index b307a246..dcb7b97c 100644 --- a/hiver-core/src/main/java/cc/hiver/core/base/HiverBasePageQuery.java +++ b/hiver-core/src/main/java/cc/hiver/core/base/HiverBasePageQuery.java @@ -30,4 +30,13 @@ public class HiverBasePageQuery { @ApiModelProperty(value = "每页记录数", example = "10") private int pageSize = 10; + + /** + * 排序字段 + */ + @ApiModelProperty("排序字段") + private String sort; + + @ApiModelProperty("排序方式") + private String order; } diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java index a338bf14..3bf7d890 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/LogiticsCompanyServiceImpl.java @@ -65,12 +65,16 @@ public class LogiticsCompanyServiceImpl implements LogiticsCompanyService { Path contactsField = root.get("contacts"); Path mobileField = root.get("mobile"); Path delFlagField = root.get("delFlag"); + Path isOnLineField = root.get("isOnLine"); List list = new ArrayList<>(); if (StrUtil.isNotBlank(company.getSignCompany())) { list.add(cb.equal(signCompanyField, company.getSignCompany() )); } + if (company.getIsOnLine() != null) { + list.add(cb.equal(isOnLineField, company.getIsOnLine() )); + } if (StrUtil.isNotBlank(company.getCompanyName())) { list.add(cb.like(companyNameField, '%' + company.getCompanyName() + '%')); diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java index 39df9f7c..856ac8eb 100644 --- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java +++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java @@ -65,6 +65,7 @@ public class WorkerServiceImpl implements WorkerService { final Path createTimeField = root.get("createTime"); final Path signPersonField = root.get("signPerson"); final Path ownerCompanyField = root.get("ownerCompany"); + final Path isOnLineField = root.get("isOnLine"); final List list = new ArrayList<>(); @@ -84,21 +85,36 @@ public class WorkerServiceImpl implements WorkerService { // 状态 if (worker.getWorkerStatus() != null) { list.add(cb.equal(workerStatusField, worker.getWorkerStatus())); + }else{ + // 禁用标识 + list.add(cb.equal(workerStatusField, 1)); } - if (CharSequenceUtil.isNotEmpty(worker.getSignPerson())) { - list.add(cb.equal(signPersonField, worker.getSignPerson())); - //如果是快递公司,则只能选择归属公司,否则不限制 - if ("2".equals(worker.getSignPerson()) && CharSequenceUtil.isNotEmpty(worker.getOwnerCompany())) { - final String[] transCompany = worker.getOwnerCompany().trim().split(","); - list.add(ownerCompanyField.in(transCompany)); - } + // 上下线状态 + if (worker.getIsOnLine() != null) { + list.add(cb.equal(isOnLineField, worker.getIsOnLine())); } - // 不传公司名称,查询拉包工,传的话查询该快递公司下的快递员 - if (StringUtils.isNotEmpty(worker.getOwnerCompany())) { - list.add(cb.like(ownerCompanyField, '%' + worker.getOwnerCompany() + '%')); - } else { - list.add(cb.equal(signPersonField, WorkerConstant.SIGN_PERSON[0])); + + // 后台管理系统,只会查询快递员或者拉包工,其他不限制 + if("1".equals(worker.getAdminFlag())){ + if (CharSequenceUtil.isNotEmpty(worker.getSignPerson())) { + list.add(cb.equal(signPersonField, worker.getSignPerson())); + } + }else{ + if (CharSequenceUtil.isNotEmpty(worker.getSignPerson())) { + list.add(cb.equal(signPersonField, worker.getSignPerson())); + //如果是快递公司,则只能选择归属公司,否则不限制 + if ("2".equals(worker.getSignPerson()) && CharSequenceUtil.isNotEmpty(worker.getOwnerCompany())) { + final String[] transCompany = worker.getOwnerCompany().trim().split(","); + list.add(ownerCompanyField.in(transCompany)); + } + } + // 不传公司名称,查询拉包工,传的话查询该快递公司下的快递员 + if (StringUtils.isNotEmpty(worker.getOwnerCompany())) { + list.add(cb.like(ownerCompanyField, '%' + worker.getOwnerCompany() + '%')); + } else { + list.add(cb.equal(signPersonField, WorkerConstant.SIGN_PERSON[0])); + } } // 模糊搜素 @@ -114,12 +130,21 @@ public class WorkerServiceImpl implements WorkerService { } // 数据权限 - // 禁用标识 - list.add(cb.equal(workerStatusField, 1)); - // 上线状态 + final Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); - cq.orderBy(cb.desc(root.get("isOnLine")),cb.asc(root.get("workerName"))); + // 排序 + if(StringUtils.isNotEmpty(worker.getSort()) && StringUtils.isNotEmpty(worker.getOrder())){ + if("desc".equals(worker.getOrder())){ + cq.orderBy(cb.desc(root.get(worker.getSort()))); + }else{ + cq.orderBy(cb.asc(root.get(worker.getSort()))); + } + + }else{ + cq.orderBy(cb.desc(root.get("isOnLine")),cb.asc(root.get("workerName"))); + } + return null; } }, pageable); diff --git a/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java b/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java index 42b07722..a5a5c497 100644 --- a/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java +++ b/hiver-core/src/main/java/cc/hiver/core/vo/WorkerQueryVO.java @@ -51,6 +51,12 @@ public class WorkerQueryVO extends HiverBasePageQuery { @ApiModelProperty("接单状态 1-可抢单 2-不可接单(押金不足状态) 3-已禁用(手工预置状态)") private Integer workerStatus; + /** + * 上下线状态:0:下线;1:上线 + */ + @ApiModelProperty("上下线状态:0:下线;1:上线") + private Integer isOnLine; + /** * 联系方式 */ @@ -93,4 +99,10 @@ public class WorkerQueryVO extends HiverBasePageQuery { @ApiModelProperty("结束时间") private String endDate; + /** + * 后台管理系统标识 + */ + @ApiModelProperty("后台管理系统标识") + private String adminFlag; + } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/config/thread/ThreadPoolConfiguration.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/config/thread/ThreadPoolConfiguration.java index 74d83671..5e85beb7 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/config/thread/ThreadPoolConfiguration.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/config/thread/ThreadPoolConfiguration.java @@ -3,7 +3,6 @@ package cc.hiver.mall.config.thread; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.stereotype.Component; import java.util.concurrent.ThreadPoolExecutor; @@ -14,17 +13,16 @@ import java.util.concurrent.ThreadPoolExecutor; * @date 2023/3/24 10:03 **/ @Configuration -@Component public class ThreadPoolConfiguration { /** * 核心线程池大小-32 **/ - private int corePoolSize = 10; + private int corePoolSize = 20; /** * 最大可创建的线程数-50 **/ - private int maxPoolSize = 50; + private int maxPoolSize = 100; /** * 线程池维护线程所允许的空闲时间-60 **/ @@ -32,7 +30,7 @@ public class ThreadPoolConfiguration { /** * 队列最大长度-100 **/ - private int queueCapacity = 100; + private int queueCapacity = 200; @Bean(name = "threadPoolTaskExecutor") public ThreadPoolTaskExecutor threadPoolTaskExecutor() { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java index c676db63..17718706 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/OrderController.java @@ -356,7 +356,8 @@ public class OrderController { final String transCompanyId = sale.getTransCompany(); final String shopId = sale.getShopId(); final String saleId = sale.getId(); - deductLogService.updateRebateAmount(workId, transCompanyId, shopId, saleId); + String transportType = sale.getTransportType(); + deductLogService.updateRebateAmount(workId, transCompanyId, shopId, saleId,transportType); } } else { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java index 27f6e6fd..02796cf2 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java @@ -1,5 +1,6 @@ package cc.hiver.mall.controller; +import cc.hiver.core.common.constant.CommonConstant; import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.StringUtils; @@ -89,14 +90,16 @@ public class PurchaseController { @RequestMapping(value = "/delById", method = RequestMethod.POST) @ApiOperation("根据id删除采购单") - public Result delete(Purchase purchase) { - final boolean result = purchaseService.removeById(purchase); - if (result) { + public Result delete(String id) { + try { + purchaseService.deleteById(id); // 删除采购单明细 - purchaseDetailService.deleteByPurchaseId(purchase.getId()); + purchaseDetailService.deleteByPurchaseId(id); return ResultUtil.error("删除成功!"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return ResultUtil.error("删除失败"); } - return ResultUtil.error("删除失败"); } @RequestMapping(value = "/list", method = RequestMethod.POST) @@ -107,6 +110,7 @@ public class PurchaseController { Page page = null; final QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("shop_id", shopId); + queryWrapper.eq("del_flag", CommonConstant.STATUS_NORMAL); if (!ObjectUtils.isEmpty(purchasePageQuery)) { if (!StringUtils.isEmpty(purchasePageQuery.getId())) { queryWrapper.eq("id", purchasePageQuery.getId()); @@ -150,7 +154,7 @@ public class PurchaseController { // shopId从缓存中设置 final String shopId = securityUtil.getShopId(); purchasePageQuery.setShopId(shopId); - final Page purchasePage = purchaseService.getPurchaseList(purchasePageQuery); + final Page purchasePage = purchaseService.getPurchaseList(purchasePageQuery); return new ResultUtil>().setData(purchasePage); } @@ -160,6 +164,7 @@ public class PurchaseController { public Result getPurchaseDetailByBarcode(String barcode) { final QueryWrapper queryWrapper = new QueryWrapper<>(); if (!ObjectUtils.isEmpty(barcode)) { + queryWrapper.eq("del_flag", CommonConstant.STATUS_NORMAL); queryWrapper.eq("barcode", barcode); final List list = purchaseDetailService.list(queryWrapper); if (list != null && list.size() > 0) { @@ -186,6 +191,7 @@ public class PurchaseController { // shopId从缓存中设置 final String shopId = securityUtil.getShopId(); final QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("del_flag", CommonConstant.STATUS_NORMAL); queryWrapper.gt("no_pay", 0); queryWrapper.eq("supplier_id", supplierId); queryWrapper.eq("shop_id", shopId); @@ -246,6 +252,7 @@ public class PurchaseController { final String shopId = securityUtil.getShopId(); final QueryWrapper querySaleWrapper = new QueryWrapper<>(); querySaleWrapper.eq("shop_id", shopId) + .eq("del_flag",CommonConstant.STATUS_NORMAL) .eq("in_storage_status", StockConstant.IN_STORAGE_STATUS[0]); final long waitReturnCount = purchaseService.count(querySaleWrapper); return ResultUtil.data(waitReturnCount); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java index c0483dba..1a275f9c 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java @@ -956,13 +956,14 @@ public class SaleController { */ @RequestMapping(value = "/buyAiSync", method = RequestMethod.POST) @ApiOperation("异步Ai开单") - public Result buyAiSync(String aiMsg,String saleId) { + public Result buyAiSync(String aiMsg, String saleId) { if (StringUtils.isEmpty(aiMsg)) { ResultUtil.error("指令不能为空!"); - }if (StringUtils.isEmpty( saleId)) { + } + if (StringUtils.isEmpty(saleId)) { ResultUtil.error("订单id不能为空!"); } - saleService.buyAiSync(aiMsg,saleId); + saleService.buyAiSync(aiMsg, saleId); return ResultUtil.success("取货成功!"); } @@ -976,4 +977,31 @@ public class SaleController { final JSONObject jsonObject = saleService.buyAi(aiMsg); return new ResultUtil().setData(jsonObject); } + + /** + * 物流公司转单 + * + * @param saleId 订单id + * @param companyId 物流公司id + * @return Result + * @author 王富康 + * @date 2024/4/27 + */ + @RequestMapping(value = "/changeCompany", method = RequestMethod.POST) + @ApiOperation("物流公司转单") + public Result changeCompany(String saleId, String companyId) { + if (StringUtils.isEmpty(saleId)) { + ResultUtil.error("订单id不能为空!"); + } + if (StringUtils.isEmpty(companyId)) { + ResultUtil.error("物流公司id不能为空!"); + } + try { + saleService.changeCompany(saleId, companyId); + return ResultUtil.success("转单成功"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return ResultUtil.error("转单失败!"); + } + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java index 0b7e8cdb..b7638639 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java @@ -44,4 +44,6 @@ public interface PurchaseMapper extends BaseMapper { BigDecimal getPurchasingCost(@Param("shopId")String shopId, @Param("startTime")String startTime, @Param("endTime")String endTime); void updateInStorageStatus(@Param("id")String id,@Param("inStorageStatus") int inStorageStatus); + + void deleteByPurchaseId(@Param("id") String id); } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/DeductLogService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/DeductLogService.java index bb3b3fc2..9c3d53c0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/DeductLogService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/DeductLogService.java @@ -51,7 +51,7 @@ public interface DeductLogService { * @author 王富康 * @date 2024/2/26 */ - void updateRebateAmount(String workId, String transCompanyId, String shopId, String saleId); + void updateRebateAmount(String workId, String transCompanyId, String shopId, String saleId,String transportType); String getAllRebateAmountByShopId(String shopId); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java index 956dc7cf..4d34cac4 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java @@ -1,5 +1,6 @@ package cc.hiver.mall.deductlog.service.impl; +import cc.hiver.core.common.constant.SaleConstant; import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.Worker; import cc.hiver.core.service.LogiticsCompanyService; @@ -107,7 +108,7 @@ public class DeductLogServiceImpl extends ServiceImpl0){ - companyService.update(logiticsCompany); + String companyName = ""; + LogiticsCompany logiticsCompany = null; + // 拼单不会有物流公司信息, + if(StringUtils.isNotEmpty(transCompanyId)){ + logiticsCompany = companyService.findById(transCompanyId); + if (logiticsCompany != null) { + companyName = logiticsCompany.getCompanyName(); + companyRebateAmount = logiticsCompany.getRebateAmount() == null ? BigDecimal.valueOf(0) : logiticsCompany.getRebateAmount(); + companyFixedAmount = logiticsCompany.getFixedAmount() == null ? BigDecimal.valueOf(0) : logiticsCompany.getFixedAmount(); + companyDepoBal = logiticsCompany.getDepoBal() == null ? BigDecimal.valueOf(0) : logiticsCompany.getDepoBal(); + // 物流公司扣减后押金余额 + companyAfterDepoBal = companyDepoBal.subtract(companyFixedAmount); + logiticsCompany.setDepoBal(companyAfterDepoBal); + // 更新物流公司押金余额 + if(companyFixedAmount.compareTo(BigDecimal.valueOf(0))>0){ + companyService.update(logiticsCompany); + } } } @@ -175,14 +181,15 @@ public class DeductLogServiceImpl extends ServiceImpl(3), - Executors.defaultThreadFactory(), - new ThreadPoolExecutor.DiscardOldestPolicy()); for (PurchaseOcrPicture purchaseOcrPicture : purchaseOcrPictureAddList) { timerThread = new AiPurchaseThread(purchaseId, purchaseOcrPicture, purchaseOcrPictureService, productService, purchaseDetailService, purchaseService); // 这里可以使用线程池,也可以使用CompletionService处理,运行任务需要是callable的,需要最终结果。 - service.submit(timerThread); + threadPoolConfiguration.threadPoolTaskExecutor().execute(timerThread); } } catch (Exception e) { log.error("异步处理ocr识别失败", e); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/OrderService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/OrderService.java index 748963c3..10663b62 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/OrderService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/OrderService.java @@ -40,17 +40,31 @@ public interface OrderService extends HiverBaseService { /** * 转单接口 + * + * @param orderXd * @author 王富康 * @date 2024/2/27 - * @param orderXd */ void transferOrder(OrderVO orderXd); /** * 获取当前所有拉包工身上的订单数量 + * + * @return Map * @author 王富康 * @date 2024/2/27 - * @return Map */ Map findWorkerOrderCount(List workerIdList); + + /** + * 物流转单,更新订单公司信息 + * + * @param saleId 订单id + * @param companyId 物流公司id + * @param mobile 物流公司联系方式 + * @param companyName 物流公司名称 + * @author 王富康 + * @date 2024/4/27 + */ + void changeCompany(String saleId, String companyId, String mobile, String companyName); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java index 02f15ac2..a658f59a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java @@ -41,4 +41,6 @@ public interface PurchaseService extends IService { PurchaseVo getPurchaseAllDataOfAi(String id); void updateInStorageStatus(String id,int inStorageStatus); + + void deleteById(String id); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java index 14620e65..33b4ea59 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java @@ -51,11 +51,22 @@ public interface SaleService extends IService { void companyGetSale(String saleId); - void buyAiSync(String aiMsg,String saleId); + void buyAiSync(String aiMsg, String saleId); JSONObject buyAi(String aiMsg); void updateAiFlag(String id, Integer status); void updateStatus(String id, Integer status); + + /** + * 物流公司转单 + * + * @param saleId 订单id + * @param companyId 物流公司id + * @return Result + * @author 王富康 + * @date 2024/4/27 + */ + void changeCompany(String saleId, String companyId); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java index b979e2b1..7c55ae85 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/OrderServiceImpl.java @@ -291,6 +291,25 @@ public class OrderServiceImpl implements OrderService { return orderDao.findWorkerOrderCount(workerIdList); } + /** + * 物流转单,更新订单公司信息 + * + * @param saleId 订单id + * @param companyId 物流公司id + * @param mobile 物流公司联系方式 + * @param companyName 物流公司名称 + * @author 王富康 + * @date 2024/4/27 + */ + @Override + public void changeCompany(String saleId, String companyId, String mobile, String companyName) { + final OrderXd oldOrderXd = orderDao.findByOrderId(saleId); + oldOrderXd.setTransCompany(companyId); + oldOrderXd.setTransCompanyPhone(mobile); + oldOrderXd.setCompanyName(companyName); + orderDao.saveAndFlush(oldOrderXd); + } + @Override public List findByCondition(OrderXd order) { return orderDao.findAll(new Specification() { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java index 89f5523d..d8f9544a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java @@ -226,7 +226,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { // 自送如果选择了物流公司,也需要物流公司返佣 // 选择物流公司才返佣,否则是没有选择物流公司的自提 if(StringUtils.isNotEmpty(sale.getTransCompany())){ - deductLogService.updateRebateAmount("", sale.getTransCompany(), sale.getShopId(), sale.getId()); + deductLogService.updateRebateAmount("", sale.getTransCompany(), sale.getShopId(), sale.getId(),sale.getTransportType()); } } else if(SaleConstant.MODE_OF_SERVICE[2].equals(sale.getModeOfService())){ // 物流自提 diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java index dad86e90..7f1de21f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java @@ -362,14 +362,16 @@ public class PurchaseServiceImpl extends ServiceImpl i final String detailId = stockLog.getDetailId(); final PurchaseDetail purchaseDetail = purchaseDetailIdDataMap.get(detailId); String purchaseDetailMapKey = ""; - if (StringUtils.isNotEmpty(purchaseDetail.getProductId())) { - purchaseDetailMapKey = purchaseDetail.getProductId(); - } else if (StringUtils.isNotEmpty(purchaseDetail.getProductSn())) { - purchaseDetailMapKey = purchaseDetail.getProductSn(); - } else if (StringUtils.isNotEmpty(purchaseDetail.getProductName())) { - purchaseDetailMapKey = purchaseDetail.getProductName(); - }else{ - purchaseDetailMapKey = purchaseDetail.getId(); + if(purchaseDetail != null){ + if (StringUtils.isNotEmpty(purchaseDetail.getProductId())) { + purchaseDetailMapKey = purchaseDetail.getProductId(); + } else if (StringUtils.isNotEmpty(purchaseDetail.getProductSn())) { + purchaseDetailMapKey = purchaseDetail.getProductSn(); + } else if (StringUtils.isNotEmpty(purchaseDetail.getProductName())) { + purchaseDetailMapKey = purchaseDetail.getProductName(); + }else{ + purchaseDetailMapKey = purchaseDetail.getId(); + } } final String mapKey = productId == null ? purchaseDetailMapKey : productId; @@ -435,4 +437,9 @@ public class PurchaseServiceImpl extends ServiceImpl i public void updateInStorageStatus(String id, int inStorageStatus) { purchaseMapper.updateInStorageStatus(id, inStorageStatus); } + + @Override + public void deleteById(String id) { + purchaseMapper.deleteByPurchaseId(id); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java index 9a394108..efe535b3 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java @@ -5,7 +5,9 @@ import cc.hiver.core.common.constant.SaleConstant; import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.StringUtils; import cc.hiver.core.common.utils.ThreadPoolUtil; +import cc.hiver.core.entity.LogiticsCompany; import cc.hiver.core.entity.User; +import cc.hiver.core.service.LogiticsCompanyService; import cc.hiver.mall.common.constant.StockConstant; import cc.hiver.mall.config.thread.AiSaleThread; import cc.hiver.mall.dao.mapper.SaleMapper; @@ -19,6 +21,7 @@ import cc.hiver.mall.pojo.vo.*; import cc.hiver.mall.saleaimsg.constant.SaleAiMsgConstant; import cc.hiver.mall.saleaimsg.entity.SaleAiMsg; import cc.hiver.mall.saleaimsg.service.SaleAiMsgService; +import cc.hiver.mall.service.OrderService; import cc.hiver.mall.service.mybatis.*; import cc.hiver.mall.utils.AliOcrUtil; import cc.hiver.mall.utils.DateUtil; @@ -83,6 +86,12 @@ public class SaleServiceImpl extends ServiceImpl implements Sa @Autowired private SaleAiMsgService saleAiMsgService; + @Autowired + private LogiticsCompanyService logiticsCompanyService; + + @Autowired + private OrderService orderService; + @Override public void editPayPrice(String id, BigDecimal price, String dealingsWay) { // 修改采购单、实付、未付金额 @@ -495,8 +504,8 @@ public class SaleServiceImpl extends ServiceImpl implements Sa public Page getSaleByCompanyId(SalePageQuery salePageQuery) { final Page page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); //结束时间-1天 - if(StringUtils.isNotEmpty(salePageQuery.getEndDate())){ - String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1); + if (StringUtils.isNotEmpty(salePageQuery.getEndDate())) { + final String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1); salePageQuery.setEndDate(endDate); } final Page saleNoWorkerVOPage = saleMapper.getSaleByCompanyId(page, salePageQuery); @@ -509,7 +518,7 @@ public class SaleServiceImpl extends ServiceImpl implements Sa saleMapper.companyGetSale(saleId); final Sale sale = saleMapper.selectById(saleId); // 处理返佣 - deductLogService.updateRebateAmount("", sale.getTransCompany(), sale.getShopId(), saleId); + deductLogService.updateRebateAmount("", sale.getTransCompany(), sale.getShopId(), saleId, sale.getTransportType()); } @Override @@ -561,7 +570,7 @@ public class SaleServiceImpl extends ServiceImpl implements Sa @Override public JSONObject buyAi(String aiMsg) { - JSONObject returnJsonObject = new JSONObject(); + final JSONObject returnJsonObject = new JSONObject(); // 叉转X 文本纠错 使用正则表达式替换单个或多个连续的“叉”字符 aiMsg = replaceAllX(aiMsg); final List saleDetailDTOS = new ArrayList<>(); @@ -744,8 +753,8 @@ public class SaleServiceImpl extends ServiceImpl implements Sa } catch (InputRequiredException e) { throw new RuntimeException(e); } - returnJsonObject.put("data",saleDetailDTOS); - returnJsonObject.put("aiNotRecognition",String.join(";", aiNotRecognitionList)); + returnJsonObject.put("data", saleDetailDTOS); + returnJsonObject.put("aiNotRecognition", String.join(";", aiNotRecognitionList)); return returnJsonObject; } @@ -759,6 +768,35 @@ public class SaleServiceImpl extends ServiceImpl implements Sa saleMapper.updateStatus(id, status); } + /** + * 物流公司转单 + * + * @param saleId 订单id + * @param companyId 物流公司id + * @return Result + * @author 王富康 + * @date 2024/4/27 + */ + @Override + public void changeCompany(String saleId, String companyId) { + // 更新sale表trans_company、company_name、company_phone字段 + final Sale sale = saleMapper.selectById(saleId); + final String modeOfService = sale.getModeOfService(); + final LogiticsCompany logiticsCompany = logiticsCompanyService.findById(companyId); + final String mobile = logiticsCompany.getMobile(); + final String companyName = logiticsCompany.getCompanyName(); + sale.setCompanyPhone(mobile); + sale.setTransCompany(companyId); + sale.setCompanyName(companyName); + // 选平台配送:把order表也一并更新trans_company、company_name、transCompanyPhone字段 + if (SaleConstant.MODE_OF_SERVICE[0].equals(modeOfService)) { + // 更新订单表 + orderService.changeCompany(saleId, companyId, mobile, companyName); + + } + saleMapper.updateById(sale); + } + /** * 使用正则表达式替换输入字符串中连续的“叉”字符为相应数量的“X”字符。 * diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseDetailMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseDetailMapper.xml index 0f55b415..17671baa 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseDetailMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseDetailMapper.xml @@ -577,7 +577,8 @@ select from t_purchase_detail - where purchase_id = #{id,jdbcType=VARCHAR} + where del_flag ='0' + and purchase_id = #{id,jdbcType=VARCHAR} order by create_time desc @@ -585,7 +586,8 @@ select from t_purchase_detail - where product_id = #{productId,jdbcType=VARCHAR} + where del_flag ='0' + and product_id = #{productId,jdbcType=VARCHAR} and purchase_id in #{listItem} @@ -614,6 +616,7 @@ from t_purchase_detail where purchase_id = #{purchaseId,jdbcType=VARCHAR} + and del_flag ='0' and product_sn = #{productSn,jdbcType=VARCHAR} and product_name = #{productName,jdbcType=VARCHAR} @@ -623,8 +626,7 @@ - - delete from t_purchase_detail - where purchase_id = #{purchaseId,jdbcType=VARCHAR} - + + update t_purchase_detail set del_flag = '1' where purchase_id = #{purchaseId,jdbcType=VARCHAR} + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml index 3a6ff37d..d6da019b 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml @@ -398,7 +398,7 @@ @@ -444,9 +446,11 @@ select IFNULL(sum(should_pay),0.00) as purchasingCost from t_purchase - where shop_id = #{shopId} + where del_flag = '0' + and shop_id = #{shopId} and create_time BETWEEN #{startTime} AND #{endTime} + update t_purchase set @@ -454,4 +458,11 @@ where id = #{id,jdbcType=VARCHAR} + + update t_purchase + set + del_flag = '1' + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml index b9a71b92..d0f00fc4 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml @@ -695,6 +695,7 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr from t_sale where id in (select sale_id from t_sale_detail where product_id =#{productId}) + and status not in ('2','6','7') order by create_time desc @@ -819,7 +820,7 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr AND t.product_id = s.product_id WHERE t.shop_id = #{shopId} - AND purchase_id IN ( SELECT id FROM t_purchase WHERE supplier_id = #{supplierId} ) + AND purchase_id IN ( SELECT id FROM t_purchase WHERE deflag = 0 and in_storage_status = 1 and supplier_id = #{supplierId} ) GROUP BY product_id, product_name order by product_name desc @@ -834,7 +835,7 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr AND t.product_id = s.product_id WHERE t.shop_id = #{shopId} - AND purchase_id IN ( SELECT id FROM t_purchase WHERE supplier_id = #{supplierId} ) + AND purchase_id IN ( SELECT id FROM t_purchase WHERE deflag = 0 and in_storage_status = 1 and supplier_id = #{supplierId} ) and t.product_id in #{listItem} diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/StockLogMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/StockLogMapper.xml index bd5f1366..76ca3618 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/StockLogMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/StockLogMapper.xml @@ -418,14 +418,16 @@ select from t_stock_log - where order_id = #{id,jdbcType=VARCHAR} + where del_flag='0' + and order_id = #{id,jdbcType=VARCHAR}