Forráskód Böngészése

优化,审核角色配置,取消订单、审核不通过回退库存操作

lishiqiang 2 hete
szülő
commit
96208fda1d

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespVO.java

@@ -493,6 +493,9 @@ public class TradeOrderRespVO {
     @ExcelProperty("审核人")
     private String auditUser;
 
+    @Schema(description = "是否有审核权限")
+    private Integer isShowAudit;
+
     @Schema(description = "审核人名称")
     @ExcelProperty("审核人姓名")
     private String auditUserName;

+ 4 - 8
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/audituser/AuditUserMapper.java

@@ -2,12 +2,15 @@ package com.yc.ship.module.trade.dal.mysql.audituser;
 
 import java.util.*;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.trade.controller.admin.bill.vo.BillRespVO;
 import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.trade.controller.admin.audituser.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 审核人管理 Mapper
@@ -17,13 +20,6 @@ import com.yc.ship.module.trade.controller.admin.audituser.vo.*;
 @Mapper
 public interface AuditUserMapper extends BaseMapperX<AuditUserDO> {
 
-    default PageResult<AuditUserDO> selectPage(AuditUserPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<AuditUserDO>()
-                .eqIfPresent(AuditUserDO::getType, reqVO.getType())
-                .eqIfPresent(AuditUserDO::getAuditUser, reqVO.getAuditUser())
-                .eqIfPresent(AuditUserDO::getRemark, reqVO.getRemark())
-                .betweenIfPresent(AuditUserDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(AuditUserDO::getId));
-    }
+    IPage<AuditUserDO> selectPage(IPage<BillRespVO> page, @Param("vo") AuditUserPageReqVO reqVO);
 
 }

+ 6 - 10
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/audituser/AuditUserServiceImpl.java

@@ -1,12 +1,15 @@
 package com.yc.ship.module.trade.service.audituser;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.module.system.api.user.AdminUserApi;
 import com.yc.ship.module.system.api.user.dto.AdminUserRespDTO;
 import com.yc.ship.module.trade.controller.admin.audituser.vo.AuditUserPageReqVO;
 import com.yc.ship.module.trade.controller.admin.audituser.vo.AuditUserSaveReqVO;
+import com.yc.ship.module.trade.controller.admin.bill.vo.BillRespVO;
 import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
 import com.yc.ship.module.trade.dal.mysql.audituser.AuditUserMapper;
 import org.springframework.stereotype.Service;
@@ -71,16 +74,9 @@ public class AuditUserServiceImpl implements AuditUserService {
 
     @Override
     public PageResult<AuditUserDO> getAuditUserPage(AuditUserPageReqVO pageReqVO) {
-        PageResult<AuditUserDO> pageResult = auditUserMapper.selectPage(pageReqVO);
-        for (AuditUserDO auditUserDO : pageResult.getList()) {
-            if(auditUserDO.getAuditUser()!=null) {
-                AdminUserRespDTO user = adminUserApi.getUserIgnoreTenant(auditUserDO.getAuditUser());
-                if (user != null) {
-                    auditUserDO.setAuditUserName(user.getNickname());
-                }
-            }
-        }
-        return pageResult;
+        IPage<BillRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
+        IPage<AuditUserDO> pageResult = auditUserMapper.selectPage(page,pageReqVO);
+        return new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
     }
 
 }

+ 12 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -22,6 +22,7 @@ import com.yc.ship.module.product.api.ProductApi;
 import com.yc.ship.module.product.api.dto.*;
 import com.yc.ship.module.product.enums.ProductTypeEnum;
 import com.yc.ship.module.product.enums.SpecTypeEnum;
+import com.yc.ship.module.system.api.permission.RoleApi;
 import com.yc.ship.module.trade.api.dto.*;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.ShipTradeOrderCreateReqVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderPageReqVO;
@@ -112,6 +113,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     @Resource
     private AgencyAuthUtils agencyAuthUtils;
 
+    @Resource
+    private RoleApi roleApi;
+
 
     @Override
     public PageResult<TradeOrderRespVO> getPlatOrderPage(TradeOrderPageReqVO pageReqVO) {
@@ -123,6 +127,9 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         if (agencyLoginUser.getStoreId() != null) {
             pageReqVO.setStoreId(agencyLoginUser.getStoreId());
         }
+        //当前用户角色
+        List<Long> currentRoleList = roleApi.getCurrentRoleList();
+
         IPage<TradeOrderRespVO> iPage = tradeOrderMapper.getTradeOrderUserPage(page, pageReqVO);
         iPage.getRecords().forEach(tradeOrderRespVO -> {
             List<TradeVisitorRespVO> visitorDOList = tradeVisitorMapper.queryVisitorByOrderId(tradeOrderRespVO.getId());
@@ -132,6 +139,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             } else {
                 tradeOrderRespVO.setTotalNum(0);
             }
+            if(tradeOrderRespVO.getAuditUser()!=null && currentRoleList.contains(Long.parseLong(tradeOrderRespVO.getAuditUser()))) {
+                tradeOrderRespVO.setIsShowAudit(1);
+            }else{
+                tradeOrderRespVO.setIsShowAudit(0);
+            }
         });
         return new PageResult<>(iPage.getRecords(), iPage.getTotal());
     }

+ 70 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -46,10 +46,12 @@ import com.yc.ship.module.otc.api.agency.dto.AgencyUserLoginInfoRespDTO;
 import com.yc.ship.module.otc.api.store.StoreApi;
 import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
 import com.yc.ship.module.product.api.ProductApi;
+import com.yc.ship.module.product.api.VoyageApi;
 import com.yc.ship.module.product.api.dto.*;
 import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
 import com.yc.ship.module.product.dal.dataobject.priceroommodeltype.PriceRoomModelTypeDO;
 import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
 import com.yc.ship.module.product.service.priceroommodeltype.PriceRoomModelTypeService;
 import com.yc.ship.module.product.service.voyage.VoyageService;
 import com.yc.ship.module.resource.api.route.RouteApi;
@@ -225,6 +227,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private PriceRoomModelTypeService priceRoomModelTypeService;
 
+    @Resource
+    private VoyageApi voyageApi;
+
 
     public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
 
@@ -493,6 +498,39 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 tradeOrderFloorMapper.updateDeleted(lastTradeOrder.getId(), 0);
                 tradeOrderTotalMapper.updateDeleted(orderId, 1);
                 tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(), 0);
+
+
+                ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
+                reqDTO.setOldOrderId(tradeOrderDO.getId());
+                reqDTO.setOrderId(lastTradeOrder.getId());
+                reqDTO.setOrderStatus(lastTradeOrder.getOrderStatus());
+                //TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
+                reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+                reqDTO.setVoyageId(lastTradeOrder.getVoyageId());
+                reqDTO.setDistributorId(Long.valueOf(lastTradeOrder.getSourceId()));
+                reqDTO.setStoreId(lastTradeOrder.getStoreId());
+                TradeOrderTotalDO tradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, lastTradeOrder.getId()));
+                reqDTO.setUseRoomNum(BigDecimal.valueOf(tradeOrderTotal.getUseRoomTotalNum()));
+
+                List<TradeVisitorDO> tradeDetailDOList = tradeVisitorMapper.selectShipVisitor(lastTradeOrder.getId());
+                List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
+                Map<String, Long> collect = tradeDetailDOList.stream().filter(tradeVisitorDO -> tradeVisitorDO.getRoomId() != null).collect(Collectors.groupingBy(TradeVisitorDO::getRoomId, Collectors.counting()));
+                collect.keySet().forEach(roomId -> {
+                    if (StringUtils.isNotBlank(roomId)) {
+                        OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+                        orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
+                        orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
+                        orderRoomUseDTOList.add(orderRoomUseDTO);
+                    }
+                });
+                reqDTO.setOrderRoomList(orderRoomUseDTOList);
+                Integer orderStatus = reqDTO.getOrderStatus();
+                if(Objects.equals(orderStatus, TradeOrderStatusEnum.YD.getStatus())) {
+                    voyageApi.preReduceStock(reqDTO);
+                }else {
+                    voyageApi.reduceStock(reqDTO);
+                }
+
                 Map<String, Object> extMap = new HashMap<>();
                 extMap.put("result", "审核不通过");
                 TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), extMap);
@@ -534,6 +572,38 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             tradeOrderTotalMapper.updateDeleted(orderId, 1);
             tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(), 0);
 
+            ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
+            reqDTO.setOldOrderId(tradeOrderDO.getId());
+            reqDTO.setOrderId(lastTradeOrder.getId());
+            reqDTO.setOrderStatus(lastTradeOrder.getOrderStatus());
+            //TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
+            reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+            reqDTO.setVoyageId(lastTradeOrder.getVoyageId());
+            reqDTO.setDistributorId(Long.valueOf(lastTradeOrder.getSourceId()));
+            reqDTO.setStoreId(lastTradeOrder.getStoreId());
+            TradeOrderTotalDO tradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, lastTradeOrder.getId()));
+            reqDTO.setUseRoomNum(BigDecimal.valueOf(tradeOrderTotal.getUseRoomTotalNum()));
+
+            List<TradeVisitorDO> tradeDetailDOList = tradeVisitorMapper.selectShipVisitor(lastTradeOrder.getId());
+            List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
+            Map<String, Long> collect = tradeDetailDOList.stream().filter(tradeVisitorDO -> tradeVisitorDO.getRoomId() != null).collect(Collectors.groupingBy(TradeVisitorDO::getRoomId, Collectors.counting()));
+            collect.keySet().forEach(roomId -> {
+                if (StringUtils.isNotBlank(roomId)) {
+                    OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+                    orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
+                    orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
+                    orderRoomUseDTOList.add(orderRoomUseDTO);
+                }
+            });
+            reqDTO.setOrderRoomList(orderRoomUseDTOList);
+            Integer orderStatus = reqDTO.getOrderStatus();
+            if(Objects.equals(orderStatus, TradeOrderStatusEnum.YD.getStatus())) {
+                voyageApi.preReduceStock(reqDTO);
+            }else {
+                voyageApi.reduceStock(reqDTO);
+            }
+
+
             Map<String, Object> extMap = new HashMap<>();
             extMap.put("result", "审核撤回");
             TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), extMap);

+ 10 - 1
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/audituser/AuditUserMapper.xml

@@ -8,5 +8,14 @@
         代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
-
+    <select id="selectPage" resultType="com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO">
+       select t1.*,t2.name as auditUserName from trade_audit_user t1 left join system_role t2 on t1.audit_user=t2.id where t1.deleted = 0
+        <if test="vo.type != null">
+            AND t1.type = #{vo.type}
+        </if>
+        <if test="vo.auditUser != null">
+            AND t1.audit_user = #{vo.auditUser}
+        </if>
+        ORDER BY t1.create_time DESC
+    </select>
 </mapper>