|
@@ -0,0 +1,213 @@
|
|
|
+/*
|
|
|
+ * Copyright [2022] [https://www.xiaonuo.vip]
|
|
|
+ *
|
|
|
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
|
+ *
|
|
|
+ * 1.请不要删除和修改根目录下的LICENSE文件。
|
|
|
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
|
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
|
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
|
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
|
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
|
+ */
|
|
|
+package vip.xiaonuo.biz.modular.bizsettle.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollStreamUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
|
|
|
+import vip.xiaonuo.biz.modular.bizorder.param.BizOrderPageParam;
|
|
|
+import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettleorder.entity.BizSettleOrder;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettleorder.service.BizSettleOrderService;
|
|
|
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
+import vip.xiaonuo.common.exception.CommonException;
|
|
|
+import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.entity.BizSettle;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.mapper.BizSettleMapper;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.param.BizSettleAddParam;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.param.BizSettleEditParam;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.param.BizSettleIdParam;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.param.BizSettlePageParam;
|
|
|
+import vip.xiaonuo.biz.modular.bizsettle.service.BizSettleService;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.locks.ReentrantLock;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 运费结算Service接口实现类
|
|
|
+ *
|
|
|
+ * @author xiaofan
|
|
|
+ * @date 2025/06/12 09:54
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle> implements BizSettleService {
|
|
|
+ private final ReentrantLock lock = new ReentrantLock();
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BizSettleOrderService bizSettleOrderService;
|
|
|
+ @Resource
|
|
|
+ private BizOrderService bizOrderService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<BizSettle> page(BizSettlePageParam bizSettlePageParam) {
|
|
|
+ QueryWrapper<BizSettle> queryWrapper = new QueryWrapper<BizSettle>().checkSqlInjection();
|
|
|
+ Page<BizSettle> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void add(BizSettleAddParam bizSettleAddParam) {
|
|
|
+ BizSettle bizSettle = BeanUtil.toBean(bizSettleAddParam, BizSettle.class);
|
|
|
+ String settleNo = getNumber();
|
|
|
+ bizSettle.setSettleNo(settleNo);
|
|
|
+ this.save(bizSettle);
|
|
|
+
|
|
|
+ if(ObjectUtil.isNotEmpty(bizSettleAddParam.getOrderList())){
|
|
|
+ for(BizOrder bizOrder : bizSettleAddParam.getOrderList()){
|
|
|
+ //新增数据关联表
|
|
|
+ BizSettleOrder bizSettleOrder = new BizSettleOrder();
|
|
|
+ bizSettleOrder.setSettleId(bizSettle.getId());
|
|
|
+ bizSettleOrder.setOrderId(bizOrder.getId());
|
|
|
+ bizSettleOrderService.save(bizSettleOrder);
|
|
|
+
|
|
|
+ UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
|
|
|
+ //修改订单状态
|
|
|
+ updateWrapper.set("order_status","9").eq("id",bizOrder.getId());
|
|
|
+ bizOrderService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getNumber(){
|
|
|
+ lock.lock();
|
|
|
+ try{
|
|
|
+ String format = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
|
|
+ String time = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
|
|
+ long count = this.count(new QueryWrapper<BizSettle>().lambda().between(BizSettle::getCreateTime, time + " 00:00:00", time + " 23:59:59"));
|
|
|
+ String settleNo = "GSD" + format + generateCode((int)count);
|
|
|
+ return settleNo;
|
|
|
+ }finally {
|
|
|
+ lock.unlock(); // 释放锁
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String generateCode(Integer counter) {
|
|
|
+ counter++;
|
|
|
+ return String.format("%03d", counter);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void edit(BizSettleEditParam bizSettleEditParam) {
|
|
|
+ BizSettle bizSettle = this.queryEntity(bizSettleEditParam.getId());
|
|
|
+ BeanUtil.copyProperties(bizSettleEditParam, bizSettle);
|
|
|
+ this.updateById(bizSettle);
|
|
|
+
|
|
|
+ //删除之前关联信息
|
|
|
+ List<BizSettleOrder> list = bizSettleOrderService.list(new QueryWrapper<BizSettleOrder>().lambda().
|
|
|
+ eq(BizSettleOrder::getSettleId, bizSettle.getId()));
|
|
|
+ //修改订单状态
|
|
|
+ for(BizSettleOrder bizSettleOrder: list){
|
|
|
+ BizOrder bizOrder = bizOrderService.getById(bizSettleOrder.getOrderId());
|
|
|
+ if(ObjectUtil.isNotNull(bizOrder)){
|
|
|
+ UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
|
|
|
+ //修改订单状态
|
|
|
+ updateWrapper.set("order_status","7").eq("id",bizOrder.getId());
|
|
|
+ bizOrderService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //删除关联信息表
|
|
|
+ bizSettleOrderService.removeByIds(CollStreamUtil.toList(list,BizSettleOrder::getId));
|
|
|
+
|
|
|
+ //新增新的关联信息
|
|
|
+ if(ObjectUtil.isNotEmpty(bizSettleEditParam.getOrderList())){
|
|
|
+ for(BizOrder bizOrder : bizSettleEditParam.getOrderList()){
|
|
|
+ //新增数据关联表
|
|
|
+ BizSettleOrder bizSettleOrder = new BizSettleOrder();
|
|
|
+ bizSettleOrder.setSettleId(bizSettle.getId());
|
|
|
+ bizSettleOrder.setOrderId(bizOrder.getId());
|
|
|
+ bizSettleOrderService.save(bizSettleOrder);
|
|
|
+
|
|
|
+ UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
|
|
|
+ //修改订单状态
|
|
|
+ updateWrapper.set("order_status","9").eq("id",bizOrder.getId());
|
|
|
+ bizOrderService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void delete(List<BizSettleIdParam> bizSettleIdParamList) {
|
|
|
+ // 执行删除
|
|
|
+ //this.removeByIds(CollStreamUtil.toList(bizSettleIdParamList, BizSettleIdParam::getId));
|
|
|
+
|
|
|
+ for(BizSettleIdParam bizSettleIdParam : bizSettleIdParamList){
|
|
|
+ //删除关联表信息
|
|
|
+ List<BizSettleOrder> list = bizSettleOrderService.list(new QueryWrapper<BizSettleOrder>().lambda().
|
|
|
+ eq(BizSettleOrder::getSettleId, bizSettleIdParam.getId()));
|
|
|
+ //修改订单状态
|
|
|
+ for(BizSettleOrder bizSettleOrder: list){
|
|
|
+ BizOrder bizOrder = bizOrderService.getById(bizSettleOrder.getOrderId());
|
|
|
+ if(ObjectUtil.isNotNull(bizOrder)){
|
|
|
+ UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
|
|
|
+ //修改订单状态
|
|
|
+ updateWrapper.set("order_status","7").eq("id",bizOrder.getId());
|
|
|
+ bizOrderService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //删除关联信息表
|
|
|
+ bizSettleOrderService.removeByIds(CollStreamUtil.toList(list,BizSettleOrder::getId));
|
|
|
+
|
|
|
+
|
|
|
+ //删除运费结算信息
|
|
|
+ this.removeById(bizSettleIdParam.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BizSettle detail(BizSettleIdParam bizSettleIdParam) {
|
|
|
+ return this.queryEntity(bizSettleIdParam.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BizSettle queryEntity(String id) {
|
|
|
+ BizSettle bizSettle = this.getById(id);
|
|
|
+ if(ObjectUtil.isEmpty(bizSettle)) {
|
|
|
+ throw new CommonException("运费结算不存在,id值为:{}", id);
|
|
|
+ }
|
|
|
+ return bizSettle;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BizSettle detailOrder(BizSettleIdParam bizSettleIdParam) {
|
|
|
+ BizSettle bizSettle = this.queryEntity(bizSettleIdParam.getId());
|
|
|
+ List<BizSettleOrder> list = bizSettleOrderService.list(new QueryWrapper<BizSettleOrder>().lambda().
|
|
|
+ eq(BizSettleOrder::getSettleId, bizSettleIdParam.getId()));
|
|
|
+ List<BizOrder> orderList = Lists.newArrayList();
|
|
|
+ for(BizSettleOrder bizSettleOrder : list){
|
|
|
+ BizOrderPageParam bizOrderPageParam = new BizOrderPageParam();
|
|
|
+ bizOrderPageParam.setOrderId(bizSettleOrder.getOrderId());
|
|
|
+ BizOrder detailOrder = bizOrderService.getDetailOrder(bizOrderPageParam);
|
|
|
+ if(ObjectUtil.isNotNull(detailOrder)){
|
|
|
+ orderList.add(detailOrder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ bizSettle.setOrderList(orderList);
|
|
|
+ return bizSettle;
|
|
|
+ }
|
|
|
+}
|