Просмотр исходного кода

审核 提现占单逻辑添加

785834757 1 год назад
Родитель
Сommit
955aece981

+ 13 - 0
src/main/java/com/ydtech/modules/admin/controller/SysAmountAuditingController.java

@@ -94,6 +94,19 @@ public class SysAmountAuditingController extends BaseController {
         return HttpResult.ok("success", vo);
     }
 
+    @PostMapping("/occupyTheOrder")
+    @ApiOperation(value = "占用订单")
+    public HttpResult occupyTheOrder(String id) {
+        sysAmountAuditingService.occupyTheOrder(id);
+        return HttpResult.ok("success");
+    }
+
+    @PostMapping("/liftOrder")
+    @ApiOperation(value = "解除订单占用")
+    public HttpResult liftOrder(String id) {
+        return sysAmountAuditingService.liftOrder(id);
+    }
+
    /**
     *  @version
     *  @author: hxl

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java

@@ -157,4 +157,7 @@ public class SysAmountAuditingVo {
 
     @ApiModelProperty("业务来源")
     private String  source;
+
+    @ApiModelProperty("占单排除ids")
+    private List<String> excludeIds;
 }

+ 6 - 0
src/main/java/com/ydtech/modules/admin/service/SysAmountAuditingService.java

@@ -74,4 +74,10 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditingEnti
      *  @Description:  导出已提现的费用表
      */
     List<SysAmountAuditingEntity> expeortData(SysAmountAuditingVo sysAmountAuditingVo);
+
+    HttpResult occupyTheOrder(String id);
+
+    HttpResult liftOrder(String id);
+
+
 }

+ 26 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -31,13 +31,12 @@ import com.ydtech.utils.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditingEntity> implements SysAmountAuditingService {
@@ -56,6 +55,9 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Autowired
     private PushLgEntityService pushLgEntityService;
 
+    @Autowired
+    private RedisTemplate redisTemplate;
+
     /**
      *  @version
      *  @author: hxl
@@ -169,9 +171,18 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Override
     public HttpResult<BasePageResult<SysAmountAuditingEntity>> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) {
         try{
+            List<String> excludeKeys = new ArrayList<>();
+            String userId = BaseController.getUserId();
+            redisTemplate.keys("Withdrawal:*").forEach(item->{
+                if(!redisTemplate.opsForValue().get(item).equals(userId)){
+                    excludeKeys.add(item.toString().substring("Withdrawal:".length(),item.toString().length()));
+                }
+            });
             HashMap<String, Object> params = new HashMap<>();
+
             PageInfo<List<InsPlyIncome>> pageHelper = null;
             PageHelper.startPage(sysAmountAuditingVo.getPageNum(),sysAmountAuditingVo.getPageSize());
+            params.put("excludeKeys",excludeKeys);
             params.put("pageNum",sysAmountAuditingVo.getPageNum());
             params.put("pageSize",sysAmountAuditingVo.getPageSize());
             if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){
@@ -426,4 +437,16 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         List<SysAmountAuditingEntity> list = baseMapper.queryPageOrderNew(params);
         return list;
     }
+
+    @Override
+    public HttpResult occupyTheOrder(String id) {
+        redisTemplate.opsForValue().set("Withdrawal:"+id,BaseController.getUser(),1800,java.util.concurrent.TimeUnit.SECONDS);
+        return HttpResult.ok("占用成功");
+    }
+
+    @Override
+    public HttpResult liftOrder(String id) {
+        redisTemplate.delete("Withdrawal:"+id);
+        return HttpResult.ok("释放成功");
+    }
 }

+ 12 - 0
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -90,6 +90,18 @@ public class CarSettleController extends BaseController {
         return insOrdersService.getByCompanyId(orderNo, "accountingUser");
     }
 
+    @PostMapping("/validateFeeDetail")
+    @ApiOperation(value = "[2]校验查询费用明细是否占单")
+    public HttpResult<OrderVo> validateFeeDetail(@RequestSingleParam(value = "orderNo") @Valid String orderNo) {
+        return insOrdersService.validateFeeDetail(orderNo, "accountingUser");
+    }
+
+    @PostMapping("/liftFeeDetail")
+    @ApiOperation(value = "解除订单占用")
+    public HttpResult liftFeeDetail(@RequestSingleParam(value = "orderNo") @Valid String orderNo) {
+        return insOrdersService.liftFeeDetail(orderNo);
+    }
+
     /**
      * 费用审核
      *

+ 1 - 1
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -62,7 +62,7 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
     /**
      * 获取待审核的订单
      */
-    Page<InsOrders> getAuditOrders(Page page, @Param("params") OrderQueryVo orderQueryVo);
+    Page<InsOrders> getAuditOrders(Page page, @Param("params") OrderQueryVo orderQueryVo,@Param("excludeKeys") List<String> excludeKeys);
 
     Page<InsOrders> getAlreadyAuditOrders(Page page, @Param("params") OrderQueryVo orderQueryVo);
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -112,7 +112,7 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      *
      * @return
      */
-    Page<InsOrders> getAuditOrders(Page page, OrderQueryVo orderQueryVo);
+    Page<InsOrders> getAuditOrders(Page page, OrderQueryVo orderQueryVo, List<String> excludeKeys);
 
     /**
      * 查询已审核得订单

+ 3 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -101,6 +101,9 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
     HttpResult<OrderVo> getByCompanyId(String companyId, String userId);
 
+    HttpResult validateFeeDetail(String companyId, String userId);
+
+    HttpResult liftFeeDetail(String companyId);
     /**
      * 查询订单和子订单
      *

+ 2 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -312,7 +312,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     }
 
     @Override
-    public Page<InsOrders> getAuditOrders(Page page, OrderQueryVo orderQueryVo) {
+    public Page<InsOrders> getAuditOrders(Page page, OrderQueryVo orderQueryVo,List<String> excludeKeys) {
         /**
          if(orderQueryVo.getQuoteStartDateStr() != null && orderQueryVo.getQuoteEndDateStr() != null){
          orderQueryVo.setQuoteStartDateStr(orderQueryVo.getQuoteStartDateStr().toString() + " 00:00:00");
@@ -324,7 +324,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
          //            orderQueryVo.setAttachEndDateStr(orderQueryVo.getAttachEndDateStr().toString() + " 23:59:59");
          //        }
          **/
-        Page<InsOrders> pendingAuditOrders = baseMapper.getAuditOrders(page, orderQueryVo);
+        Page<InsOrders> pendingAuditOrders = baseMapper.getAuditOrders(page, orderQueryVo,excludeKeys);
         pendingAuditOrders.getRecords().forEach(item -> {
             if (item.getAuditStatus() == null) {
                 item.setAuditStatus("0");

+ 35 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -749,11 +749,18 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public BasePageResult<InsOrders> queryPageOrder(OrderQueryVo orderQueryVo) {
         Page<InsAreaCompany> page = PageRequest.buildPageRequest(orderQueryVo.getPageRequest());
         Page<InsOrders> resultOrders;
-
+        Set<String> keys = redisTemplate.keys("FEE_AUDIT:*");
+        List<String> excludeKeys = new ArrayList<>();
+        String userId = BaseController.getUserId();
+        keys.forEach(x->{
+            if(!redisTemplate.opsForValue().get(x).equals(userId)){
+                excludeKeys.add(x.substring("FEE_AUDIT:".length(),x.length()));
+            }
+        });
         //查询未审核
         if (orderQueryVo.getAuditStatus() == null)
             orderQueryVo.setAuditStatus("0"); //默认查询未审核
-        resultOrders = insAreaCompanyService.getAuditOrders(page, orderQueryVo);
+        resultOrders = insAreaCompanyService.getAuditOrders(page, orderQueryVo,excludeKeys);
 
         //查找机构来源字典 遍历
         Map<String, DictionaryManagement> m = DictEnumConfig.getDmMap();
@@ -894,6 +901,14 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public HttpResult<OrderVo> getByCompanyId(@NotBlank(message = "子订单不能为空") String companyId, String userId) {
+        //获取缓存内的锁的订单
+        String orderUserId = redisTemplate.opsForValue().get("FEE_AUDIT:" + companyId);
+        if(Objects.nonNull(orderUserId)){
+            if(!BaseController.getUserId().equals(orderUserId)){
+                throw new SystemException("订单正在审核中,请稍后再试");
+            }
+        }
+        redisTemplate.opsForValue().set("FEE_AUDIT:"+companyId, BaseController.getUserId(),1800, TimeUnit.SECONDS);
         OrderVo orderAndAreaCompany = baseMapper.getOrderAndAreaCompany(companyId);
         //查询子订单的数据是否存在
         InsAreaCompanyInfo insAreaCompanyInfo = insAreaCompanyInfoMapper.selectOne(new LambdaQueryWrapper<InsAreaCompanyInfo>()
@@ -1107,6 +1122,24 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return HttpResult.ok("success", orderAndAreaCompany);
     }
 
+    @Override
+    public HttpResult validateFeeDetail(@NotBlank(message = "子订单不能为空") String companyId, String userId) {
+        //获取缓存内的锁的订单
+        String orderUserId = redisTemplate.opsForValue().get("FEE_AUDIT:" + companyId);
+        if (Objects.nonNull(orderUserId)) {
+            if (!BaseController.getUserId().equals(orderUserId)) {
+                throw new SystemException("订单正在审核中,请稍后再试");
+            }
+        }
+        return HttpResult.ok("success");
+    }
+
+    @Override
+    public HttpResult liftFeeDetail(String companyId){
+        redisTemplate.delete("FEE_AUDIT:"+companyId);
+        return HttpResult.ok("解除占用成功");
+    }
+
     /**
      * @version
      * @author: hxl

+ 6 - 0
src/main/resources/mapper/modules/admin/SysAmountAuditingMapper.xml

@@ -182,6 +182,12 @@
             <if test="source !=null  and source != ''">
                 and sd.management_source=#{source}
             </if>
+            <if test="excludeKeys!=null and excludeKeys.size() > 0">
+                and a.id not in
+                <foreach collection="excludeKeys" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
         </where>
         order by a.create_time desc
     </select>

+ 6 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -303,6 +303,12 @@
             WHEN '自动审核' THEN '2'
             ELSE '1' END  = #{params.checkType}
         </if>
+        <if test="excludeKeys != null and excludeKeys.size() > 0">
+            and iac.id not in
+            <foreach item="key" collection="excludeKeys" open="(" separator="," close=")">
+                #{key}
+            </foreach>
+        </if>
         order by iac.createtime desc
     </select>